Avatar billede -brandborg- Nybegynder
15. januar 2004 - 13:07 Der er 9 kommentarer og
3 løsninger

Hjælp til udregning af ohms lov program i C

Skal have dette program til at fungere som en demo så det kun kan køres 3x... Og så skal det lukke af sig selv...
Det skulle også være meningen at man kan fjerne demo ristriktionerne ved at ændre #define DEMO til en comment ved at sætte to slashes foran...
Syntes ellers selv min kode ser rigtig nok ud... Men kan ikke compile den:

#include <stdio.h>    //Inkluderet for input/output
#include <stdlib.h>    //Inkluderet for brug af Clearscreen
#define DEMO        //Demo Defineres
void main(void)        //Her startes programmet
{
    int i, r, u, spaendning, stroem, modstand, proeve;    //Integer værdier defineres
    char valg, slut;    //Character værdier defineres

    do    //DO_WHILE bruges for at kunne aktivere programmet igen efter udførelse
   
    {
        printf("dette er en demo\n");    //Her gøres brugeren opmærksom på dette er en demo
        printf("I, R eller U beregning?\n");    //Brugeren spørges efter ønsket funktion/udregning
        scanf("%s", &valg);    //Her gemmes bruger input'et

        switch(valg)    //Bruges til at definere de forskellige valg muligheder

        {
        case 'u': printf("Find U (U = I * R)\n");    //Her udregnes Spændingen
        printf("Indtast I\n");
        scanf("%i", &i);
        printf("Indtast R\n");
        scanf("%i", &r);
        spaendning = i * r;
        printf("U(Sp\x91nding) er %i * %i = %i\n",i,r,spaendning);
        break;
   
        case 'i': printf("Find I (I = U / R )\n");    //Her udregnes Strømmen
        printf("Indtast U\n");
        scanf("%i", &u);
        printf("Indtast R\n");
        scanf("%i", &r);
        stroem = u / r;
        printf("I(Str\x9bm) er %i / %i = %i\n",u,r,stroem);
        break;
   
        case 'r': printf("Find R (R = U / I)\n");    //Her udregnes Modstanden
        printf("Indtast U\n");
        scanf("%i", &u);
        printf("Indtast I\n");
        scanf("%i", &i);
        modstand = u / i;
        printf("R(Modstand) er %i / %i = %i\n",u,i,modstand);
        break;
   
        default : printf("Der er ikke foretaget et valg\n");
        }
        printf("Vil du afslutte? (J/N)\n");    //Brugeren bliver spurgt om denne ønsker at afslutte
        scanf("%s", &slut);    //Brugerens svar bliver gemt
        system("cls");    //Skærmen cleares
    }
    proeve = proeve + 1;
    while(slut == 'n' || proeve < 3 );    //Hvis brugeren ikke vil slutte starter programmet forfra, ellers fortsætter det
    printf("Farvel\n");    //Her siges der farvel til brugeren
}

Jeg får denne fejl af min compiler:
"C:\c-projekter\Ohms Lov\ohm.c(52) : error C2061: syntax error : identifier 'proeve'
Error executing cl.exe."

Alt hjælp vil bliver gladeligt modtaget
Avatar billede arne_v Ekspert
15. januar 2004 - 13:22 #1
proeve = proeve + 1;

skal enten ovenover }
eller nedenunder while

du kan ikke have en statement der.
Avatar billede -brandborg- Nybegynder
15. januar 2004 - 13:32 #2
Har jeg lige prøvet... Og det er også fint nok... Men det nytter jo ikke noget at sætte den ind før } da den så bare tæller hvor mange gange programmet køre...
Så bliver det sidste i denne (while(slut == 'n' || proeve < 3 );) sætning jo nytteløst... Er jo kun meningen programmet må køre 3x... Så skal det slutte uanset om brugeren vælger ja eller nej til afslut...
Avatar billede akany_ Nybegynder
15. januar 2004 - 13:36 #3
Lige en bibemærkning der ikke altid men burde resultere i en compile-fejl. void main(void) er og bliver aldrig legalt C!!

  int main
{

  return 0;
}

Er den rigtige måde at gøre det på
Avatar billede -brandborg- Nybegynder
15. januar 2004 - 13:41 #4
Ja... Ved godt det er den "helt" rigtige måde at gøre det på... Men det her er et led i en skoleopgave som jeg sidder lidt fast i...
Og der har vi specifikt fået at vide at vi skulle bruge denne fremgangsmåde.
Så er i lidt problemer her...
Avatar billede akany_ Nybegynder
15. januar 2004 - 13:43 #5
Din do while skal se sådanher ud i stedet:
do{

}while((slut'n')&&(proeve<3));
Avatar billede akany_ Nybegynder
15. januar 2004 - 13:46 #6
med || mener du jo eller altså den kører sø længe slut den ikke er n eller proeve ikke er 3. Bare en af dem er opfyldt vil den køre.

med && mener jeg og. Her skal begge 2 være i orden for at den kører.
Avatar billede akany_ Nybegynder
15. januar 2004 - 13:48 #7
og så som arne siger skal proeve = proeve+1; sættes ind så du får detteher:

do{
anden kode...

proeve=proeve+1;
}while((slut=='n')&&(proeve<3));
Avatar billede -brandborg- Nybegynder
15. januar 2004 - 14:02 #8
akany>>
Ja... Forstår godt hvor du vil hen...
Og syntes også det hele ser rigtigt ud...
Problemet er bare at der må være en fejl i min løkke... For selvom jeg har kørt programmet 3x og vælger j(for at køre det igen) så får jeg lov til det istedet for det lukker ned som det skulle...
Avatar billede akany_ Nybegynder
15. januar 2004 - 14:18 #9
Du har glemt at tildele prøve en værdi. Skriv proeve = 0; før din do-while løkke
Avatar billede akany_ Nybegynder
15. januar 2004 - 14:41 #10
Giver det et bedre resultat?
Avatar billede akany_ Nybegynder
15. januar 2004 - 14:42 #11
Undskyl havde ikke lagt mærke til du har accepteret. Ikke min mening at spamme :)
Avatar billede -brandborg- Nybegynder
15. januar 2004 - 14:51 #12
Hehe... Det er fair nok... Ja... Mig som der har været lidt af et fjols... Min lære kom lige kort ind i hans pause(han er på kursus)...
Han fik jo lige forklaret at jeg skulle huske der ikke måtte være tomme linier imellem løkker og start-sætning tegn...
+Jeg var kommet til at placere min proeve tæller inde i min switch løkke... Hvilket også gav et lidt uheldigt resultat :)
Men takker mange gange for hjælpen... Det har været lærerigt for mig...
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