Clasa a IX-a · Șiruri de numere citite pe rândRead in English

Citirea unui șir terminat cu 0 în C++

În engleză: Reading a sequence terminated by 0

O(n)C++1736 de linii2 exemple

Ideea

Nu știm dinainte câte numere urmează: citim până la primul 0, care doar marchează sfârșitul și nu face parte din șir. Se afișează câte numere s-au citit și suma lor. Citirea se face o dată înainte de buclă și apoi la finalul fiecărui pas.

Descrierea în engleză

We do not know in advance how many numbers follow: we read up to the first 0, which only marks the end and is not part of the sequence. The program prints how many numbers were read and their sum. One read happens before the loop and then another at the end of every step.

Complexitate
O(n), unde n este numărul de valori de dinainte de 0
Clasa
Clasa a IX-a (Grade 9)

Exemple

Exemplul 1

Intrare

4 7 -2 5 0

Ieșire așteptată

4 14
Exemplul 2

Intrare

0

Ieșire așteptată

0 0

Codul C++

Codul complet, cu comentarii în română. Îl poți modifica liber și îl poți reseta oricând.

citire-pana-la-zero.cpp
/*
 * Titlu: Citirea unui șir terminat cu 0
 * Clasa: 9
 * Capitol: Șiruri de numere citite pe rând
 * Descriere: Nu știm dinainte câte numere urmează: citim până la primul 0,
 *            care doar marchează sfârșitul și nu face parte din șir. Se afișează
 *            câte numere s-au citit și suma lor. Citirea se face o dată înainte
 *            de buclă și apoi la finalul fiecărui pas.
 * Complexitate: O(n), unde n este numărul de valori de dinainte de 0
 *
 * Exemplu
 * Intrare: 4 7 -2 5 0
 * Ieșire: 4 14
 *
 * Exemplu
 * Intrare: 0
 * Ieșire: 0 0
 */
#include <iostream>
using namespace std;

int main()
{
    long long x, suma = 0;
    int numar = 0;
    cin >> x;
    while (x != 0)
    {
        numar++;
        suma = suma + x;
        cin >> x;
    }
    cout << numar << ' ' << suma << '\n';
    return 0;
}

Rulează pe un g++ adevărat (C++17, -O2) prin Compiler Explorer. Programele trebuie să se termine repede: există o limită de timp.