Minimalna liczba

0

Witam!

Napisałem program, który z trzech liczb wejściowych wypisuje tę najmniejszą. Wszystko było dobrze póki nie stworzyłem możliwości wpisania np. 3 3 5. Program zaczął wtedy wypisywać dziwne rzeczy np. dla 4 3 2 wypisuje 111 zamiast 2. Dla 3 3 5 to samo. Gdzie jest błąd?

#include <cstdio>

int main()
{
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    if ((a<b && a<c) || (a=b && a<c) || (a=c && a<b))
       printf("%d",a);
    if ((b<a && b<c) || (b=a && b<c) || (b=c && b<a))
       printf("%d",b);
    if ((c<a && c<b) || (c=b && c<a) || (c=a && c<b))
       printf("%d",c);
    return 0;
}

Z góry dzięki za odpowiedź.

4

"=" i "==" to dwa rozne operatory

"=" sluzy do przypisania wartosci a "==" do porownania dwoch wartosci w celu sprawdzenia czy sa sobie rowne

0

Po prostu nie wierze. Wcześniej uczyłem się Pascala i teraz ciągle zapominam. Muszę to sobie wbić do głowy jakoś. Dzięki!

1

ale po co aż tyle warunków?!

if (a<b && a<c) {
  // a
} else if (b<c) {
  // b
} else {
  // c
}

albo jeszcze prościej:

min = a;
if (b < min) min = b;
if (c < min) min = c;
0

Widzę, że piszesz w C++. Możesz użyć funkcji std::min z nagłówka algorithm.

printf("%d\n", std::min(std::min(a, b), c));

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