Fisierul "Numere.in" conține numere intregi dispuse pe mai multe linii. Sa se scrie un program care afiseaza în fisierul "Numere.out" numărul cel mai mic și cel mai mare de pe fiecare linie din fisierul inițial. Cele doua numere se vor scrie pe aceeași linie, separate prin spațiu.
Va rog, o sa verifice tema și problema asta chiar nu îmi iese!
Doar răspunsuri serioase, altfel raport.
Răspunsuri la întrebare
Răspuns:
#include <fstream>
using namespace std;
ifstream f("Numere.in");
ofstream g("Numere.out");
void main()
{
int a,b;
while (!f.eof())
{
f >> a;
f >> b;
if (a > b)
g << "Cel mai mare: " << a << ", cel mai mic:" << b << endl;
else if (a < b)
g << "Cel mai mare: " << b << ", cel mai mic:" << a << endl;
}
}
Explicație:
#include<fstream> - biblioteca pentru file.
using namespace std - sa nu putem mereu std::f>>a
ifstream f("Numere.in") - Declaram Input File, adica numere.in
ifstream f("Numere.out") - Declaram Output File, adica numere.out
void main - functia de baza, punem void pentru ca nu returneaza nimic.
int a, b; - declaram variabilele pe care le folosim in algoritm.
while(!f.eof()) - f.eof() inseamna sfarsitul unui fisier, deci executam algoritmul in timp ce nu suntem la sfarsitul fisierului, deci !f.eof()
f >> a, respectiv f>> b, luam cele doua numere, pe rand si le memoram in a respectiv b.
if (a > b) - verificam daca a mai mare ca b
else if(a < b) - daca a nu e mai mare ca b, atunci verificam daca e mai mic.
g << "Cel mai mare: " << a << ", cel mai mic:" << b << endl;
respectiv
g << "Cel mai mare: " << b << ", cel mai mic:" << a << endl;
Scrie in ordine care e mai mare si care e mai mic dintre cele doua numere, conform conditiei.
OBS: am pus else if, pentru a salva mai multa memorie RAM, se poate si doar cu if, dar daca primul if este adevarat, nu il mai verifica si pe al doilea, salvand memorie si timp de executie.
Fisier.in:
10 11
2 3
4 6
4 2
6 2
62 69
420 156