|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2006
Città: Afragola(NA)
Messaggi: 3336
|
[c++] cosa ho sbagliato?
Ho il seguente programma da creare in dev c++:
/* Si implementi in C++ un programma che letto da file testo SORGENTE.txt una sequenza di numeri interi (supposta al massimo pari a 200 numeri interi), produca il vettore vetPari di riempimento riempPari contenenti numeri pari della sequenza ed il vettore vetDispari di riempimento riempDispari contenente i numeri dispari.Il programma inoltre, dopo aver calcolato il massimo di vetPari e vetDispari, stampi a video il vettore avente massimo maggiore. Il programma usi le seguenti funzioni, definite nel file "vettori.h" ed implementate nel file -"vettori.cpp":#define N 200 typedef int vettore[N]; -void costruisciVettori(vettore vpari, int &nPari, vettore vdispari,int &ndispari); // legge da file SORGENTE.TXT un numero per volta e lo inserisce in vpari se è pari, altrimenti in vdispari -int massimo(vettore v, int riemp); // restituisce il massimo del vettore v; -void stampa(vettore v, int riemp); // stampa a video il vettore v;*/ nel momento in cui inserisco come valore massimo un numero pari tutto funziona alla grande. Se inserisco invece come valore massimo un dispari mi restituisce sempre il vettore pari perchè considera come valore massimo il valore maggiore tra i pari...Ho provato quindi a inserire nel sorgente solo numeri dispari e ho notato che mi stampa un vettore vuoto...che sarebbe quello dei pari appunto... Io penso che ci sia un errore nell costruzione nel vettore dispari, ma nn capisco dove ho sbagliato... Aspetto vostri consigli a riguardo... Ps.:dimenticavo che spesso ma non sempre mi restituisce per due volte il valore massimo...e non so perche lo faccia... Ho aggiunto anche il codice in txt Ultima modifica di -andrea- : 12-12-2008 alle 14:33. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2008
Messaggi: 530
|
Codice:
#include <cstdlib>
#include <iostream>
#include <fstream>
#define N 200
typedef int vettore[N];
void costruisciVettori(vettore vpari, int &npari , vettore vdispari , int &ndispari);
int massimo(vettore v, int riemp);
void stampa(vettore v,int riemp);
using namespace std;
int main(int argc, char *argv[])
{
vettore vpari;
vettore vdispari;
int npari=0;
int ndispari=0;
int mp;
int md;
costruisciVettori(vpari, npari, vdispari, ndispari);
mp=massimo(vpari, npari);
md=massimo(vdispari, ndispari);
cout << "mp : " << mp << "\nmd : " << md << endl;
if(mp>md)
stampa(vpari,npari);
else
stampa(vdispari,ndispari);
system("PAUSE");
return EXIT_SUCCESS;
}
/*===========================================================================*/
void costruisciVettori(vettore vpari, int &npari, vettore vdispari,int &ndispari)
{
fstream file;
int appoggio;
file.open("SORGENTE.txt" , ios::in);
if (!file)
cout<<"*** Il file non esiste ***\n\n";
else
{
while (!file.eof())
{
file>>appoggio;
if((appoggio%2)==0)
{
vpari[npari]=appoggio;
npari++;
}
else
{
vdispari[ndispari]=appoggio;
ndispari++;
}
}
}
file.close();
}
/* ===========================================================================*/
int massimo(vettore v, int riemp)
{
int i;
int max=v[0];
for(i=1; i<riemp; i++)
{
if (v[i]>max)
max=v[i];
}
return max;
}
/*============================================================================*/
void stampa(vettore v, int riemp)
{
int i;
cout<<"Il vettore contenente il massimo valore tra i due e' : \n";
for(i=0; i<riemp; i++)
cout<<v[i]<<endl;
}
Ultima modifica di Alex_87_xelA : 12-12-2008 alle 16:14. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2006
Città: Afragola(NA)
Messaggi: 3336
|
grazie mille...ora mi funziona...
sebbene quando io vado ad inserire nel sorgente.txt valori come 1 2 3 4 5 6 mi stampa a video una scrittura del tipo: 2 4 6 6 Non capisco perchè mi mostri a video 2 volte un valore non necessariamente il max Ultima modifica di -andrea- : 12-12-2008 alle 19:51. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2008
Messaggi: 530
|
perchè nel file lasci un rigo vuoto !!!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:50.




















