> konjski dirki. O vsakem konju imamo podano ime, sifro
> jahalca, disciplino v kateri tekmuje in stevilko steze.
> Za vsakega jahalca je podano ime in priimek, spol,
> starost, visina, teza,...Program naj sortira konje po

Tukaj bi zelo pomagalo, ce bi razlozil, kaksnega tipa naj bi bili
podatki. Jaz nimam pojma o tvojih konjih, mapak se mi zdi, da je
uporabiti tip float za disciplino .. milo receno, smesno :) V bistvu
array floatov .. isto za stezo, kar pac je to. Verjetno ne obstaja steza
4/3 ?

En preblisk .. a ni bi bilo bolj smiselno, ce bi imel strukturo (recimo
tekmovalec ali kaj podobnega, da bo smiselno), v njej pa razdeljeno na
vse te tvoje podatke. Potem bi imel array kazalcev na vsakega tekmovalca
(oz. ce hoces na vsak nacin imet staticne spremenljivke bi imel array
tekmovalcev).

Tudi nekaj drugih spremenljivk se mi zdi malo cudno definiranih (mogoce
pa imajo jahaci vec spolov, kot M in Z ?? ah ja).

>   cout << "Vpisi disciplino konja (Vpisi od 0 do 9): ";//navodilo

Glej hecno stvar, tukaj je pa kar naenkrat disciplina 0 .. 9 :)
 
Ce jaz prav razumem tvoje sortiranje, ti premeces vse discipline in vse
steze po vrsti .. brez vpliva na ostale podatke ?? Primer: imas recimo
tri tekmovalce, za poenostavitev jim recimo A, B in C, tekmujejo v
disciplinah 7 (A), 6 (B) in 5 (C) in na stezah 2 (A), 1 (B) in 3 (C),
vsi ostali podatki so isti za vse tri. Vneses jih po vrsti, od A do C,
tekomovalci: [A, B, C], discipline: [7, 6, 5] in steze: [2, 1, 3].
Indeksi so od 0 .. 2, torej tvoj max_k bi bil dva, ce bi bil program
smiseln.

Neizobrazen clovek kot jaz bi tukaj predpostavil, da te stvari pasejo
skupaj. Torej k tekmovalcu A paseta disciplina 7 in steza 2, k B dis. 6
in steza 1, C dis. 5 in steza 3.

Zdaj jih zacnes sortirat, za indekse od 0 do 1, torej samo za 0 in 1.

>   for (float prehod=0; prehod< max_k; prehod++)//postavitev ustreznega
> pogoja
>    for (d=0; d<max_k; d++)//postavitev ustreznega pogoja
>     if (dis_k[d]<dis_k[d+1])//postavitev ustreznega pogoja
>     {
>      //DISCIPLINA
>      //zamenjava vrednosti padajoce po metodi mehurckov
>      vmestni=dis_k[d];
>      dis_k[d]=dis_k[d+1];
>      dis_k[d+1]=vmestni;

Za d=0 ne naredis nic (7 > 6), za d=1 tudi ne (6 > 5), to velja za vse
prehode (0 in 1). Ostane ti [7, 6, 5].
 
>      //STEZA
>      if (steza_k[d]<steza_k[d+1])
>      {
>       vmestni=steza_k[d];
>       steza_k[d]=steza_k[d+1];
>       steza_k[d+1]=vmestni;

Prvi prehod, za d=0 (2 > 1) ne naredis nic, za d=1 (1 < 3) zamenjas in
dobis [2, 3, 1]. V drugem prehodu za d=0 (2 < 3) zamenjas, dobis [3, 2,
1], za d=1 (2 > 1) ne naredis nic. Imas [3, 2, 1].

Zdaj pa za vse elemente ..

>  for (int q=0; q<max_k; q++)
>  {
>   //zacetek sekvence za prekinitev izpisa
>   if (ime_k[q][0]=='*')//postavitev ustreznega pogoja

.. ce imajo vpisano ime .. 

>    break;//ce je pogoj v glavi resnicen se izvajanje zanke prekine
>   //konec sekvence za prekinitev izpisa
> 
>   cout << "Ime konja: " << ime_k[q] <<
>   endl << "Disciplina: "<< dis_k[q] <<
>   endl << "Tekmovalna steza: " << steza_k[q] <<
>   endl << endl;
>  }

.. napise eno bedarijo, ki bi izgledala priblizno takole (skrajsano):
(A, 7, 3), (B, 6, 2) in (C, 5, 1). To kar nekako no tisto, kar pise
zgoraj ? A je to res namen tvojega programa ??
 
Zdaj, ko sem vse to napisal bom pa se nekaj: lepo, da se hoces naucit
programirat. Verjetno je vsak zacel z necim podobnim .. slabo
zamisljenim, itd. Moj nasvet zate je, da si dobi kaksno knjigo o
programiranju (za katerikoli jezik, samo da pozna strukture, pascal je
kar dober za zacet, povrh vsega pa imas zastonj - GPLed- Borland
kompatibilen pascal compiler za Linux ze nekaj casa na voljo .. vkljucno
z IDEjem). Ob branju literature malo pomisli, kaksne podatkovne tipe ima
smisel uporabljat za dolocen tip podatka (za vsako spremenljivko ves, od
kje do kje lahko gre in kaksen tip podatka opisuje zato izberi primeren
podatkovni tip), kako je bolj pametno zdruzevati spremenljivke s
katerimi je bistveno bolj pregledno delati in pustiti compilerju, naj se
sam ubada z njihovim prekladanjem, itd. Pol bo tudi vec programov
razumljivih in delujocih :-)))

Druga varianta je, da tole dokoncas, ko bos napisal kaksen drug program
bos videl, kako .. slabo je tole napisano in se bos tolkel po glavi,
zakaj nisi raje prebral kaksne bukve (in tako pametneje pokuril cas), 
potem pa bos vso stvar napisal znova (itak). Anglezi bi rekli, take it
from me, i've been there :-))))

BTW: vprasanje za ostale (ker nimam prevec pojma o sortirnih
algoritmih), tisti zgoraj bo rabil N^2 prehodov (pri N podatkih). A mi
lahko kaksen FRIjevec pove, koliko prehodov bi naredil, ce bi v i-tem
prehodu od spodnje meje do zgornje meje (i .. max_k) poiskal
najnizjo/najvisjo vrednost in jo zamenjal s i-to ter sel na naslednji i
?? En tak banalen popravek .. Nekako se mi zdi, da pol manj (ja ?),
nisem pa 100% preprican. Tale ekonomija mi unicuje mozgane .. :->

Blaz Antonic


Reply via email to