Premetto che il programma che mi sono prefissato di fare è più complesso della traccia di partenza e dovrebbe essere perfezionato soprattuto per l'output di quando non trova alcun valore..
Comunque il programma che ho creato fin qui mi da' il seguente waring durante la compilazione(ambiente devc++):
In function `void trovaprimo(int, int, float*, float*, int&, float&)
63 [Warning] assignment to `int' from `float'
63 [Warning] argument to `int' from `float'
Mi spiegate la natura dell'errore?!?...
Grazie!
codice:/*Siano assegnati in ingresso, da tastiera, due vettori di interi V1 e V2 ed un intero k. Si scriva un programma che individui e stampi il valore val e la posizione pos del primo elemento di V1 il cui valore è maggiore dell’elemento di posto k del vettore V2. Il programma deve essere articolato in funzioni (ad es.: input, output, trovaprimo). Suggerimento: la funzione trovaprimo riceve in ingresso V1, V2 e k e restituisce come parametri di uscita val e pos. Esempi INPUT: V1 = 2 4 1 3 7 6 9 V2 = 3 4 5 12 1 6 k = 2 OUTPUT: val = 7 pos = 4 INPUT: V1 = 2 4 1 3 7 6 9 V2 = 3 4 5 12 1 6 k = 0 OUTPUT: val = 4 pos = 1 */ #include<iostream> using namespace std; #include<stdlib.h> //Prototipi delle funzioni void input(int&z, int&k, int&n ,int&t, float v1[],float v2[]); void trovaprimo(int n, int k,float v1[], float v2[], int &pos, float &val); void output(int pos, float val); int main() { int k; int n; int t,z; float v1[100]; float v2[100]; float val; int pos; //Chiamate delle funzioni input(z,k,n,t,v1,v2); trovaprimo(n,k,v1,v2,pos,val); output(pos,val); cout<<"\n\n"; system("PAUSE"); return 0; } void input(int&z, int&k, int&n ,int&t, float v1[],float v2[]) { int i; cout<<"Assegna valore intero al numero di elementi del primo vettore \n"; cin>>n; cout<<"Assegna "<<n<<" valori reali al primo vettore\n"; for(i=0;i<n;i++) { cin>>v1[i]; } cout<<"Assegna valore intero al numero di elementi del secondo vettore\n"; cin>>t; cout<<"Assegna "<<n<<" valori reali al secondo vettore\n"; for(z=0;z<t;z++) { cin>>v2[z]; } cout<<"Assegna valore intero a k\n"; cin>>k; } void trovaprimo(int n, int k,float v1[], float v2[], int &pos, float &val) { int i; int j; i=0; j=v2[k]; while(i<n && v1[i]<j) //Posso scrivere direttamente v1[i]<v2[k]? Se no, perchè? { val=v1[i]; pos=i; i++; } } void output(int pos, float val) { cout<<"val= "<<val<<"\t"; cout<<"pos="<<pos<<"\n"; }

Rispondi quotando

