Milyen operátorokkal tudok tömböt készíteni a felhasználó által megadott adatokból C++-ban?
Az input 365 sorból áll. A lényeg az, hogy meg kell adni, hogy hány darab névnapja van X névnek illetve, hanyadik napon van.
Például ha a User inputja az, hogy "Szilveszter", akkor az output "1 365"
Az inputnak a másik része is manuális (mármint nem magában a kódban deklarált), hogy először megad egy integer értéket, hogy hány nap van és a neveket, hogy kinek mikor van a névnapja. Két nap sortöréssel van elválasztva, leszámítva az elsőt, mert ott: "365-szóköz-Anna".
Nem tudok minden adatra charként tekinteni, mert egy nap lehet több embernek is névnapja. Azok vesszővel vannak elválasztva.
Hogyan tudok tehát ezekből a karaktersorozatokból olyan karaktertömböt csinálni, hogy a kód a vesszőt felismerje és egy tömb (pl a 155. nap tömbjét) különböző tagjaiként válassza szét a neveket.
Jelenleg a kód ott tart, hogy nem jut el a beolvasásig sem. Egy név inputot tudok neki adni és a napok számát. Mutatom: [link]
Igen, tudom: Kezdő vagyok, hülye vagyok, kíméljetek meg az anyázástól. Kösz.
#include <iostream>
using namespace std;
int main()
{
int z;
char name[z];
char act_name;
int i;
int napokszama;
cerr << "Naptár" << endl;
cerr << "Hány nap lesz?"; cin>>napokszama;
for(int i=0; i<napokszama; ++i){
cerr<<i+1<<".nap:";
cin>>name[i];
}
cerr<< "Melyiket keressük?" << endl;
cin>>act_name;
cout<<act_name<<endl;
return 0;
}
a char name[z] az egy z elemű karaktertömb. Egyetlen sztring tárolására képes.
Használj inkább string tömböt
szóval akkor hogy jól értsem
az input 1 az 1től 365ig egyesével az év napjai, és utána 1 vagy több (0 vagy több?) név, szóközökkel elválasztva, hogy ki(k)nek van azon a napon névnapja.
és a második fele hogy lekérdezel egy adott nevet, és kiírja, hogy mikor van a névnapja(i)
lehetne sokkal szebben is, de most a kezdőségedre figyelemmel leírom a legegyszerűbb módját ahogy én csinálnám
felvennék egy structot, ami egy adott embert reprezentál. ennek két adattagja lesz, egy char tömb mondjuk egy 1024es mérettel, hogy a név biztos beleférjen (SOKKAL egyszerűbb lenne std::stringet használnod), egy integer tömb aminek 365 helyet foglalok, és egy countert, hogy hány elemét használom fel (mégegy megjegyzés, sokkal egyszerűbb és átláthatóbb std::vecorral megoldani ezt)
felvennék ebből a structból megint csak egy tömböt, jó nagy mérettel (általában az ilyeneket meg szokta adni a feladat, hogy mennyi a max különböző név) és ide is egy countert (visszautalnék a vectoros megjegyzésemre) és abba beolvasásnál elkezdem belepakolni az adatokat. megnézem hogy az adott név benne van e a tömbömbe. ha igen, akkor az adott névhez rendelt integer tömbbe beleírom ezt a napszámot (és evidens, hogy a counterét is növelem), ha nem, akkor a tömb végére írom bele a nevet az adott napszámmal.
és amikor a user input második részénél lekérdezik a nevet, csak kiírom a tömb tartalmát (...counterig)
de tényleg nézz utána a std::stringnek és std::vectornak (akár még a setnek/mapnek is), sokat fognak segíteni a kód olvashatóságán.
és még egy pár észrevétel: a loopon kívül felesleges felvenni az i-t, azt csak újradeklarálod loopon belül. és cerr-el se írass így ki semmit, az kifejezetten az error üzenetekre van.
ha esetleg még így se menne akkor összedobom neked ha kell :)
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!