Informatică, întrebare adresată de gugleadennis88, 8 ani în urmă

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.

Anexe:

gugleadennis88: va rog nu folositi cu ifstream and ofstream, nu am nevoie, folositi cu iostream(cin si cout, mersi)
gugleadennis88: Puteti sa faceti si complet diferit, principalul rezolvarea sa fie corecta
gugleadennis88: Daca aveti nevoie de verificari afisez, codul aici
gugleadennis88: #include
#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;}
gugleadennis88: Nu folositi codul, este gresit. Din pacate nul pot afisa
andrei750238: Adu-mi aminte pe seara să ma uit pe problema si iti promit ca te ajut.
gugleadennis88: iti aduc aminte, daca poti sa ma ajuti

Răspunsuri la întrebare

Răspuns de andrei750238
1

► 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 :

  1. Nu imi dau seama ce ai vrut sa faci mai exact in codul dat de tine.
  2. Exemplul de pe foaie e gresit, media numerelor 25,59 si 38 este 40,(6).
  3. 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.
  4. Ai codul in fisierul 9591108.txt atasat.
Anexe:

gugleadennis88: Multumesc
Alte întrebări interesante