Kalkulator tylko dla liczb całkowitych

0

hej, mam takie zadanie w którym muszę wypisać błąd jesli zostanie wpisany ulamek. Musi być tylko liczba całkowita. Niesteety nie wiem jak wypisac błąd przy 1 liczbie ułamkowej. ponizej kod:

#include <stdio.h>


//zadanie 1

int main(void) 
{
  
int a = 0;
int b = 0;
int c = 0;
int suma_liczb;
int iloczyn_liczb;

printf("Wprowadź 3 liczby\n");
		
scanf("%i", &a);
scanf("%i", &b);
scanf("%i", &c);

suma_liczb = a + b + c;
iloczyn_liczb = a * b * c;

if(suma_liczb>=0)
	{	
		printf("Suma liczb to %i\n", suma_liczb);
		printf("Iloczyn liczb to %i\n", iloczyn_liczb);
	}
	
	else
		{

			printf("Wprowadziłeś zła liczbe\n"); 
		}

  return 0;
}
0

chodzi o to, że tu użytkownik musi wprowadzić liczbę całkowitą i powinno policzyć sumę i iloczyn. Natomiast jeśli wpiszę liczbę ułamkową np 4.6 to żeby wyświetliło od razu że błędna liczba

0

Nie jesteś w stanie wyświetlić informacji o błędzie jeśli ktoś wpisze ułamek, ponieważ nie czytasz ułamków (dokładnie to chodzi Ci o liczby zmiennoprzecinkowe) tylko od razu zmienne całkowite.
Musiałbyś:

  1. wczytyać string
  2. sprawdzać czy to na pewno nie jest liczba zmiennoprzecinkowa
  3. konwertować (parsować) na liczbę całkowitą
0
Kamil Żabiński napisał(a):

Nie jesteś w stanie wyświetlić informacji o błędzie jeśli ktoś wpisze ułamek, ponieważ nie czytasz ułamków (dokładnie to chodzi Ci o liczby zmiennoprzecinkowe) tylko od razu zmienne całkowite.
Musiałbyś:

  1. wczytyać string
  2. sprawdzać czy to na pewno nie jest liczba zmiennoprzecinkowa
  3. konwertować (parsować) na liczbę całkowitą

A nie lepiej wczytywac double, sprawdzac czy czesc ulamkowa jest rozna od 0?

0
stivens napisał(a):
Kamil Żabiński napisał(a):

Nie jesteś w stanie wyświetlić informacji o błędzie jeśli ktoś wpisze ułamek, ponieważ nie czytasz ułamków (dokładnie to chodzi Ci o liczby zmiennoprzecinkowe) tylko od razu zmienne całkowite.
Musiałbyś:

  1. wczytyać string
  2. sprawdzać czy to na pewno nie jest liczba zmiennoprzecinkowa
  3. konwertować (parsować) na liczbę całkowitą

A nie lepiej wczytywac double, sprawdzac czy czesc ulamkowa jest rozna od 0?

problem w tym że nie ogarniam tego jak to zrobić całkowicie.

0
stivens napisał(a):
Kamil Żabiński napisał(a):

Nie jesteś w stanie wyświetlić informacji o błędzie jeśli ktoś wpisze ułamek, ponieważ nie czytasz ułamków (dokładnie to chodzi Ci o liczby zmiennoprzecinkowe) tylko od razu zmienne całkowite.
Musiałbyś:

  1. wczytyać string
  2. sprawdzać czy to na pewno nie jest liczba zmiennoprzecinkowa
  3. konwertować (parsować) na liczbę całkowitą

A nie lepiej wczytywac double, sprawdzac czy czesc ulamkowa jest rozna od 0?

A zaokrąglenia? Nie zepsują tego?

UPDATE:
chyba nic złego się nie dzieje , więc:

\\ wczytujesz liczby jako zmiennoprzecinkowe
double d;
scanf("%d", &d);

\\ rzutujesz na całkowitą
int i = (int) d;

\\ sprawdzasz czy o oryginalna liczba zmienno przcinkowa jest równa zrzutowanej na double całkowitej
bool isEquals = d == (double) i

\\ Jeśli nie jest równe to znaczy że wartości po przeciku zostały ucięte i nie była to liczba całkowita
if (!isEquals) {
  println("To nie jest liczba całkowita")
  exit(1);
}

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