[C++] Wczytywanie liczb rzeczywistych

nataliia_16
Użytkownik
Użytkownik
Posty: 23
Rejestracja: 17 maja 2012, o 12:00
Płeć: Kobieta
Lokalizacja: Koszalin
Podziękował: 4 razy

[C++] Wczytywanie liczb rzeczywistych

Post autor: nataliia_16 »

Napisz program, który wczyta z klawiatury 3 liczby rzeczywiste, a następnie wyświetli
te dwie z nich, które są większe.
Ostatnio zmieniony 14 mar 2013, o 21:23 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
Ser Cubus
Użytkownik
Użytkownik
Posty: 1406
Rejestracja: 6 maja 2012, o 22:46
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 107 razy
Pomógł: 145 razy

[C++] Wczytywanie liczb rzeczywistych

Post autor: Ser Cubus »

Kod: Zaznacz cały

double tab[3];
for(int i = 0; i < 3 ; i++)
cin >> tab[i];

double najmniejsza = a;
if( tab[1] < najmniejsza) najmniejsza = tab[1];
if( tab[2] < najmniejsza) najmniejsza = tab[2];

for(int i = 0; i < 3 ; i++)
if(najmniejsza != tab[i]) cout<< tab[i];
PabloRal
Użytkownik
Użytkownik
Posty: 34
Rejestracja: 30 wrz 2012, o 13:52
Płeć: Mężczyzna
Lokalizacja: Legnica
Podziękował: 1 raz
Pomógł: 4 razy

[C++] Wczytywanie liczb rzeczywistych

Post autor: PabloRal »

Może i powyższe rozwiązanie jest poprawne (nie sprawdzałem), ale jest brzydkie

Kod: Zaznacz cały

#include <iostream>
#include <algorithm>
using namespace std;

double tab[4];

int main(){
        for(int i = 0; i < 3; i++){
                cin >> tab[i];
        }
        sort(tab, tab + 3);
        cout << "Dwie największe liczby to: " << tab[1] << " i " << tab[2] << endl;
        return 0;
}

Ser Cubus
Użytkownik
Użytkownik
Posty: 1406
Rejestracja: 6 maja 2012, o 22:46
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 107 razy
Pomógł: 145 razy

[C++] Wczytywanie liczb rzeczywistych

Post autor: Ser Cubus »

jeżeli ktoś się uczy dopiero podstaw to chyba nie ma sensu stosowania sortowania czy biblioteki alogorithm?
Awatar użytkownika
MichalPWr
Użytkownik
Użytkownik
Posty: 1625
Rejestracja: 29 wrz 2010, o 15:55
Płeć: Mężczyzna
Lokalizacja: Leszno
Podziękował: 7 razy
Pomógł: 387 razy

[C++] Wczytywanie liczb rzeczywistych

Post autor: MichalPWr »

Wszystkie rozwiązania są fajne, ale co się stanie jak wpiszę literę?
Ser Cubus masz rację. Lepiej nie używać takich myków. One są raczej zaadresowane dla zaawansowanych, tych co wiedzą co robią i jakie są tego konsekwencje. W tym przykładzie najlepiej zastosować bubble sort z uwagi na jego prostotę i walory edukacyjne

PabloRal, Używanie zmiennych globalnych w takim małym programie też nie należy do najpiękniejszych
Ser Cubus
Użytkownik
Użytkownik
Posty: 1406
Rejestracja: 6 maja 2012, o 22:46
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 107 razy
Pomógł: 145 razy

[C++] Wczytywanie liczb rzeczywistych

Post autor: Ser Cubus »

btw. użyłeś tab[4], wystarczy [3]
PabloRal
Użytkownik
Użytkownik
Posty: 34
Rejestracja: 30 wrz 2012, o 13:52
Płeć: Mężczyzna
Lokalizacja: Legnica
Podziękował: 1 raz
Pomógł: 4 razy

[C++] Wczytywanie liczb rzeczywistych

Post autor: PabloRal »

Jakoś tak mam utrwalone, że zawsze jedno dodaję dla pewności ;P
arcan
Użytkownik
Użytkownik
Posty: 106
Rejestracja: 17 gru 2012, o 23:56
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 7 razy
Pomógł: 31 razy

[C++] Wczytywanie liczb rzeczywistych

Post autor: arcan »

Moa propozycja:

Kod: Zaznacz cały

#include<iostream>
#include<queue>
using namespace std;
int main()
{
	priority_queue <double> a;
	double b;
	for(int i=0;i!=3;i++)
	{
		cin>>b;
		a.push(b);
	}
	cout<<a.top()<<" ";
	a.pop();
	cout<<a.top();
	cin.ignore();
	getchar();
	return 0;
}
Poza tym MichalPWr ma racje, trzeba jeszcze uwzględnić warunki co by było w przypadku nie podania liczby. Najlepiej określić to już w specyfikacji wejścia.
Zresztą powyższe trzy kody nie są idealne. A co w przypadku liczb składających się na przykład z 10000 cyfr? Najlepszy algorytm to zaczytanie zmiennych jako tablice charów i odróżniać wielkość tego ciągu (ilość znaków) przed przecinkiem, a następnie posortować. Nie trudne, ale trochę trzeba pogówkować z warunkami - ja już tego nie zrobię bo jest za późno
ODPOWIEDZ