problmer i koden 3 liner skal kan jeg få lidt hjælp
#include <stdio.h> #include <stdlib.h>
int main(int argc, char *argv[]) { double hojde; //Her deklarerer vi variablen for højden, vi bruger double for at kunne operere med decimaler double vagt; //Her deklarerer vi variablen for vægt double bmi; //Her deklarerer vi variablen for bmi, som vi bruger til at regne det endelige resultat ud.
printf("indtast din vagt:"); //skriver til brugeren at vægten skal indtastes scanf("%lf",&vagt); //Tager brugerens input og putter det ind i den respektive variabel.
printf("indtast din hojde:"); //skriver til brugeren at vægten skal indtastes scanf("%lf",&hojde); //Tager brugerens input og putter det ind i den respektive variabel.
hojde = hojde * hojde; // Her regner vi BMI'en ud vagt = vagt * 10000;
bmi = vagt / hojde;
printf("Din BMI er: %lf\n", bmi); //Her udskrives BMI'en til brugeren
valg: /* her går programmet hen hvis man vælger forkert */ printf("\n\ntryk 1 for at lukke, tryk 2 for at starte forfra"); scanf("%d", &valg);
switch (valg) { /* switch har næsten samme funktion som if*/ case 2: /* hvis brugeren trykker 2 */ goto start; /* går hen til start: */ break; /*afslutter case'en */ case 1: /*hvis brugeren trykker 1 */ printf("tak fordi du brugte mit program"); break; default: /* hvis brugeren trykker hverken 1 eller 2 */ printf("du skal trykke enten 1 eller 2"); goto valg; /*starter valget forfra så brugeren kan vælge 1 eller 2*/ break; } return 0; }
FELJEN ------- In function `int main(int, char**)': 27 `valg' undeclared (first use this function) (Each undeclared identifier is reported only once for each function it appears in.) 29 label `start' used but not defined
C:\PROGRA~1\ZILOG\ZDSII_~1.1\SAMPLES\MAIN.C (25,19) : ERROR (128) Identifier "valg" not defined within current scope
Dette betyder at variablen valg ikke er defineret inden for "arbejdsområdet." og som erikjacobsen siger så har du ikke deklereret denne variabel, du skal derfor i starten af main (variable skal altid deklereres i starten af en blok) skrive int valg;
Herefter compiler du igen og får den næste fejl: C:\PROGRA~1\ZILOG\ZDSII_~1.1\SAMPLES\MAIN.C (42) : ERROR (131) Label "start" not declared
Denne fejl kommer fordi du i din case sætning har funktionen: goto start; /* går hen til start: */
og præcis som i det første tilfælde skal du vise hvor den skal starte fra dette gøres med en label start:
jeg vil anbefale ikke at have både en variabel der hedder valg og en label der hedder valg af god kodeskik, derfor har jeg ændret label værdien til valgmuligheder, derfra kommer den endelige kode:
#include <stdio.h> #include <stdlib.h>
int main(int argc, char *argv[]) { double hojde; //Her deklarerer vi variablen for højden, vi bruger double for at kunne operere med decimaler double vagt; //Her deklarerer vi variablen for vægt double bmi; //Her deklarerer vi variablen for bmi, som vi bruger til at regne det endelige resultat ud. int valg; //Variablen hvori værdien af valget ilægges
start: printf("indtast din vagt:"); //skriver til brugeren at vægten skal indtastes scanf("%lf",&vagt); //Tager brugerens input og putter det ind i den respektive variabel.
printf("indtast din hojde:"); //skriver til brugeren at vægten skal indtastes scanf("%lf",&hojde); //Tager brugerens input og putter det ind i den respektive variabel.
hojde = hojde * hojde; // Her regner vi BMI'en ud vagt = vagt * 10000;
bmi = vagt / hojde;
printf("Din BMI er: %lf\n", bmi); //Her udskrives BMI'en til brugeren
valgmulighed: /* her går programmet hen hvis man vælger forkert */ printf("\n\ntryk 1 for at lukke, tryk 2 for at starte forfra"); scanf("%d", &valg);
switch (valg) { /* switch har næsten samme funktion som if*/ case 2: /* hvis brugeren trykker 2 */ goto start; /* går hen til start: */ break; /*afslutter case'en */ case 1: /*hvis brugeren trykker 1 */ printf("tak fordi du brugte mit program"); break; default: /* hvis brugeren trykker hverken 1 eller 2 */ printf("du skal trykke enten 1 eller 2"); goto valgmulighed; /*starter valget forfra så brugeren kan vælge 1 eller 2*/ break; } return 0; }
Men gør dig den tjeneste at bruge kommentarene til at rette i koden så lærer du det til en anden gang.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.