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

URGENT! C++


Se citește de la tastatură un număr întreg N care reprezintă numărul de elemente dintr-un vector. În continuare, se vor citi N numere întregi. Să se salveze aceste numere într-un vector și să se calculeze Rata trecerilor prin zero ale vectorului.

Rata trecerilor prin zero reprezintă numărul de valori consecutive cu semn diferit, raportat la numărul total de valori ale vectorului. Zero este considerat număr pozitiv.

Date de intrare:

Pe prima linie N, număr întreg fără semn reprezentat pe 16 biți.

Pe a doua linie N valori întregi cu semn reprezentate pe 32 de biți.

Date de ieșire:

Rata trecerilor prin zero, valoare reală reprezentată pe 64 biți, aproximată la 2 zecimale. Aproximarea se va face utilizând următoarea linie de cod:

cout << fixed << setprecision(2) << valoare_afisata;

Exemplu:

10

78 26 -58 -84 -66 34 -73 6 85 16

0.40

Anexe:

Răspunsuri la întrebare

Răspuns de VxF
1

Răspuns:

#include <iostream>

#include <iomanip>

#include <vector>

int main()

{

   std::vector<long int> lista;

   unsigned int n;

   double rata = 0;

   std::cout << "n: ";

   std::cin >> n;

   lista.reserve(n);

   

   std::cout << "Lista: ";

   for (int i = 0; i < n; i++) {

       std::cin >> lista[i];

   }

   bool precedentPozitiv = lista[0] >= 0;

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

       if (precedentPozitiv != lista[i] >= 0) {

           precedentPozitiv = lista[i] >= 0;

           rata++;

       }

   }

   rata /= n;

   std::cout << "Rata: " << std::fixed << std::setprecision(2) << rata << std::endl;

}


climaCode: Incorrect program output
--- Input ---
16
35 77 -66 -71 -55 32 82 -56 26 -39 -81 -61 -16 22 28 67

--- Program output ---
0.96

--- Expected output (numbers)---
0.38
climaCode: nu trece testele ce trebuie schimbat
VxF: Am înţeles greșit calculul ratei. Am corectat răspunsul.
Alte întrebări interesante