c++,rada

Sekcia o programovaní, programovacích jazykoch...
Používateľov profilový obrázok
Sato
Nový používateľ
Nový používateľ
Príspevky: 121
Dátum registrácie: Ne 03. Apr, 2005, 20:00

Príspevok od používateľa Sato »

No uvidim,mozno sa raz pozriem na Javu.Teraz uz nechcem prestavat s ceckom.
Používateľov profilový obrázok
kremso
Nový používateľ
Nový používateľ
Príspevky: 161
Dátum registrácie: Št 22. Júl, 2004, 14:00
Bydlisko: Trnava (19)

Príspevok od používateľa kremso »

:D Vsak ta prejde ten optimizmus... :D
Leopold Kronecker: Boh vytvoril cele cisla, vsetko ostatne je vytvorom cloveka
Používateľov profilový obrázok
Sato
Nový používateľ
Nový používateľ
Príspevky: 121
Dátum registrácie: Ne 03. Apr, 2005, 20:00

Príspevok od používateľa Sato »

Nieviete niekto,ci sa daju tieto cyklusy spojit do jedneho,alebo treba pre kazdy rok vytvarat novy?

#include<iostream>
using namespace std;
const int MESIAC=12;
int main()
{
cout<<"ZADAJ POCET KNIH PREDANYCH ZA TENTO ROK\n\n";
char * mesiac[MESIAC]={"Januar","Februar","Marec","April","Maj","Jun","Jul","August",
"September","Oktober","November","December"};

int pocet[3][MESIAC];
int i=0;
int j=0;
int t=0;
int spolu1=0;
int spolu2=0;
int spolu3=0;

while(i<MESIAC)
{
cout<<"Zadaj pocet knih predanych za prvy rok v mesiaci "<<mesiac<<endl;
cin>>pocet[1];
spolu1+=pocet[1];
i++;}

cout<<"Za prvy rok sa predalo "<<spolu1<<" knih"<<endl;

while(j<MESIAC)
{
cout<<"Zadaj pocet knih predanych za druhy rok v mesiaci "<<mesiac[j]<<endl;
cin>>pocet[2][j];
spolu2+=pocet[2][j];
j++;}
cout<<"Za druhy rok sa predalo "<<spolu2<<" knih"<<endl;

while(t<MESIAC)
{
cout<<"Zadaj pocet knih predanych za druhy rok v mesiaci "<<mesiac[t]<<endl;
cin>>pocet[3][t];
spolu3+=pocet[3][t];
t++;}
cout<<"Za druhy rok sa predalo "<<spolu3<<" knih\n";
cout<<"Spolu sa predalo "<<spolu1+spolu2+spolu3<<endl;
cin.get();
cin.get();
return 0;
}
Používateľov profilový obrázok
kremso
Nový používateľ
Nový používateľ
Príspevky: 161
Dátum registrácie: Št 22. Júl, 2004, 14:00
Bydlisko: Trnava (19)

Príspevok od používateľa kremso »

Kód: Vybrať všetko

while (i < 3) {
   while (j < MESIAC) {
      cout<<"Zadaj pocet knih predanych za << i <<. rok v mesiaci "<<mesiac[j]<<endl;
      cin >> pocet;
      spolu+=pocet;
      j++;
   }
   cout<<"Za << i <<. rok sa predalo "<<spolu<<" knih"<<endl;
   i++;
} 
cout<<"Spolu sa predalo "<<spolu <<endl;
Pisem to z brucha, tak to snad bude robit co ma...
Naposledy upravil/-a kremso v Ut 11. Apr, 2006, 22:15, upravené celkom 1 krát.
Leopold Kronecker: Boh vytvoril cele cisla, vsetko ostatne je vytvorom cloveka
Používateľov profilový obrázok
Sato
Nový používateľ
Nový používateľ
Príspevky: 121
Dátum registrácie: Ne 03. Apr, 2005, 20:00

Príspevok od používateľa Sato »

Dik,zajtra to vyskusam.Nevies ci sa da vytvorit dynamicka struktura,ktora zodpoveda poctu premennej?

Napriklad ako dynamicke pole:
int skuska;
cout<<"Zadaj pocet"<<endl;
cin>>skuska;
int *ps=new int[skuska];

Co mam rozumiet pod vetou: POUZI METODU NEW NA VYTVORENIE DYNAMICKEHO POLA ODPOVEDAJUCEHO POCTU STRUKTUR TYPU "skuska". Dik
Používateľov profilový obrázok
kremso
Nový používateľ
Nový používateľ
Príspevky: 161
Dátum registrácie: Št 22. Júl, 2004, 14:00
Bydlisko: Trnava (19)

