[C] Odróżnianie liczby od innych znaków

2012-04-28 21:29

Rejestracja: 7 lat temu

Ostatnio: 7 lat temu

0

Mam takie zadanie w którym mam pobrać dwie liczby typu float lub double i wykonać na nich pewne obliczenia.
program ma się powtarzać aż nie wpisze znaku niebędącego liczbą.
Właśnie nie wiem jak odróżnić czy jest to liczb czy inny znak.

edytowany 1x, ostatnio: Foxtrot, 2012-04-28 21:29
"Odróżnianie" - grizz 2012-04-28 21:37

Pozostało 580 znaków

2012-04-28 21:35

Rejestracja: 8 lat temu

Ostatnio: 4 lata temu

0

Sprawdź numer ASCII.

Pozostało 580 znaków

2012-04-28 21:36

Rejestracja: 10 lat temu

Ostatnio: 1 tydzień temu

Lokalizacja: Redmond, WA

0

scanf przy wczytywaniu elementów zwraca ile elementów udało się wczytać. jeśli ta liczba będzie różna od liczby elementów którą chciałeś wczytać to znaczy, że ktoś wpisał inne znaki.
przykładowo:
int d;
while (scanf("%d",&d)==1)
{
// jesli ktos nie wpisze liczby to automatycznie wyłazi z whila
}


░█░█░█░█░█░█░█░█░█░█░█░

Pozostało 580 znaków

2012-04-28 21:42

Rejestracja: 7 lat temu

Ostatnio: 7 lat temu

0

a mogę w taki while wpisać 2 razy scanf??

Pozostało 580 znaków

2012-04-28 21:47

Rejestracja: 10 lat temu

Ostatnio: 1 tydzień temu

Lokalizacja: Redmond, WA

0

możesz zrobić:
while (scanf("%d%f",&d,&f)==2)
{

}

albo
while(scanf("%d",&d)==1 && scanf(...)==1...)

albo nawet:
while (scanf("%d%d",&a,&b) && printf("%d\n",a+b)){}


░█░█░█░█░█░█░█░█░█░█░█░
edytowany 1x, ostatnio: krwq, 2012-04-28 21:47

Pozostało 580 znaków

2012-04-29 15:32

Rejestracja: 7 lat temu

Ostatnio: 7 lat temu

0

Napisałem takie coś, Dało by sie to jakoś lepiej zrobić??

#include <stdio.h>

```c
int main(void)
{
        float x, y, z;
        int a=0, stan1, stan2;

        printf("Podaj pierwsza liczbe: ");
        stan1=scanf("%f", &x);
        printf("Podaj druga liczbe: ");
        stan2=scanf("%f", &y);

        while(stan1==1 && stan2==1)
        {
                z=(x-y)/(x*y);
                printf("%f\n", z);
                printf("Podaj pierwsza liczbe: ");
                stan1=scanf("%f", &x);
                printf("Podaj druga liczbe: ");
                stan2=scanf("%f", &y);
        }

        system("pause");
        return 0;
}

Pozostało 580 znaków

2012-04-29 16:31

Rejestracja: 9 lat temu

Ostatnio: 6 godzin temu

0

Można zrobić sprawdzanie, czy x = 0 lub y = 0. (Założenia)

Pozostało 580 znaków

2012-04-29 16:42

Rejestracja: 10 lat temu

Ostatnio: 1 tydzień temu

Lokalizacja: Redmond, WA

0

coś takiego:

#include <stdio.h>

int main(void)
{
        float x, y, z;
        int a=0, stan1, stan2;

        while(1)
          {
                printf("Podaj pierwsza liczbe: ");
                stan1=scanf("%f", &x);
                printf("Podaj druga liczbe: ");
                stan2=scanf("%f", &y);
                if (stan1!=1 || stan2!=1)
                  break;
                z=(x-y)/(x*y);
                printf("%f\n", z);
        }

        system("pause");
        return 0;
}

░█░█░█░█░█░█░█░█░█░█░█░
edytowany 1x, ostatnio: krwq, 2012-04-29 16:43

Pozostało 580 znaków

2012-04-30 16:36

Rejestracja: 7 lat temu

Ostatnio: 7 lat temu

0

użyłeś tutaj break żeby wyjść z pętli, a da się to samo zrobić w switch case??

Pozostało 580 znaków

2012-04-30 16:38

Rejestracja: 10 lat temu

Ostatnio: 1 tydzień temu

Lokalizacja: Redmond, WA

0

nie zrozumiałem pytania


░█░█░█░█░█░█░█░█░█░█░█░

Pozostało 580 znaków

2012-04-30 16:45

Rejestracja: 7 lat temu

Ostatnio: 7 lat temu

0
if (stan1!=1 || stan2!=1)
                  break;

break tutaj każe wyjść z pętli.

a czy jak używam

switch()
       case:
              .................

to czy też moge tak wyjść z pętli??
bo break w case wychodzi ze switch

Pozostało 580 znaków

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0