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

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


boiustef: de ce disc.in și nu figuri.in ???

Răspunsuri la întrebare

Răspuns de boiustef
1

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!


Laurentia1234: Multumesc mult
Alte întrebări interesante