Príspevok od používateľa kremso »

Co mam rozumiet pod vetou: POUZI METODU NEW NA VYTVORENIE DYNAMICKEHO POLA ODPOVEDAJUCEHO POCTU STRUKTUR TYPU "skuska"
Ak vytvaras pole napr. int skuska[5], v pamati sa vyhradi spojite miesto pre 5 premennych typu int. To sa deje pri kompilacii. Ale ked dopredu nepoznas ake velke pole budes potrebovat, mozes alebo alokvat take velke pole, ktoreho velkost neprekrocis, alebo ho alokvat dynamicky, co znaci ze pri kompilacii sa vyhradi v pamati len priestor pre pointer na dane pole ale pole samotne sa alokuje za behu a nasledne sa pointer presmeruje na toto pole.

V tvojom pripade int *ps -> pri kompilacii sa vyhradi miesto pre ps ale az za behu sa vytvori pole s kapacitou "skuska" intov.

DOLEZITE: zvykni si uz teraz, ked sa ucis, kontrolovat, ci sa podarilo pamat alokovat (co sa nie vzdy podari) a hlavne pouzitu pamat hned ako ju prestanes potrebovat uvolni
Leopold Kronecker: Boh vytvoril cele cisla, vsetko ostatne je vytvorom cloveka
Používateľov profilový obrázok
Sato
Nový používateľ
Nový používateľ
Príspevky: 121
Dátum registrácie: Ne 03. Apr, 2005, 20:00

Príspevok od používateľa Sato »

Asi sme sa nepochopili.Toto mi robi problem.
Navrhnite strukturu,ktora bude obsahovat informacie o automobile,ako meno auta a rok vyroby.
struct xxx
{char meno[15];
int rok;} //toto mi je jasne
Program by sa mal spytat,kolko aut ma vlozit do katalogu.Potom by mal program pouzit metodu new na vytvorenie dynamickeho pola odpovedajuceho mnozstvu struktur typu xxx.Dalej by sa mal spytat,aby zadal znacku a info. o roku pre kazdu znacku.
MALO BY TO VYPADAT TAKTO:

Kolko aut si prajete ulozit do katalogu? 2
Auto c. 1:
Zadaj znacku :
Zadaj rok:
Auto c. 2:
Zadaj znacku :
Zadaj rok:

Nechapem akurat tejto vete,co vlastne chce odomna.
POUZI METODU NEW NA VYTVORENIE DYNAMICKEHO POLA ODPOVEDAJUCEHO POCTU STRUKTUR TYPU xxx[quote][/quote]
Používateľov profilový obrázok
kremso
Nový používateľ
Nový používateľ
Príspevky: 161
Dátum registrácie: Št 22. Júl, 2004, 14:00
Bydlisko: Trnava (19)

Príspevok od používateľa kremso »

Ide o problem o ktorom som pisal vyssie. Nepoznas dopredu kolko aut budes do pola vkladat, teda nemozes efektivne toto pole vytvorit za kompilacie. Riesenim je pouzitie dynamickeho pola:

Kód: Vybrať všetko

short nAut = 0;

cout << "Kolko aut chces vlozit?\n";
cin >> nAut;

xxx *ps = new xxx[nAut];
if (ps == NULL) {
    cout << "Malo pamate";
    exit(0);
}

// tvoj kod

delete ps;
Leopold Kronecker: Boh vytvoril cele cisla, vsetko ostatne je vytvorom cloveka
Používateľov profilový obrázok
Sato
Nový používateľ
Nový používateľ
Príspevky: 121
Dátum registrácie: Ne 03. Apr, 2005, 20:00

Príspevok od používateľa Sato »

No jasne,tuto moznost som v knizke nemal.Mal som to len bez [pocet](premennej).Vdaka!!!
Auto *ps = new Auto[pocet];
To znamena,ze v premennej pocet sa skryva pocet struktur,ak sa nemylim.
Skusil som to len takto zatial:

#include <iostream>
using namespace std;
struct Auto
{char znacka[15];
int rok;};

int main()
{
int pocet;
cout<<"Kolko aut si prajete ulozit do katalogu?"<<endl;
cin>>pocet;
cin.get();

Auto *ps = new Auto[pocet];
cout<<"Zadaj znacku:"<<endl;
cin.get(ps->znacka,15);
cout<<ps->znacka<<endl;
delete []ps;
cin.get();
cin.get();
return 0;
}

