Daca nu stiti despre date de tip tablou si string nu va atingeti de problema.
Incercarea am facuto, dar apar greseli la raspuns. Daca cel mai mare sau mic numar este primul atunci nu afiseaza corect raspunsul, daca apar mai multi utilizatori si numere mai mari apar greseli de raspuns.
#include
#include
#include
#include
using namespace std;
int main()
{
long long int i, a=0, b, n;
string s, tmp;
cin>>n; //put n names
getline (cin, s);
goto HERE;
long long int x[255];
for (a=1; a<=n; ++a){ //memorise a string
getline (cin, s);
HERE: for (i=0; i if (s[i]!=' ') tmp+=s[i];
else tmp="";
}
stringstream c; //convert the number string in integer
c< c>>b;
x[a]=b;
cout<
}
return 0;}
Răspunsuri la întrebare
► Cerinta :
ENERGIE ELECTRICA
Ne dorim cu toti o planeta verde. In acest scop este foarte important sa economisim energia electrica.
Se considera abonatii retelei de aprovizionare electrica dintr-o anumita localitate. Pentru fiecare din acesti abonati este cunoscut numele, prenumele si consumul anual, exprimat in kilowati-ora
[...]
► Rezolvare C++ ( perspectiva POO):
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
//Clasa client pentru memorarea usoara a datelor
class client {
public:
std::string nume, prenume;
float consum;
};
//Functie pentru citirea vectorului de clienti
std::vector<client> citire_date() {
//Declara vectorul de clienti
std::vector<client> clienti;
//Deschide fisier
std::ifstream file("energie.in");
//Citeste numarul de clienti, rezerva suficienta memorie pentru memorarea tuturor clientilor
int n;
file >> n;
clienti.reserve(n);
//Citeste clientii
for (int index = 0; index < n; index++) {
client tmp;
file >> tmp.nume >> tmp.prenume >> tmp.consum;
clienti.push_back(tmp);
}
//Inchide fisierul, returneaza vectorul de clienti
file.close();
return clienti;
}
//Functie pentru compararea a doi clienti in functie de consum
//Returnaza true daca clientul a are consum mai mic decat clientul b
bool comparator_clienti(client& a, client& b) {
return a.consum < b.consum;
}
//Functie pentru calculul mediei
float calcul_medie(std::vector<client> clienti) {
float suma = 0;
//Calcul suma
for (auto entitate : clienti) {
suma += entitate.consum;
}
//Calculeaza si returneaza media
return float(suma) / clienti.size();
}
int main() {
//Citire clienti
std::vector<client> clienti = citire_date();
//Deschidere fisier iesire
std::ofstream file("energie.out");
//Afisare medie
file << std::setw(10) << std::setfill(' ') << std::right << std::fixed << std::setprecision(2) << calcul_medie(clienti) << std::endl;
//Sortare vector clienti dupa ordinea data de comparator_clienti (crescator, dupa consum)
std::sort(clienti.begin(), clienti.end(), comparator_clienti);
//Afisare client cu consum maxim, minim
file << clienti[clienti.size() - 1].nume << " " << clienti[clienti.size() - 1].prenume << " " << clienti[clienti.size() - 1].consum << std::endl;
file << clienti[0].nume << " " << clienti[0].prenume << " " << clienti[0].consum << std::endl;
//Inchidere fisier
file.close();
}
► Nota :
- Nu imi dau seama ce ai vrut sa faci mai exact in codul dat de tine.
- Exemplul de pe foaie e gresit, media numerelor 25,59 si 38 este 40,(6).
- Am folosit elemente de programare orientata pe obiecte. Daca te deranjeaza acel class il poti inlocui fara probleme cu un struct sau cu un tuple. In loc de vectorul din STL poti folosi un vector alocat dinamic intr-un mod similar.
- Ai codul in fisierul 9591108.txt atasat.