PDA

View Full Version : [C++] Vettore Pari e Dispari


fabrollo
23-11-2013, 09:29
Salve, ho un problemino con un esercizio di informatica di c++.
Mi sto preparando ad un esame e quindi mi sto esercitando molto.
Il problema è che sono bloccato su questo esercizio da molto tempo e ci ho passato innumerevoli ore per cercare di farlo funzionare. Comunque vi inizio a dare il testo:

Assegnati i vettori di interi VETT1 di cardinalità 16 e riempimento N e VETT2 di cardinalità 23 e di riempimento M ottenere:
- Il vettore PARI costituito dagli elementi di VETT1 e VETT2 di valore pari;
- Il vettore DISP costituito dagli elementi di VETT1 e VETT2 di valore dispari;
- Il massimo di PARI;
- Il minimo di DISP;
- Il valore medio di tali massimo e minimo;

Esempio:


N=4
VETT1= 1 2 3 4
M=7
VETT2= 5 6 7 8 9 1 2

PARI= 2 4 6 8 2
DISP= 1 3 5 7 9 1
MAX= 8
MIN= 1
MEDIA= 4.5


Ecco invece il mio esercizio con i commenti per capire cosa ho "combinato":

#include <iostream>
using namespace std;


int main() {


//******************************************************************************
// RIEMPIMENTO e CARDINALITA' VETT1
int VETT1[16];
int N= 0;
cout<< "Inserisci il numero di riempimento del primo Vettore: ";
cin>> N;

// INIZIALIZZIAMO VETT1
for(int i=0; i<N ; ++i) {
int conta;
cout<< "Inserisci il valore dell'elemento ";
cout<< i;
cout<< ": ";
cin>> conta;
VETT1[i]=conta;}


// RIEMPIMENTO e CARDINALITA' VETT2
int VETT2[23];
int M= 0;
cout<< "Inserisci il numero di riempimento del secondo Vettore: ";
cin>> M;

// INIZIALIZZIAMO VETT2
for(int i=0; i<M ; ++i) {
int conta;
cout<< "Inserisci il valore dell'elemento ";
cout<< i;
cout<< ": ";
cin>> conta;
VETT2[i]=conta;}

//******************************************************************************

//CALCOLO IL VETTORE PARI DA VETT1

int ari=0;
int VETTP[ari];
for (int c=0; c<N; c++) {
if (VETT1[c] % 2 == 0) {
VETTP[ari] = VETT1[c];
ari = ari+1;}
}

ari = ari ;
//CALCOLO IL VETTORE PARI DA VETT2
for (int c=0; c<M; c++) {
if (VETT2[c] % 2 == 0) {
VETTP[ari] = VETT2[c];
ari = ari + 1;}
}

//CALCOLO IL VETTORE DISPARI DA VETT1
int ispari= 0;
int VETTD[ispari];
for (int c=0; c<N; c++) {
if (VETT1[c] % 2 != 0) {
VETTD[ispari] = VETT1[c];
ispari = ispari+1;}
}

ispari = ispari ;
//CALCOLO IL VETTORE DISPARI DA VETT2
for (int c=0; c<M; c++) {
if (VETT2[c] % 2 != 0) {
VETTD[ispari] = VETT2[c];
ispari = ispari + 1;}
}

//******************************************************************************





// VISUALIZZA I VETTORI PARI E DISPARI
for (int v=0; v < ari; v++) {
cout << "I pari sono rispettivamente:" << VETTP[v] << "\n";}

for (int v=0; v < ispari; v++) {
cout << "I dispari sono rispettivamente:" << VETTD[v] << "\n";}

// CALCOLO IL MASSIMO DEI PARI (NON FUNZIONA ANCORA)
int MAX;
MAX = VETTP[0];
int TOT;
for (int c=0; c < ari; c++) {
if (MAX < VETTP[c] ) { MAX = TOT;}

}
cout << "Il Maggiore e' : " << TOT;


// CALCOLO IL MINIMO DEI DISPARI





//CALCOLO LA MEDIA TRA IL MASSIMO DEI PARI E IL MINIMO DEI DISPARI





cout<<"\n";
system("PAUSE");
return 0;

}


A prima vista sembrerebbe funzionare, ma quando inserite ad esempio i valori nel VETT1 " 5 4 3 2 1 " NON FUNZIONA, (quello dispari invece si) mentre quando li inserite così "1 2 3 4 5" FUNZIONA. Mi sono scervellato al massimo, spero che qualcuno di voi mi sappia aiutare gentilmente.


