View Single Post
Sitat av ClockWorx Vis innlegg
Ok, klarte å få det til slikleis:

Kode

void Topp::lesData(char nvn[]) {      
	Topp nvnn;
	char moh1[] = "Meter over havet?";
	char hoyde1[] = "Hoyde fra start?";
	char lengde1[] = "lengde fra start?";

	strcpy(nvnn.navn, nvn);
	nvnn.moh = les(moh1, 0, 8848);
	nvnn.hoyde = les(hoyde1, 0, 8848);
	nvnn.lengde = les(lengde1, 0, 50);
}
Og med denne

Kode

void nyTopp() {            //  Legger inn en ny topp:
	char toppNavn[STRLEN];
	if (sisteTopp < MAXTOPPER) {         //  Plass til flere:

		cout << "skriv ny toppnavn: ";
		cin >> toppNavn;

		if (finnTopp(toppNavn) == 0) {
			
			toppene[++sisteTopp].lesData(toppNavn);
		}
		else 
		{
			cout << "Den toppen eksisterer allerede.";
		}
	}
	else {
		cout << "\n\n\tFullt med topper i datastrukturen! \n\n";
	}	
}
Nå lurer jeg på følgende oppgave:


Det jeg sliter med er å finne ut av hvor mange topper etappen går innom og hvordan jeg skal gjengi dette. Tenkte først noe alla dette:

Kode

	for (int i = 0; i < (sizeof(toppene) / sizeof(toppene[0])); i++) {
		char etappeTopp[STRLEN];
		cout << "\nTopper som inngår i etappen, nr " << i + 1 << ": ";
		cin >> etappeTopp;
		finnTopp(toppene[i].navn);
	}
men det fungerer jo ikke da, den vil fortsette å spørre helt til alle toppene er gjennomgått, og alle toppene er jo ikke på alle etappene.

Dette er forøvrig hele funksjonen jeg har så langt:

Kode

void Etappe::lesData() {               
	Etappe nyEtappe;
	const char start[STRLEN] = "Startsted?";
	const char slutt[STRLEN] = "Sluttsted?";
	const char lengde1[STRLEN] = "Lengde i km?";
	const int lengden = STRLEN;
	char startSvar[STRLEN];
	char sluttSvar[STRLEN];
	
	les(start, startSvar, lengden);
	les(slutt, sluttSvar, lengden);

	for (int i = 0; i < (sizeof(toppene) / sizeof(toppene[0])); i++) {
		char etappeTopp[STRLEN];
		cout << "\nTopper som inngår i etappen, nr " << i + 1 << ": ";
		cin >> etappeTopp;
		finnTopp(toppene[i].navn);
	}

	strcpy(nyEtappe.startsted, startSvar);
	strcpy(nyEtappe.sluttsted, sluttSvar);
	nyEtappe.lengde = les(lengde1, 0, 50);
	nyEtappe.antTopper = 
}
Vis hele sitatet...
Tror du må poste en oppdatert kode her eller på pastebin, for det er ganske opplagt at du behøver hjelp med å rydde opp i den og organisere koden. Hele poenget med OOP eller programmering generelt er å gjenbruke kode, jo mer kode man kan gjenbruke, jo bedre. Også er det viktig å avgjøre variabler scopen slik at man unngår å deklarere for mange unødvendig variabler, men samtidig passe på at variabler ikke lever lengere enn nødvendig.
Sist endret av 0xFF; 15. november 2017 kl. 18:14.