PDA

Visualizza la versione completa : [C++] Somma di tutti gli elementi di un array


cletus92
06-09-2016, 15:40
Salve ragazzi, ho bisogno di una mano e online non trovo nulla che mi puo aiutare neanche sul libro.
Devo fare la somma di tutti gli elementi di un array, il codice che ho inserito e questo;



#include <iostream>

using namespace std;

int main()
{
int y[3],s;

y[0]=10;
y[1]=40;
y[2]=7;
y[3]=50;
s=0;


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

s+=y[i];
}
cout<<s;




return 0;
}


non riesco a capire come devo far capire al compilatore che la variabile 's' del ciclo for non deve azzerarsi, ma sommarsi al valore successivo che ho dato alla variabile 'y'. Questo e un programmino che ho fatto per cercare di capire come devo fare.

oregon
06-09-2016, 16:33
Così va bene ma devi togliere

y[3]=50;

perché l'array ha 3 elementi non 4.

cletus92
06-09-2016, 16:45
Ho risolto, ho utilizzato un ciclo while anziche il ciclo for. Il codice è questo;



#include <iostream>

using namespace std;

int main()
{
int y[3];
int i=0,s=0;

y[0]=4;
y[1]=40;
y[2]=7;

while( i<3)
{
s+=y[i++];

}


cout<< s;



return 0;
}

oregon
06-09-2016, 16:52
Funziona anche con il ciclo for ... il problema era solo quella linea che ti ho detto.

cletus92
06-09-2016, 16:54
va bene, grazie mille dell'aiuto.

cletus92
06-09-2016, 17:46
scusami per il disturbo ma ho un altro problema adesso. L'esercizio dice cosi:
creare una matrice quadratica, confrontare la triangolare superiore s1 con quella inferiore s2, se s1 � maggiore di s2 stampa s1, altrimenti creare un vettore v composta con s1 e s2.

il codice che ho messo e questo:


#include <iostream>
#include <cstring>
#include <cstdio>
#define MAX 50

using namespace std;

int r,c,matrice[MAX][MAX];

void caricamento_matrice();

void stampa_matrice();

void confronto_delle_triangolari();



int main()
{

caricamento_matrice();

stampa_matrice();

confronto_delle_triangolari();

return 0;

}


void caricamento_matrice()
{
do
{
cout<<"inserisci il numero di righe: ";

cin >>r;

cout<<"inserisci il numero di colonne: ";

cin>>c;

if(r>MAX)

cout<<"numeri di righe troppo alto reinserirle perfavore.\n";

if(r<1)

cout<<"numero di righe troppo basso reinserirle perfavore.\n";

if (c>MAX)

cout<<"numero di colonne troppo alto reinserirle perfavore.\n";

if(c<1)

cout<<"numero di colonne troppo basso reinserirle perfavore.\n";
if(r!=c)

cout<<"per favore si inserisca una matrice quadratica.\n";

}
while(r>MAX || r<1 || c>MAX || c<1 || r!=c);

for(int h=0;h<r;h++)
{
for(int k=0;k<c;k++)
{
cout << "inserici l'elemento di riga "<< h <<" e di colonna "<< k << " : ";
cin >> matrice[h][k] ;
}

}

}

void stampa_matrice()
{

cout <<"la matrice e la seguente:\n";
{

for(int i=0;i<r;i++)
{
for(int t=0;t<c;t++)
{
cout << matrice[i][t] <<"\t";
}

cout <<endl;
}
}

}



void confronto_delle_triangolari()
{
int i=0,h=0;
int s1=0,s2=0;

while(i<c)
{

s1+=matrice[0][i++];


}

cout << s1 ;

while(h<r)
{

s2+=matrice[h++][c];

}

cout<<s2;
}

il problema e che non riesco a fare la somma dell'ultima colonna della matrice. le ho provate tutte ma mi esce sempre come somma 0.

cletus92
06-09-2016, 18:02
niente ho risolto anche questo non vi disturbo piu scusatemi davvero.

Loading