Perchè se eseguo dinuovo il mio programma, ad ogni esecuzione successiva, mi somma i risultati delle esecuzioni precedenti?
codice:
#include <iostream>
#include <stdlib.h>
using namespace std;
void input( int v[], int &r, int &k);
void somma( int v[], int r, int k, float &som, int &ris);
void output( int v[], int r, int k, float som, int ris);
int main(){
char avv;
int r,k;
int v[100];
float som=0;
int ris=0;
do{
system ("cls");
//Intestazione
cout<<"\n*******************************************************************************\n\n";
input(v,r,k);
somma(v,r,k,som,ris);
output(v,r,k,som,ris);
//Riavvio
cout<<"\n\n\n\n*******************************************************************************\n";
cout<<"Per riavviare il programma premere (s) e invio, altrimenti (n) invio:\t";
cin>>avv;
}while(avv=='s' || avv=='S');
return 0;
}
//Siano assegnati in ingresso un vettore di interi V, di riempimento r, ed un intero k<r.
void input( int v[], int &r, int &k){
cout<<"Inserisci il numero di elementi del vettore:\n";
cin>>r;
cout<<"Riempi il vettore:\n";
for(int i=0; i<r; i++){
cout<<i+1<<") ";
cin>>v[i];
}
cout<<"Inserisci un valore K:\n";
cin>>k;
}
void somma( int v[], int r, int k, float &som, int &ris){
//Calcolo la somma S dei primi k elementi del vettore.
for(int i=0; i<k; i++){
if(k<r){
som = som + v[i];
}}
//Costruire un vettore W costituito dagli elementi di V di valore maggiore di S.
for(int i=0; i<r; i++){
if(som<v[i]){
v[ris]=v[i];
ris++;
}}}
void output( int v[], int r, int k, float som, int ris){
if(k>r){
cout<<"Ripetere l' operazione inserendo un valore K<R.\n";
}
else{
cout<<"Somma dei primi K elementi generata:\n"<<som<<"\n";
if(v[ris]<som){
cout<<"Vettore W=0.\n";
}
else{
cout<<"Vettore W formato dai K elementi maggiori di S:\n";
for(int i=0; i<ris; i++){
cout<<v[i]<<"\n";
}}}}