A következő C++-kódban lenne pár kérdésem? (A feladat leírása és az általam írt kód a lent van. ) A beolvasás 2. részében mi a hiba? És a lényegi résznben mi a hiba?
(A feladatot CodeBlocksban írom)
Feladat: Leírás:
Egy iskola tanárairól tudjuk, hogy mikor milyen órát tartanak. A tanárokat, a tantárgyakat, a hét napjait, a napokon belüli órákat sorszámukkal azonosítjuk. Készíts programot, amely megadja minden napra az aznap órát tartó tanárok számát! Bemenet A standard bemenet első sorában az órák száma (1O1000), a tanárok száma a tantárgyak száma (1M100), egy tanár sorszáma (1TN) és egy nap sorszáma van (1H5), egy-egy szóközzel elválasztva. A következő sorok mindegyikében 4 egész szám van, egy-egy szóközzel elválasztva: tanár sorszám (1TSN), tanított tantárgy sorszáma (1TTSM), nap (1Nap5), óra (0Óra8). Például 3 7 2 0 azt jelenti, hogy a harmadik tanár a hetedik tantárgyat a hét második napján a nulladik órában tanítja. Kimenet A standard kimenet első sorába meg kell adni, minden napra az aznap órát tartó tanárok számát!
Bemenet:
8 3 4 1 1
1 1 1 6
1 1 2 2
1 2 1 3
2 1 2 2
2 2 3 1
3 4 1 2
3 2 1 4
3 3 2 1
Kimenet:
2 3 1 0 0
#include <iostream>
using namespace std;
int main()
{
// Beolvasás
int o; // órák száma órák száma (1<=O<=1000
int n; // tanárok száma (1<=N<=100)
int m;// tantárgyak száma (1<=M<=100),
int t;// tanár sorszáma (1<=T<=N
int h; // egy nap sorszáma van (1<=H<=5)
setlocale(LC_ALL,"hun");
cout << "Hány óra van? (órák száma)" << endl;
cin >> o;
cout << " tanárok száma " << endl;
cin >> n;
cout << " tantárgyak száma " << endl;
cin >> m;
cout << " Egy tanár sorszáma " << endl;
cin >> t;
cout << " Egy nap sorszáma " << endl;
cin >> h;
cout << o << " " << n << " " << m << " " << " " << t << " " << h << endl;
int i;
int ts[i] ; // tanár sorszám (1<=TS<=N
int tts[i]; // tanított tantárgy sorszáma 1<=TS<=M
int nap[i];// nap
int ora[i];// ora
// INNENTŐL NEM MEGY Az oszlopos beolvasás
cout << "\n 2. sor beolvasása: \nTanár sorszám " << endl;
for (int i=1;i<20;i++)
{
cin >> ts[i];
}
cout << " Tanított tantárgy sorszáma " << endl;
for (int i=1;i<20;i++)
{
cin >> tts[i];
}
cout << " NAP " << endl;
for (int i=1;i<20;i++)
{
cin >> nap[i];
}
cout << " ora " << endl;
for (int i=1;i<20;i++)
{
cin >> ora[i];
}
for (int i=1;i<20;i++)
{
cout <<"A "<< ts[i] << ". tanár, a " << tts[i] << " tantárgyat, " << nap[i] << "napon, " << " " << ora[i] << " órában tartja. " << endl;
// lényegi rész:
Programozási tételek – Megszámolás
új tömbbel ?
int oratt[i]; // órát tartó tanárok száma
if (
nap[i]!=nap[i]
)
oratt[i]=oratt[i]+1;
}
return 0;
}
vagy if)(nap[i]!=nap[i])
(i++)
;
A segítséget előre is köszönöm!
Oké, de azért tegyük hozzá, hogy ez még nem 2D-tömb, hanem voltaképpen 4 db egydimenziós tömb. A valódi kétdimenziós tömb valahogy így néz ki (nem hozol létre külön-külön nevű tömböket, hanem a nagy tömb minden bejegyzése egy-egy kisebb tömbből áll, amelyeket szintén számokkal indexelsz):
Ezek után nem túl bonyolult az #1 által javasolt struct-változat sem. Létrehozol egy újfajta adatszerkezetet (nálam egysor a neve), amely négy darab változóból áll, és a tömbödet ebből az új típusból készíted el. Így minden tömbelemnek lesz négy ugyanígy elnevezett tagja, amelyekre a neve szerint hivatkozhatsz:
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!