Hab nen Problem mit nem C Programm das ich geschrieben hab...



  • #include<stdio.h>
    #include<limits.h>

    int main()
    {
    int hilf,i,n,p=1;
    printf("\n\n\t\tF A K U L T Ä T R E C H N E R\n");
    do {
    printf("\nGeben Sie eine positive Zahl >1 ein: ");
    scanf("%d",&n);
    if(n<2)
    printf("\nSie haben eine falsche Zahl eingegeben.\n\n");
    } while ( n<2 );

    printf("Es wird das Produkt von 1*2*..*%d berechnet.\n",n);
    printf("Das Ergebnis soll kleiner als INT_MAX/2 sein.\n\n");

    for(i=2;(i<=n && p<INT_MAX/2);i++){
    hilf=p;
    p=pi;
    printf("1*2*..
    %2d = %10d\n",i,p);
    }
    hilf=p;
    p=pi;
    if(p>(INT_MAX/2)){
    printf("\n");
    printf("Ergebnis:\n=========\nDie vorgegebene Grenze (INT_MAX/2 = 1073741823) wurde überschritten.\nDas letzte gültige Produkt wurde mit Faktor 12 erzielt:");
    printf("\n1*2*..
    12 = 479001600\n\n");
    }
    else
    printf("\n\nDas Ergebnis lautet 1*2*..* %d = %d\n\n",i-1,hilf);

    return 0;
    }

    Mein Problem ist, dass wenn man eine 12 eingibt, dass das Programm sagt, 12 wäre schon zu viel....

    Kann jemand helfen???



  • Schade, mit Code-Tags wäre es einfach, was zu schreiben 😃

    //[...]
    p=p*i; // <<< DIESE ZEILE IST WOHL ZUVIEL UND UNSINNIG, DA p NOCHMAL ERHOEHT WIRD, OBWOHL DIE SCHLEIFE SCHON VERLASSEN WURDE
    if(p>(INT_MAX/2)){ 
    //[.../
    

  • Mod

    sobo84 schrieb:

    Mein Problem ist, dass wenn man eine 12 eingibt, dass das Programm sagt, 12 wäre schon zu viel....

    Inwiefern ist das ein Problem? So wie ich das sehe ist das doch genau die gewünschte Funktionalität des Programms wie sie in den ausgegebenen Texten beschrieben wird.

    edit: Ups, verrechnet. 13 sollte ja eigentlich die Grenze sein. Siehe Beitrag über mir für Lösung.



  • Danke BasicMan01

    Dein Tip war der Richtige..

    12! ist weniger als INT_MAX/2.

    DANKE DANKE


Log in to reply