Minimalna liczba

MM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
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?

Kopiuj
#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ź.

  • Rejestracja: dni
  • Ostatnio: dni
4

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

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

MM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 9
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!

DA
  • Rejestracja: dni
  • Ostatnio: dni
1

ale po co aż tyle warunków?!

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

albo jeszcze prościej:

Kopiuj
min = a;
if (b < min) min = b;
if (c < min) min = c;
RE
  • Rejestracja: dni
  • Ostatnio: dni
0

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

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.