Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++ ongelma

Testaaja [30.10.2004 14:14:12]

#

Tässä pätkä mun ohjelmaa.

char temp2[30];
strcpy(temp2, taulu[i].nimi);
strcpy(taulu[i].nimi, taulu[j].nimi);
strcpy(taulu[j].nimi, temp2);

Miksiköhän näissä kohissa tulee tällaisia erroreita?
error C2228: left of '.nimi' must have class/struct/union type

petterik [30.10.2004 14:27:57]

#

Näytäpä sen taulun määrittelyt.

Tuossa käytät ainakin nimi kenttää kahdella tavalla. Ensimmäisessä se on taulu muuttujan kenttä (taulu.nimi), toisessa se on taulu muuttujan j:nnen alkion kenttä(taulu[j].nimi).

uskoisin että taulu.nimi on väärin.

Testaaja [30.10.2004 14:58:01]

#

Eli tehtävässä kysytään 5 nimeä ja 5 ikää.

Sitte ne talletetaan ne tietueeseen.

struct TIEDOT
{ char nimi[10];
int ika; };
TIEDOT a[5]

Sitte ne järjestetään iän mukaan pienimmästä suurimpaan ja tulostetaan näytölle.

const int MAX = 5;
int taulu[MAX] = {a[0].ika, a[1].ika, a[2].ika, a[3].ika, a[4].ika};
int i,j;
cout << "Alkuperaiset tiedot:" << endl;
for (i = 0; i < MAX; i++)
{ cout << taulu[i] << "    "; }
	cout << endl;
	cout << "Järjestelaan tiedot ...." << endl;
	for (i = 0; i < (MAX-1); i++)
	{
		for (j = i+1; j < MAX; j++)
		if (taulu[i] > taulu[j])
		{int temp = taulu[i];
		taulu[i] = taulu[j];
		taulu[j] = temp;
		char temp2[30];
		strcpy(temp2, taulu[i].nimi);
		strcpy(taulu[i].nimi, taulu[j].nimi);
		strcpy(taulu[j].nimi, temp2); }
	}
	cout << "Jarjestety tiedot:" << endl;
	for (i = 0; i < MAX; i++)
	{ cout << taulu[i] << "    "; }
	cout << endl;
return 0;
}

Ongelma on se, että en saa tulostettua nimiä ikien perään. Ilmeisesti sen saa tehtyä tuolla strcpyllä, mutta siinä on vielä jotain vikaa.

Metabolix [30.10.2004 15:09:19]

#

Käytä hyvä ihminen kooditagia. Tuosta koodista ei saa mitään tolkkua, kun [i] muuttuu kursivointitagiksi. Ohjeet löytyvät keskustelun ohjeista.

Ja jos määrittely on int taulu[MAX], niin ei siitä silloin mitään nimiominaisuutta löydy. Keksi siis joku muu toteutus. Jos tuo on koulutehtävä, niin en auta, ja siltä se pahasti vaikuttaa, kun on niin monta muutakin tehtävientekijää ollut taas liikkeellä.

petterik [30.10.2004 15:25:06]

#

Testaaja kirjoitti:

Ongelma on se, että en saa tulostettua nimiä ikien perään.

strcpy(a,b) kopioi kai a:n perään b:n eli missäs kopioit ikää nimen perään (tai nimeä iän perään)?

Mutta jos ika on int tyyppinen, niin eihän sitä voi kopioida merkkijonona? Tai siis käytät jotain temp muuttujaa?
Tai miksi et senkun tulosta

cout << taulu[i].ika <<

tms.

Sorry en ole c-osaaja enkä varsinkaan c++ osaaja. Antaa muiden neuvoa...Ja mieluummin koko koodi vaikka omalle kotisivulle ja linkki sinne tms. Ei huvita alkaa rakentelemaan ohjelmaa pätkistä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta