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

Date de intrare
Pe prima linie se va găsi un singur număr natural n, iar pe următoarele n linii se vor găsi n propoziții de tipul Muncitorul x a muncit y ore, unde x și y sunt numere naturale.

Date de ieșire
Se va afișa un singur număr natural, reprezentând numărul de ordine a muncitorului care a depus cele mai multe ore de muncă. În cazul în care mai mulți muncitori au depus numărul maxim de ore, se va afișa cel cu indice de ordine cel mai mic.

Restricții și precizări
În cazul în care unul dintre angajați apare de mai multe ori printre datele de intrare, orele de muncă se vor aduna.
1 ≤ n, x, y ≤ 10 000
Exemplu
Date de intrare
5
Muncitorul 1 a muncit 10 ore
Muncitorul 23 a muncit 5 ore
Muncitorul 3 a muncit 3 ore
Muncitorul 23 a muncit 11 ore
Muncitorul 1 a muncit 2 ore

Date de ieșire; 23

Ma puteti ajuta cu o rezolvare in c++ , dar nu cu stringuri va rog !

Răspunsuri la întrebare

Răspuns de misterL
0

Răspuns:

#include<fstream>

#include<cstring>

using namespace std;

ifstream f ("date.in");

ofstream g ("date.out");

char s[41],*p,aux[5];

struct muncitor

{

   char x[5],y[5];

}m[101],maxi;

int i,n;

int main()

{

   f>>n;

   f.get();

   for(i=1;i<=n;i++)

   {

       f.getline(s,101);

       p=strtok(s," ");

       p=strtok(NULL," ");

       strcpy(m[i].x,p);

       p=strtok(NULL," ");

       p=strtok(NULL," ");

       p=strtok(NULL," ");

       strcpy(m[i].y,p);

       p=strtok(NULL," ");

   }

   for(i=1;i<n;i++)

   if(strcmp(maxi.y,m[i].y)<0)

   {

       strcpy(maxi.x,m[i].x);

       strcpy(maxi.y,m[i].y);

   }

   g<<maxi.x;

   f.close();

   g.close();

   return 0;

}

Explicație:

Alte întrebări interesante