Informatică, întrebare adresată de dianatincu16, 9 ani în urmă

Se citesc de la tastatura: un numar natural n  si apoi n numere naturale cu cel mult 3 cifre fiecare. Sa se afiseze in fisierul text UNU.TXT, pe o singura linie si separate prin spatiu : suma celor n numere date, apoi suma primelor n-1 numere dintre cele date, apoi suma primelor n-2 si asa mai departe astfel incat ultima valoare afisata sa fie suma primelor doua numere.

Exemplu : daca n=4  si se dau numerele : 1, 7, 3, 4  fisierul UNU.TXT va avea continutul : 15  11  8


artur99: Pff, trebuie să dai edit :)) are un bug site-ul, și uneori când pui < în text, totul după el dispare
artur99: Încearcă să lași un spațiu după el și vezi dacă funcționează
artur99: Poți folosi vectori? Contează timpul de execuție?
dianatincu16: Da pot folosi vectori. timpul de executie nu conteaza
artur99: Voi faceți scrierea în vectori de la 0 sau de la 1?
dianatincu16: de la 1
artur99: aa, pff tre să modific, ok :))

Răspunsuri la întrebare

Răspuns de artur99
1
O metodă simplă de rezolvare, dacă nu mă înșel ar fi să faci așa:
Presupunem șirul: 2 3 2 4
Facem un nou vector v
v[1] = 2;
v[2] = v[1] + 3;
v[3] = v[2] + 2;
v[4] = v[3] + 4;

Deci, cum ar veni - pe fiecare element din vector suma numerelor până acolo, deci 2, 5, 7, 11 :D Și apoi doar iei vectorul din celălalt capăt și îl scrii în fișier.
Aplicat, ar fi ceva de genul:

int i, n, t;
cin>>n;
int v[n+1];

cin>>t; //citim primul număr
v[1] = t; //apoi îl punem în vector
//apoi citim următoarele n-1 numere rămase
for(i=2;i<=n;i++){
    cin>>t; //citim
    v[i] = t + v[i-1];
}

//Acum scriem invers în fișier (presupunem că g ar fi fișierul)
for(i=n;i>1;i--){
    g<<v[i]<<" ";
}

N-am compilat codul ca să verific dacă funcționează, dar cam asta ar fi metoda de rezolvare 


artur99: a, stai, nu am citit ultima parte din propoziție :)) for-ul de la sfărșit până la 2, nu până la 1
artur99: Stai că dau edit
artur99: gata
dianatincu16: Mersi !
artur99: Npc. Dar l-ai înțeles, te descurci să îl scrii complet?
dianatincu16: Da e ok
dianatincu16: Ma descurc
artur99: a, ok
Alte întrebări interesante