Avatar billede kasper112 Nybegynder
07. juni 2007 - 20:17 Der er 6 kommentarer

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
Avatar billede erikjacobsen Ekspert
07. juni 2007 - 20:45 #1
Du har en label der hedder valg, men ingen variabel, der hedder valg. Du har ingen label, der hedder start.
Avatar billede kasper112 Nybegynder
07. juni 2007 - 20:48 #2
Kan du ikke lige prøve srkive det ind fordi er helt væk lige pt
Avatar billede erikjacobsen Ekspert
07. juni 2007 - 20:52 #3
Næh, du må hellere finde dig selv. Du lærer ikke noget af at jeg gør det for dig.
Avatar billede kasper112 Nybegynder
07. juni 2007 - 20:58 #4
Men er ikke sikker på hvad der er helt..
Avatar billede superanden Nybegynder
10. juni 2007 - 14:18 #5
Første fejl fra compileren

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.

Med venlig hilsen
Anders Rohde
Avatar billede superanden Nybegynder
21. september 2007 - 07:49 #6
tid til at lukke.?
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Queue-it ApS

Team Lead Engineering

De Nationale Geologiske Undersøgelser for Danmark og Grønland (GEUS)

IT-systemadministrator søges til GEUS

Capgemini Danmark A/S

Salesforce CTO - Nordics