Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C - Dziwna sprawa w działaniu programu

Matek33_33 06 Lis 2013 15:33 1269 5
  • #1 06 Lis 2013 15:33
    Matek33_33
    Poziom 12  

    Kod: c
    Zaloguj się, aby zobaczyć kod



    Jak wybieram "g" to sumą jest liczba przypisana do x, a jak wybieram "h" to wynik to 1. Proszę o nakierowanie mnie gdzie jest błąd bym mógł sam go naprawić ;)

    0 5
  • #2 06 Lis 2013 16:15
    marcinj12
    Poziom 40  

    Dzieląc dwie liczby typu integer wynik też będzie typu integer chyba, że "wymusisz" na kompilatorze potraktowanie go jako float. Albo zadeklaruj liczby x i y jako float, albo dzieląc napisz w=(x+y)/(x-3.0); to sobie kompilator sam rzutuje odpowiedni typ.

    0
  • #3 06 Lis 2013 17:39
    Matek33_33
    Poziom 12  

    marcinj12 napisał:
    Dzieląc dwie liczby typu integer wynik też będzie typu integer chyba, że "wymusisz" na kompilatorze potraktowanie go jako float. Albo zadeklaruj liczby x i y jako float, albo dzieląc napisz w=(x+y)/(x-3.0); to sobie kompilator sam rzutuje odpowiedni typ.


    Zrobiłem tak jak napisałeś czyli w=(x+y)/(x-3.0)
    Podałem x=5 i y=5 a jako wynik podało mi 2.5 ?? dlaczego??

    0
  • #4 06 Lis 2013 18:29
    marcinj12
    Poziom 40  

    Sprawdź wszystko dokładnie raz jeszcze, u mnie wyświetla prawidłowy wynik...

    0
  • #5 06 Lis 2013 18:48
    solarstone
    Poziom 11  

    Kod: c
    Zaloguj się, aby zobaczyć kod


    scanf("%s", &znak); wczytuje ciąg znaków (zakończony nullem) więc nie można go wpisywać do zmiennej zadeklarowanej jako char

    jak chcesz zrobić wpisanie do jednej zmiennej to pokombinuj z funkcjami typu getchar lub getc[/code]

    0
  • #6 08 Lis 2013 14:43
    Matek33_33
    Poziom 12  

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

    int main (){

    int x,y,s;
    float w;
    char znak;

    printf("Podaj liczbe x \n");
    scanf("%i",&x);

    printf("Podaj liczbe y \n");
    scanf("%i",&y);

    printf("Podaj znak \n");
    scanf("%s", &znak);


    switch (znak){
    case 'g':
    s=y+x;
    printf("Suma wprowadzonych liczb to %i \n", s);
    break;

    case 'h':
    w=(x+y)/(x-3.0);
    printf("Wartosc wyrazenia to %.1f \n", w);
    break;

    case 'z':
    printf("Mechatronika \n");
    break;
    default:
    ;
    }

    return 0;
    system("PAUSE");

    }


    ---------------------------------

    I dalej to samo :/ co jest źle? Bo już nie wiem próbowałem różnych rzeczy i dalej nie działa :/

    0