View Single Post
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:

Lag funksjonen void Etappe::lesData()
Funksjonen, som kalles av den ferdiglagde nyEtappe(), leser inn alle etappens data, inkludert
alle toppene den går innom. Husk at en topp angis kun vha. dets indeks i toppene. Bruk aktivt
ulike les(). Vi forutsetter at enhver etappes antTopper er mindre eller lik sisteTopp. Du
slipper å sjekke at brukeren skriver samme toppnummer flere ganger, at en og samme topp også
inngår på et urimelig antall andre etapper eller at to etapper faktisk blir helt identiske.
Vis hele sitatet...
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 = 
}
Sist endret av ClockWorx; 15. november 2017 kl. 12:17. Grunn: Automatisk sammenslåing med etterfølgende innlegg.