GRAZIE A TUTTI PER LA COLLABORAZIONE!! :fagiano:

lorenzo001
23-11-2013, 10:28
Vedi corretti suggerimenti in

http://forum.html.it/forum/showthread.php?threadid=2899795

nico159
24-11-2013, 13:27
Scusa la domanda, ma da che libro stai studiando C++? :)

Il codice che hai scritto è pessimo, e mi pare chiaro che il motivo è la mancanza di comprensione su come utilizzare anche solo le basi di C++

fabrollo
24-11-2013, 18:46
Scusa la domanda, ma da che libro stai studiando C++? :)

Il codice che hai scritto è pessimo, e mi pare chiaro che il motivo è la mancanza di comprensione su come utilizzare anche solo le basi di C++


In effetti sono alle prime armi :muro:

Mi sto impegnando al massimo. Vedi sto utilizzando questo manuale: C++ apogeo La Guida completa di Herbert Schildt + internet :)

Comunque alla fine grazie a vari aiuti sono riuscito a completare il codice:

//*************************************BY FABROLLO****************************//

#include <iostream>
using namespace std;


int main() {


//******************************************************************************
// RIEMPIMENTO e CARDINALITA' VETT1
int VETT1[16];
int N;
cout<< "Inserisci il numero di riempimento del primo Vettore: ";
cin>> N;

// INIZIALIZZIAMO VETT1
for(int i=0; i<N ; ++i) {
cout <<"Inserisci il valore dell'elemento " << i << ": ";
cin >>VETT1[i];}


// RIEMPIMENTO e CARDINALITA' VETT2
int VETT2[23];
int M;
cout<< "Inserisci il numero di riempimento del secondo Vettore: ";
cin>> M;

// INIZIALIZZIAMO VETT2
for(int i=0; i<M ; ++i) {
cout <<"Inserisci il valore dell'elemento " << i << ": ";
cin >>VETT2[i];}

//******************************************************************************

//CALCOLO IL VETTORE PARI DA VETT1

int ari=0;
int VETTP[39];
for (int c=0; c<N; c++) {
if (VETT1[c] % 2 == 0) {
VETTP[ari] = VETT1[c];
ari = ari+1;}
}


//CALCOLO IL VETTORE PARI DA VETT2
for (int c=0; c<M; c++) {
if (VETT2[c] % 2 == 0) {
VETTP[ari] = VETT2[c];
ari = ari + 1;}
}

//CALCOLO IL VETTORE DISPARI DA VETT1

int ispari=0;
int VETTD[39];
for (int c=0; c<N; c++) {
if (VETT1[c] % 2 != 0) {
VETTD[ispari] = VETT1[c];
ispari = ispari+1;}
}


//CALCOLO IL VETTORE DISPARI DA VETT2
for (int c=0; c<M; c++) {
if (VETT2[c] % 2 != 0) {
VETTD[ispari] = VETT2[c];
ispari = ispari + 1;}
}

//******************************************************************************





// VISUALIZZA I VETTORI PARI E DISPARI
for (int v=0; v < ari; v++) {
cout << "I pari sono rispettivamente:" << VETTP[v] << "\n";}

for (int v=0; v < ispari; v++) {
cout << "I dispari sono rispettivamente:" << VETTD[v] << "\n";}

// CALCOLO IL MASSIMO DEI PARI
double MAX=0;
for (int c=0; c < ari; c++) {
if (VETTP[c] > MAX)
{ MAX = VETTP[c];}
if (VETTP[c] == MAX) {MAX= MAX;}
}
cout << "Il massimo dei pari e': " << MAX << "\n";


// CALCOLO IL MINIMO DEI DISPARI

double MIN;
MIN = VETTD[0];
for (int c=1; c < ispari; c++) {

if (VETTD[c] < MIN)
{MIN = VETTD[c];}

if (VETTD[c] == MIN) {MIN= MIN;}
}

cout << "Il minimo dei dispari e': " << MIN << "\n";



//CALCOLO LA MEDIA TRA IL MASSIMO DEI PARI E IL MINIMO DEI DISPARI

double MEDIA;
MEDIA = (MIN + MAX) / 2;
cout << "La media tra il massimo ed il minimo e': " << MEDIA << "\n";


cout<<"\n";
system("PAUSE");
return 0;

}

//********************************BY FABROLLO***********************************