ďťż
 
 
   C prosty kalkulator i nie działa
 
 

Tematy

 
    
 

 

 

 

C prosty kalkulator i nie działa





gummmibear - 07-03-2009 10:50
#include <stdio.h>

main()
        {
        int a;
        int b;
        char c;       
        int d;
        printf("Podaj a");
        scanf("%d",&a);
        printf("Podaj b");
        scanf("%d",&b);
        printf("Podaj rodzaj operacji +,-,*,/\n");
        scanf("%s", &c);
//        printf("\n %d",a);
        switch(c)
                {
                case '1':
                        {
                       
                        d=a+b;
                        }break;
                case '*':       
                        {
                        d=a*b;
                        }
                        break;
               
                case '/':
                        {
                        d=a/b;
                        }break;
       
                case '+':
                        {
                        d=a+b;
                        }break;
       
                case '-':
                        {
                        printf("Cos");
                        d=a-b;
                        }break;
                default : printf("\n cos nie tak");
                       
                       

                }       

        printf("\nWynik=%d", d);
        printf("\n");               
       
       
        } Jeśli zmienię położenie wczytania znaku pomiędzy wczytanie liczb jest wszystko dobrze.
Jeśli natomiast skompiluje to w takiej postaci wyświetla wartość zmiennej a.

Kompilator gcc.

Jakieś pomysły?



tomii - 07-03-2009 12:01
scanf("%s", &c); zamień na: scanf("%c", &c);



brk16 - 07-03-2009 12:22
Przepraszam, że nie poprawiam całości ale z tych istotniejszych rzeczy tak na szybko: #include <stdio.h>

main()
    {
    float a;
    float b;
    char c;
    float d;
    printf("Podaj a");
    scanf("%f",&a);
    printf("Podaj b");
    scanf("%f",&b);
    printf("Podaj rodzaj operacji +,-,*,/\n");
    scanf("%1s", &c);
//    printf("\n %d",a);
    switch(c)
        {

        case '*':
            {
            d=a*b;
            }
            break;

        case '/':
            {
            d=a/b;
            }break;

        case '+':
            {
            d=a+b;
            }break;

        case '-':
            {
            printf("Cos");
            d=a-b;
            }break;
        default : printf("\n cos nie tak");

        }

    printf("\nWynik=%f", d);
    printf("\n");

    }



tomii - 07-03-2009 12:34
Ok ale powiedz dlaczego wczytujesz char jako string, z tego co pamiętam, to w buforze nieraz mogą zostać śmieci.
W wariancie jaki nie działa spróbuj wyświetlić to c jako char.



brk16 - 07-03-2009 12:47
Sprawdzałem jak się zachowuje w tym kodzie scanf("%c", &c); i przed podaniem znaku jeszcze wywala "cos nie tak" i kończy działanie.
Dokładnie nie pamiętam jak to wyglądało w C gdyż nie piszę w nim od kilku lat, ale przy %1s wszystko działa jak powinno, przynajmniej u mnie.



tomii - 07-03-2009 13:04
Na początku jakoś mi to działało ale by segmentation fault
ale za to takie coś mi działa:
#include <stdio.h>

main()
    {
    float a;
    float b;
    char c;
    float d;
    printf("Podaj a");
    scanf("%f",&a);
    printf("Podaj b");
    scanf("%f",&b);
    printf("Podaj rodzaj operacji +,-,*,/\n");
    //scanf("%1s", c);
        getchar();
        c=getchar();
  printf("\n %c",c);
    switch(c)
        {

        case '*':
            {
            d=a*b;
            }
            break;

        case '/':
            {
            d=a/b;
            }break;

        case '+':
            {
            d=a+b;
            }break;

        case '-':
            {
            printf("Cos");
            d=a-b;
            }break;
        default : printf("\n cos nie tak");

        }

    printf("\nWynik=%f", d);
    printf("\n");

    } Więc coś zostaje chyba w buforze.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis