Δημοσιεύτηκε: 27 Φεβ 2012, 01:59
από Ilias95
Programming project 7 σελ.96 στο βιβλίο του King
έγραψε:Write a program that finds the largest and smallest of four integers entered by the user.
Use as few if statements as possible. Hint: Four if statements are sufficient.

Με έσκασε μέχρι να το καταφέρω με μόλις 4 if statements:
Spoiler: show
Μορφοποιημένος Κώδικας: Επιλογή όλων
#include <stdio.h>
#include "myextras.h"

int main(void)
{
int n1, n2, n3, n4, largest, smallest;

printf("Enter four integers: ");
mySCANF("%d %d %d %d", &n1, &n2, &n3, &n4);

if ((n1 > n2 && n1 > n3 && n1 > n4) || (n1 < n2 && n1 < n3 && n1 < n4))
n1 > n2 ? (largest = n1) : (smallest = n1);
if ((n2 > n1 && n2 > n3 && n2 > n4) || (n2 < n1 && n2 < n3 && n2 < n4))
n2 > n1 ? (largest = n2) : (smallest = n2);
if ((n3 > n1 && n3 > n2 && n3 > n4) || (n3 < n1 && n3 < n2 && n3 < n4))
n3 > n1 ? (largest = n3) : (smallest = n3);
if ((n4 > n1 && n4 > n2 && n4 > n3) || (n4 < n1 && n4 < n2 && n4 < n3))
n4 > n1 ? (largest = n4) : (smallest = n4);

printf("Largest: %d\n", largest);
printf("Smallest: %d\n", smallest);

return 0;
}

Η λύση μου φαίνεται στραβή, κακή και άσχημη, αλλά δεν πρέπει να υπάρχει άλλος τρόπος να γίνει με 4 if. :problem: