Diskuze: Porovnání tři čísel
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Porovnani vice cisel je problem serazeni cisel. Koukni na zdejsi serialy o
algortimech. Cisla nasazia do pole a seradis.
Jinak konrketneji pro 3 cisla, muzes vyresit i neelegantnim zpusobem a to
nekolik podminek.
Existuje veľa spôsobov, ale ak chceš len vypísať zoradené tri čísla môžeš pre spestrenie použiť napríklad takýto spôsob
#include <stdio.h>
#include <stdlib.h>
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
int main() {
int a, b, c;
int min, mid, max;
//nacitaj tri cisla
min = min(min(a, b), c);
max = max(max(a, b), c);
mid = a + b + c - min - max;
printf("%d %d %d\n", min, mid, max);
return 0;
}
Tak použiješ hodně podmínek a podle toho, do jakého případu to spadne, tak budeš vědět, v jakém pořadí bys je měl vypsat.
Pokud to funguje správně, tak ano. A ten return by podle mě stačil akorát na konci.
Ahoj, existuje i jednodušší způsob, kterým prohodíš obsah proměnných tak, že na konci budou seřazené. Pro více čísle to ale samozřejmě nebude už tak jednoduché V pseudokódu (předpokládám seřazení od nejmenšího po největší, obráceně by to šlo také):
// chybí načtení proměnných od uživatele a tak...
if(a > b) {
int temp = a;
a = b;
b = temp;
}
if(b > c) {
int temp = b;
b = c;
c = temp;
}
if(a > b) {
int temp = a;
a = b;
b = temp
}
printf("%d %d %d\n", a, b, c);
Proměnné a, b, c obsahují na začátku neseřazená čísla od uživatele. Postupně je prohazujeme (pokud již nejsou správně seřazená tak, aby na konci byla vždy ve správném pořadí).
Příklad: na začátku máme 3, 2, 1. První dvě čísla prohodíme - 2, 3, 1, další dvě také (3 > 1) - dostaneme 2, 1, 3. Tím se nám jednička z konce dostala doprostřed. Nakonec ještě prohodíme jedničku a dvojku a máme seřazeno - 1, 2, 3.
PS: Pokud chceme prohazovat dvě čísla, musíme si jedno z nich dočasně uložit do proměnné. Kdybychom tak neudělali a napsali
a = b
b = a
tak do a přiřadíme hodnotu b a když chceme hodnotu a přiřadit do b, nebude tam původní hodnota a ale nově přiřazená hodnota b.
Snad je to srozumitelné
Zobrazeno 9 zpráv z 9.