kann mir wer helfen? bitte brauche das für die schule



  • "hello world" lol ja kann mir bitte jemand helfen bin PRog anfänger und brauche hilfe deshalb versuch ichs mal in einen forum!
    danke im voraus
    kann mir jemand den code ändern danke

    die Angabe

    Bitte schreibe mir nochmals den Sourcecode in das unten angegebene Beispiel für
    die Abfrage dass das eingelesene nur in Zahlen kommen kann und nicht die
    Buchstabeneingabe erlaubt ist.

    Vorkommen dürfen Werte von 0,1 bis 1.000

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    void main ()
    {
    float u,i,r;
    printf( "Spannungsberechnung - Ohmsches Gesetz \n\n\n");

    printf("Wiederstand in Ohm:");
    scanf("%f",&r);
    while (r==0)
    {
    printf("\n\nAchtung Kurzschluss!!!");
    printf("\n\nWiderstand in Ohm:");
    scanf("%f",&r);

    }

    while(r<0)
    {
    printf("Unzulaessiger Wert!!!");
    printf("\n\nWiederstand in Ohm:");
    scanf("%f",&r);
    }

    printf("\n\nStromstaerke in Ampere:");
    scanf("%f",&i);

    while (i<=0)
    {
    printf("\n\nLeerlauf positivern Wert eingeben");
    printf("\n\nStromstaerke in Ampere:");
    scanf("%f",&i);
    }

    while (i<0)
    {
    printf("\n\nUnzulässiger Wert");
    printf("\n\nStromstaerke in Ampere:");
    scanf("%f",&i);
    }

    u=r*i;
    printf("\n\nEs herrscht eine elektrische Spannung von %5.2f Volt\n",u);

    getch();
    }



  • #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    void main ()
    {
    float u,i,r;
    printf( "Spannungsberechnung - Ohmsches Gesetz \n\n\n");
    
    printf("Wiederstand in Ohm:");
    scanf("%f",&r);
    while (r==0)
    {
    printf("\n\nAchtung Kurzschluss!!!");
    printf("\n\nWiderstand in Ohm:");
    scanf("%f",&r);
    
    }
    
    while(r<0)
    {
    printf("Unzulaessiger Wert!!!");
    printf("\n\nWiederstand in Ohm:");
    scanf("%f",&r);
    }
    
    printf("\n\nStromstaerke in Ampere:");
    scanf("%f",&i);
    
    while (i<=0)
    {
    printf("\n\nLeerlauf positivern Wert eingeben");
    printf("\n\nStromstaerke in Ampere:");
    scanf("%f",&i);
    }
    
    while (i<0)
    {
    printf("\n\nUnzulässiger Wert");
    printf("\n\nStromstaerke in Ampere:");
    scanf("%f",&i);
    }
    
    u=r*i;
    printf("\n\nEs herrscht eine elektrische Spannung von %5.2f Volt\n",u);
    
    getch();
    }
    


  • Es herrscht eine elektrische Spannung? 😃 Is ja geil...

    Aber Spass beiseite...
    1. Bist du im falschen Forum! Du programmierst mit C und nicht mit C++/CLI!

    2. Die Frage ist ein wenig unverständlich formuliert...
    Wenn du nur Zahlen in der Eingabe haben möchtest, benutze doch ein switch
    nach der scan Anweisung...
    case 0: //mach das und das
    case 1: // ""
    default: //printf("FalscheEingabe");

    das könntest du auch in eine Funktion kapseln.



  • void clearStdIn()
    {
        setvbuf(stdin,NULL,_IONBF,0); 
        setvbuf(stdin,NULL,_IOFBF,BUFSIZ); 
    }
    
    [b]int[/b] main()
    {
     //...
     int ret = 0;
     // Verhindert die Eingabe eines Buchstaben am Anfang 
     while(ret == 0)
     {
        ret = scanf("%f", &r);
        // stdin clearen (aber nicht mit fflush!!!)
        clearStdIn();
     }
     // ...
    [b] return 0;[/b]
    }
    

    Alternative:

    // ...
    char eingabe[6];    // Eingabe von maximal 5 Zeichen + '\0' am Ende
    char* error = NULL; // Fehlerstring für strtod
    do
    {	
    	z = 0;
    	error = NULL;
    	printf("Wiederstand in Ohm:"); 
    	while(z < 5)
    	{
    		if((eingabe[z++] = getc(stdin)) == '\n')
    			break;
    	}
    	clearStdIn();
    	eingabe[z-1]= '\0';
    	r = strtod(eingabe, &error);
    }
    while(*error != 0);
    


  • wo muss i des einfügen?

    thx für die antworten!



  • Was möchtest du den ersetzen bzw. überprüfen? Wenn du das weißt, sollte eigentlich klar sein wo du das Ganze einfügen musst.

    Gruß



  • naja i bin ein noob in proggen und der lehrer hilft uns gar ned
    kannst mas genau in den code kopieren ?
    danke



  • Jeder hat mal bei 0 angefangen... Nur wenn man dir alles vorkaut lernst du nichts dabei...

    Kopieren tu ich nichts...

    Als Tipp: Du musst die Eingabe ersetzen... Bei der alternative (die ich bevorzugen würde) ist in der while Anweisung die Abbruchbedingung... (für 0,1 bis 1000 musst du die noch einfügen...). Ausserdem kannst du die Bedingung so formulieren, dass du dir die Whileschleifen für == und < sparen kannst....

    Gruß



  • danke für die antworten



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten