Vă rog C++, dau coroană și 100 puncte.
Informaţiile despre un set de paralelipipede dreptunghiulare sunt înregistrate în fişierul text figuri.in, fiecare linie a cărui corespunde unui singur paralelipiped şi reciproc. O linie din fişier conţine următoarele date, separate prin spaţiu: CodPar (codul paralelipipedului –un număr natural din 5 cifre); cele 3 dimensiuni: a, b, c; Culoarea (valori posibile: roşie, galbenă, verde, albastră). Să se scrie un program care va copia în fişierul figuri.out atributele figurilor (completate la sfârşit cu câmpul volum-volumul figurii respective), de culoarea verde în ordinea crescătoare a volumelor acestora. Exemplu:
disc.in 10001 14 15 6 r
disc.out 10006 5 13 2 v 130
Răspunsuri la întrebare
Răspuns:
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("figuri.in");
ofstream g("figuri.out");
struct para
{
int cod_par, a,b,c;
char k;
int v;
};
int main()
{
para v[100], aux;
int i=0;
while (f >> v[i].cod_par >> v[i].a >> v[i].b >> v[i].c >> v[i].k) {
v[i].v=v[i].a*v[i].b*v[i].c;
++i;
}
int n=i, p;
for(int i = 0 ; i < n - 1 ; i ++) {
if (v[i].k=='v') {
p = i;
for(int j = i + 1 ; j < n ; j ++) {
if(v[j].k=='v' && v[j].v<v[p].v)
p=j;
}
aux=v[i];
v[i]=v[p];
v[p]=aux;
}
}
for (int i=0; i<n; i++) {
if (v[i].k=='v') {
g << v[i].cod_par << " " << v[i].a << " " << v[i].b << " " << v[i].c << " " << v[i].k << " " << v[i].v << endl;
}
}
return 0;
}
Explicație:
Sper să fie clar după o destulă cercetare...
Succese!