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";
}