Ale este mi neni jasne,ako sa k jednotlivym strukturam dostanem,ked cin.get(ps[1]->znacka,15) nefunguje,alebo len vytvorit funkcny prototyp?
Používateľov profilový obrázok
Sato
Nový používateľ
Nový používateľ
Príspevky: 121
Dátum registrácie: Ne 03. Apr, 2005, 20:00

Príspevok od používateľa Sato »

Uz som na to prisiel,musi sa pouzit . namiesto ->.To fakt v knizke nemam :(

Auto *ps = new Auto[pocet];
cout<<"Zadaj znacku:"<<endl;
cin.get(ps[1].znacka,15).get();
cout<<"zadaj druhu znacku:"<<endl;
cin.get(ps[2].znacka,15);
cout<<ps[1].znacka<<" "<<ps[2].znacka<<endl;

Dik za pomoc!
Používateľov profilový obrázok
kremso
Nový používateľ
Nový používateľ
Príspevky: 161
Dátum registrácie: Št 22. Júl, 2004, 14:00
Bydlisko: Trnava (19)

Príspevok od používateľa kremso »

ps[index].znacka;
vrati to pointer na char(na prvy char retazca)

v tvojom kode ti chyba index (pamatas, ps je pole)

EDIT
operator . pouzivas ked pristupujes priamo k udajom struktory, keby znacka bol pointer, musel by si pouzit ->
Leopold Kronecker: Boh vytvoril cele cisla, vsetko ostatne je vytvorom cloveka
Používateľov profilový obrázok
Sato
Nový používateľ
Nový používateľ
Príspevky: 121
Dátum registrácie: Ne 03. Apr, 2005, 20:00

Príspevok od používateľa Sato »

este raz dik.
Používateľov profilový obrázok
kremso
Nový používateľ
Nový používateľ
Príspevky: 161
Dátum registrácie: Št 22. Júl, 2004, 14:00
Bydlisko: Trnava (19)

Príspevok od používateľa kremso »

naozaj nemas za co..
Leopold Kronecker: Boh vytvoril cele cisla, vsetko ostatne je vytvorom cloveka
Používateľov profilový obrázok
Sato
Nový používateľ
Nový používateľ
Príspevky: 121
Dátum registrácie: Ne 03. Apr, 2005, 20:00

Príspevok od používateľa Sato »

kremso napísal:

Kód: Vybrať všetko

while (i < 3) {
   while (j < MESIAC) {
      cout<<"Zadaj pocet knih predanych za << i <<. rok v mesiaci "<<mesiac[j]<<endl;
      cin >> pocet;
      spolu+=pocet;
      j++;
   }
   cout<<"Za << i <<. rok sa predalo "<<spolu<<" knih"<<endl;
   i++;
} 
cout<<"Spolu sa predalo "<<spolu <<endl;
Pisem to z brucha, tak to snad bude robit co ma...

Ak by si mal cas,pozri sa mi este prosim ta na toto.Nechcu sa vobec prepinat roky,tak aby isli mesiace od znova.Dik


#include<iostream>
using namespace std;
const int MESIAC=12;
int main()
{
cout<<"ZADAJ POCET KNIH PREDANYCH ZA TENTO ROK\n\n";
char * mesiac[MESIAC]={"Januar","Februar","Marec","April","Maj","Jun","Jul","August",
"September","Oktober","November","December"};

int pocet[3][MESIAC];
int i=0;
int j=0;
int spolu1=0;
int spolu2=0;
int spolu3=0;

while(j<3)
{
while(i<MESIAC)
{
cout<<"Zadaj pocet knih predanych za "<<j<<" rok v mesiaci "<<mesiac<<endl;
cin>>pocet[j];
i++;}
j++;};

cin.get();
cin.get();
return 0;
}
Používateľov profilový obrázok
kremso
Nový používateľ
Nový používateľ
Príspevky: 161
Dátum registrácie: Št 22. Júl, 2004, 14:00
Bydlisko: Trnava (19)

Príspevok od používateľa kremso »

Kód: Vybrať všetko

while(j<3) {
   i = 0; 
   while(i<MESIAC) 
treba to i-cko vynulovat
Leopold Kronecker: Boh vytvoril cele cisla, vsetko ostatne je vytvorom cloveka

Návrat na "Programovanie"