Suma i iloczyn trzech liczb pobranych od użytkownika

0

Witajcie.

Próbuje napisać program pobierający od użytkownika 3 liczby całkowite. Jeśli są dodatnie ma liczyć sumę, jeśli chociaż jedna z nich to 1 ma policzyć iloczyn, jeśli żaden z przypadków nie występuje ma wyświetlać -1.

"Na piechotę" bez funkcji wyszło (poza jednym błędem, że niezależnie od wszystkiego i tak wyświetlało na końcu -1 więc gdzieś mi się zagubiły klamerki zapewne).
Natomiast przy napisaniu funkcji (dopiero próbuje je zrozumieć) wszystko padło. Wyświetla jakieś przecudaczne liczby nie wiadomo skąd.

Bardzo proszę o wskazanie błędów

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

int suma(int a, int b, int c)
{
int suma;
suma=a+b+c;
return suma;
}
int iloczyn(int a, int b, int c)
{
int iloczyn;
iloczyn=a*b*c;
return iloczyn;
}

int main()
{
 int  a,b,c;//suma, iloczyn,;
 printf("Podaj trzy liczby calkowite\n");
 scanf("%d%d%d",&a,&b,&c);
 if ((a%2==0)&&(b%2==0)&&(c%2==0))
 {
     int suma(a,b,c);
     printf("Podales tylko parzyste liczby. Ich suma wynosi %d ",suma);
 }
    if ((a==1)||(b==1)||(c==1))
    {
        int iloczyn(a,b,c);
        printf("Jedna z podanych liczb jest rowna 1. Iloczyn liczb wynosi %d",iloczyn);
    }
    else
        printf("-1 %d");
    return 0;
}
1

Po pierwsze to wrzuciłeś kod który nie działa. Nie możesz pisać int iloczyn(a,b,c); bo co to niby jest? Wywołanie funkcji wygląda tak: iloczyn(a,b,c);.
Funkcje zwracają Ci jakąś wartość, więc przypisz sobie ją do zmiennej a następnie wypisz ich wartości.

int i = iloczyn(a,b,c);
printf("Jedna z podanych liczb jest rowna 1. Iloczyn liczb wynosi %d",i);

A co to jest niby: printf("-1 %d");? Dlaczego nie po prostu printf("-1");?

0

printf("-1 %d"); już z rozpędu bo cały czas było przypominane o tym %d i tak mi się wryło, że użyłam i tu.
A czy nie było tak, że wywołanie funkcji zwracające wartość wymaga int z przodu? W przeciwieństwie do funkcji typu void, którą wywołuje się bez tego?

Dziękuję za pomoc :)

1

Nie było tak. To co ty napisałeś to deklaracja.
Może być tak jak podałem albo np: printf("Jedna z podanych liczb jest rowna 1. Iloczyn liczb wynosi %d", iloczyn(a,b,c)); gdzie zamiast zmiennej wrzucasz sobie funkcję.

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