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

Statistici Venituri 279
Directorul unei companii dorește să facă o statistică despre veniturile companiei sale. El știe care au fost veniturile companiei pe parcursul a n săptămâni și dorește să afle în ce fel s-au modificat ele pe parcursul acestei perioade.

Deoarece are nevoie de un nou programator, iar tu tocmai îți cauți un nou job, te-a rugat în cadrul interviului să faci un program care să calculeze acestă statistică. În cazul în care scrii un program corect, vei fi răsplătit cu un nou loc de muncă.

Date de intrare
Se citește de la tastatură, pe prima linie un număr n. Pe a doua linie se citesc n valori, fiecare valoare reprezentând veniturile companiei în fiecare din cele n săptămâni.

Date de ieșire
În cazul în care veniturile au crescut pe toată perioada, programul va afișa pe ecran mesajul Veniturile au crescut cu:, urmat de n-1 valori reprezentând procentele cu care au crescut veniturile companiei în săptămâna curentă față de săptămâna anterioară.

În cazul în care veniturile au scăzut pe toată perioada, se va afișa mesajul Veniturile au scazut cu:, urmat de n-1 valori, reprezentând procentele cu care au scăzut veniturile companiei pe parcursul fiecărei săptămâni, relativ la săptămâna anterioară.

În cazul în care veniturile au rămas la fel pe toată perioada, se va afișa mesajul: Veniturile au ramas la fel.

Restricții și precizări
1 < n < 100

0 < venitul fiecărei săptămâni < 1 000

Fiecare din veniturile săptămânale este un număr real cu cel mult 3 zecimale după virgulă.

Rezultatele se vor afișa cu exact 3 zecimale după virgulă.

Se garantează că șirul de valori ale veniturilor este strict crescător, strict descrescător sau monoton.

Dacă o valoare procentuală este mai mare decât 100%, se va afișa ">100%".

Exemple
Date de intrare Date de ieșire
4
2.13 3.2 6.7 13.25 Veniturile au crescut cu: 50.235% >100% 97.761%
5
152.12 130 125.74 100 70.19 Veniturile au scazut cu: 14.541% 3.277% 20.471% 29.810%
4
15 15 15 15 Veniturile au ramas la fel

Răspunsuri la întrebare

Răspuns de andrei750238
5

#include <iostream>

#include <iomanip> //setprecision()

using namespace std;

int main(){

unsigned n,i;

double curent,ante;

cin >> n;

//Seteaza numarul de zecimale

cout << fixed;

   cout << setprecision(3);

//Citeste primele doua valori, determina monotonia

cin >> ante >> curent;

if(curent-ante==0) cout << "Veniturile au ramas la fel";

else if (curent-ante<0){

 cout << "Veniturile au scazut cu: " << (float)(ante-curent)/ante*100 << "%";

 ante=curent;

 for(i=3;i<=n;i++){

  cin >> curent;

  cout << " " << (float)(ante-curent)/ante*100 << "%";

  ante=curent;

 }

}

else{

       cout << "Veniturile au scazut cu: " << (float)(curent-ante)/ante*100 << "%";

 ante=curent;

 for(i=3;i<=n;i++){

  cin >> curent;

  cout << " " << (float)(curent-ante)/ante*100 << "%";

  ante=curent;

 }

}

}


Ciupacabra14: Multumesc de rezolvare, insa la veniturile au crescut trebuie sa pun >100% si nu ma prind cum sa-l strecor acolo, pe codul tau imi afiseaza un rezultat de 109%
andrei750238: Verifici cu o instructiune if.
andrei750238: if((float)(curent-ante)/ante*100>100) afisezi ">100%"
else afisezi ce am zis eu acolo
andrei750238: Si vad ca am uitat sa schimb "scazut" cu "crescut" la a doilea caz
Ciupacabra14: Am modificate eu, multumesc frumos.
Alte întrebări interesante