14 svar
325 visningar
HiMate123 352
Postad: 3 okt 2021 23:34 Redigerad: 3 okt 2021 23:41

skapa Meny

 

Ett program kommer att skapas för att användas av ägaren av en frisbeegolfpark. Det är det redan
byggt två banor, men ägaren kommer att ha möjlighet att lägga till nya banorna så snart de är byggda.
Detta innebär att två banor, med all sin data, matas in i koden i början av programmet
("Hardcodes").
Tips: använd strcpy () för att ange banorBeskrivning [0] och [1]

Programmet måste innehålla:
const int MAXBANOR = 18;          /// <Max antal kurser.
const int STRLEN = 100;              /// <Max textlängd.

och inuti main:
char laneDescription [MAXBANER] [STRLEN]; // Beskrivning av kurserna.
Int laneLength [MAXBANER]; // Längden på banor (i meter).
int banePar [MAXBANER]; // Förväntat antal kast (par)
// för varje spår.
bool baneOB [MAXBANER]; // Har sökvägarna OB eller inte

int numberPaths; // Antal kurser per år.
Det är förmodligen en bra idé att använda några fler hjälpvariabler för att läsa in värden/ val från användaren

 

Jag skal prova att laga en meny vart man har 3 val. 

L - Lägg till spår
S - Se alla banor
Q - Avsluta

Hur börjar jag med att skapa et program som gör så att om man tex väljer L, så får man möjlighet att lägga till input på frågor. 

Tex. om man väljer L, så kommer dessa alt. upp: 

Hur lång är den tredje banan: ___
Par på banan(2-8): ___
Har sökvägen OB (J / N): __
Kursbeskrivning: _____

eller om man väljer S, så kommer alla info om BANA 1 och BANA 2 upp (som har själv lagd till i början?


Laguna Online 28443
Postad: 3 okt 2021 23:53

Vet du hur man läser in en textrad från användaren, hur man skriver ut en rad, hur man skriver ett huvudprogram, hur man skriver en loop?

HiMate123 352
Postad: 4 okt 2021 13:57

Ja, har typ börjad lite, men vet det inte är helt korrekt pga jag inte riktig vet exakt vad jag måste göra

  menu = 0
    while menu
    printf("Menyval: ");
    printf("\n\tL - Legg till bana");
    printf("\n\tS - Se alla banor);
    printf("\n\tQ - Avsluta);
    scanf("%c", val);
    printf("Val: %c", val)

    int index = L;
    while(index=1){

    printf("Hur många meter er den 3.banan?: ");
    scanf("%i", &bananLengd);

    printf("\nPar på banan(2-8): ");
    scanf("%i", &banorPar);

    printf("\nHar banen OB (J/N): ");
    scanf("%c", &baneOB);

    getchar();
    printf("\nBanan beskrivelse");
    gets("%s", banaBeskrivning);
    }
HiMate123 352
Postad: 4 okt 2021 13:58

har så klart det inuti en 

int main() {


return 0;
}
HiMate123 352
Postad: 4 okt 2021 14:01

Jag funderar på om man kan använda switch, men vet inte riktg hur jag då får tex dom alternativ om skrivar in L, och sen input 

Laguna Online 28443
Postad: 4 okt 2021 15:28

switch är bra för att välja rätt kod utgående från 'val'.

Någon while(index) behöver du inte.

Om du vill använda gets så är det bara gets(banaBeskrivning). Hur är den deklarerad?

Kan du kompilera programmet?

HiMate123 352
Postad: 4 okt 2021 16:49

Frågan er nu, om man väljer "Lägg till bana". 
1) Hur gör jag så att dom frågarna kommar upp då? (dom jag har skrivet under) 
2) Gör så att om man skriver nått annat en L, S, Q, så kommer en fel meddelande upp

int main() {

 printf("Menyval: ");
    printf("\n\tL - Lägg till bana");
    printf("\n\tS - Se alla banor);
    printf("\n\tQ - Avsluta);
    scanf("%c", val);
    printf("Val: %c", val)



    printf("Hur många meter er den 3.banan?: ");
    scanf("%i", &bananLengd);

    printf("\nPar på banan(2-8): ");
    scanf("%i", &banorPar);

    printf("\nHar banen OB (J/N): ");
    scanf("%c", &baneOB);

    getchar();
    printf("\nBanan beskrivelse");
    gets("%s", banaBeskrivning);
    }

return 0;
}
HiMate123 352
Postad: 4 okt 2021 16:53 Redigerad: 4 okt 2021 16:53

så i början skrivar jag 

char banaBeskrivning[MAXBANOR][STRLEN];

Sen, skrivar jag för att få input? 

  gets("%s", banaBeskrivning);

eller

  gets(banaBeskrivning);
Laguna Online 28443
Postad: 4 okt 2021 17:00

Den deklarationen antyder att du har ett bannummer för varje bana, 0, 1, etc. så att bana 0 t.ex. har banaBeskrivning[0]. Du får ha nån variabel som anger bannumret.

HiMate123 352
Postad: 4 okt 2021 17:19

Så blir det såhär då? 

int main() {


char banaBeskrivning[MAXBANOR][STRLEN];

printf("\nBana beskrivning");
gets(banaBeskrivning[0]);


return 0;

}
HiMate123 352
Postad: 4 okt 2021 17:21

men frågan är också hur jag "linkar" dom ihop.

Alltså, om du tex skriver in L, så kommer dom frågarna up

Laguna Online 28443
Postad: 4 okt 2021 17:27

Det verkar bäst att skriva pseudokod först för vad programmet ska göra. 

HiMate123 352
Postad: 4 okt 2021 17:58

Blir ungefär såhär. Bana 3 är det användaren som läggar till , men bana 1 och 2 måste jag lägga till själv i början. 

Meny val

L - Lägg till bana
S - Se alla banor
Q - Avsluta

Val: L
Hur många meter er den 3.banan?: 
Par på banan: 
Har banen OB (J/N): 
Banan beskrivning:


Om du väljer S: 

	Bana 1:
 		Längd: 62 meter
		Par: 3
		Med OB
		Beskrivning: bana med många träd och buskar.

	Bana 2:
		Längd: 94 meter
		Par: 3
		Utan OB
		Beskrivning: Platt terräng under hela banan

	Bana 3:
		Längd: 
		Par: 
		Med 
		Beskrivning: 

	Antal banor: 3
	För att hamna i par används 10 kast
HiMate123 352
Postad: 6 okt 2021 10:19
Laguna skrev:

Det verkar bäst att skriva pseudokod först för vad programmet ska göra. 

Nån tips? :/

Laguna Online 28443
Postad: 6 okt 2021 14:07

Pseudokod är en beskrivning med hur programmet ska fungera, strukturerat likadant som den färdiga koden, men med många detaljer borttagna och med mest bara vanliga ord.

 

Det blir ungefär:

 

Så länge 'färdig' inte är sann:

    Läs in användarens menyval.

    Om valet är L:

      Bestäm var informationen för den nya banan ska ligga
      Läs in information om ny bana
      Lägg in informationen för den nya banan

    Om valet är Q:

      Sätt 'färdig' till sann

Du kan välja att skriva kod utifrån detta eller förfina pseudokoden först.

Svara Avbryt
Close