PDA

View Full Version : [C/C++]aiuto esercizio!


RikyToro
08-01-2009, 20:16
ciao a tutti!..ho un altro problema su un esercizio da proporvi...in esecuzione non va(non finisce più di inserire numeri)..avevo da creare una funzione che, presi come paramentri un array di interi V e il numero n di elementi dell'array, determinasse la sottosequenza di V di interi negativi con il maggior numero di elementi e stampasse il numero di elementi di questa sequenza...ad esempio se V={0,1,-1,-2,9,0,7,-1,-2,-3} la sottosequenza sarebbe {-1,-2,-3}e quindi il numero di elementi sarebbe tre...ho creato anche un semplice programma principale per testare il funzionamento della funzione...grazie del vostro aiuto!

#include <iostream>
using namespace std;
int conta (int V[],int n)
{int i=0;
int j=0,l1=0,l2=0;
int S1[100];
int S2[100];
int a=0;
while(V[i]<0 && j<100)
{S1[j]=V[i];
l1++;
j++;
i++;
}
i++;
do
{while(V[i]<0 && a<100)
{S2[a]=V[i];
l2++;
a++;
i++;
}
if(l2>l1){l1=l2;
for(int b=0;b<100;b++)
for(int m=0;m<100;m++)
S1[b]=S2[m];
}
i++;
}
while(i<n);
return l1;
}
int main()
{int A[10];
int x,y;
int i=0;
cout<<"inserisci una sequenza di numeri"<<endl;
cin>>x;
do
{A[i]=x;
i++;
cin>>x;
}while(i<10);
y=conta(A,10);
cout<<y;
cin>>x;
return 0;
}

Furla
08-01-2009, 22:55
usa il for quando c'è un contatore nel loop, con il while rischi di fare confusione o di non inizializzarlo.
ad esempio il tuo loop di inserimento dati fa 10 cicli, l'ultimo dei quali è inutilizzato perché sono già stati immessi tutti gli elementi dell'array. per il resto a me l'immissione funziona bene. sulla funzione non so che dirti perché mi sembra inutilmente complicata, a che ti servono due array da 100 elementi e tutti quei cicli? se V è di 10 elementi non puoi fare 100 cicli in cui incrementi i e usi V[i]! con l'input da te proposto {0,1,-1,-2,9,0,7,-1,-2,-3} il risultato è 5...

RikyToro
09-01-2009, 16:18
è che il problema non è contare quanti elementi negativi ci sono nell'array..ma trovare la sottosequenza con il maggior numero di negativi che in questo caso è -1,-2,-3 e dire da quanti elementi è composta...per quello non sapevo bene come fare...

banryu79
09-01-2009, 16:39
è che il problema non è contare quanti elementi negativi ci sono nell'array..ma trovare la sottosequenza con il maggior numero di negativi che in questo caso è -1,-2,-3 e dire da quanti elementi è composta...per quello non sapevo bene come fare...
Io ti consiglio di armarti di carta e matita e di risolvere il problema prima a tavolino.
Dopo che hai trovato l'algoritmo ti metti a scrivere il codice ;)