c++,rada
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;
}
#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;
}
- kremso
- Nový používateľ
- Príspevky: 161
- Dátum registrácie: Št 22. Júl, 2004, 14:00
- Bydlisko: Trnava (19)
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;
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
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
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
- kremso
- Nový používateľ
- Príspevky: 161
- Dátum registrácie: Št 22. Júl, 2004, 14:00
- Bydlisko: Trnava (19)
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.Co mam rozumiet pod vetou: POUZI METODU NEW NA VYTVORENIE DYNAMICKEHO POLA ODPOVEDAJUCEHO POCTU STRUKTUR TYPU "skuska"
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
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]
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]
- kremso
- Nový používateľ
- Príspevky: 161
- Dátum registrácie: Št 22. Júl, 2004, 14:00
- Bydlisko: Trnava (19)
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
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?
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?
- kremso
- Nový používateľ
- Príspevky: 161
- Dátum registrácie: Št 22. Júl, 2004, 14:00
- Bydlisko: Trnava (19)
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 ->
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
kremso napísal:Pisem to z brucha, tak to snad bude robit co ma...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;
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;
}
- kremso
- Nový používateľ
- Príspevky: 161
- Dátum registrácie: Št 22. Júl, 2004, 14:00
- Bydlisko: Trnava (19)
Kód: Vybrať všetko
while(j<3) {
i = 0;
while(i<MESIAC)
Leopold Kronecker: Boh vytvoril cele cisla, vsetko ostatne je vytvorom cloveka