|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jun 2011
Messaggi: 17
|
Programma in c++
Buongiorno a tutti voi,sono nuovo del forum
Codice:
//Siano assegnati in ingresso, da tastiera, due vettori di interi V1 e
//V2 di uguale riempimento n.
//Si progetti un programma che riceva in ingresso V1 , V2, n ed un intero k e
//inserisca in un terzo vettore V3 la
//somma di quegli elementi di V1 e di V2 di omologa posizione che sono
//entrambi dispari.Quindi si individui la posizione P del primo elemento di V3 il cui
//valore sia maggiore di k.
//Si stampino, infine, il
//vettore V3 il suo riempimento (n3) ed il valore di P.
#include <iostream>
#include <stdlib.h>
using namespace std;
const int MAX_ELEM=100;
const int MAX_LUN=100;
typedef char stringa[MAX_LUN+1];
void input_array(int V[],int n,stringa nome_array);
void input(int V1[],int V2[],int &n);
void input_k(int &k);
bool copia(int V1[],int V2[],int V3[],int n,int &n3);
bool ricerca(int V3[],int n3,int k,int &val,int &pos);
void output(int V1[],int V2[],int V3[],int &n,int &n3,int k,int val,int pos);
void restart(char &risp);
int main()
{
char risp;
do{
int V1[MAX_ELEM];
int V2[MAX_ELEM];
int V3[MAX_ELEM];
int n;
int n3;
int k;
int val;
int pos;
input(V1,V2,n);
input_k(k);
ricerca(V3,n3,k,val,pos);
output(V1,V2,V3,n,n3,k,val,pos);
restart(risp);
}while ((risp=='s') || (risp=='S'));
system("PAUSE");
return 0;
}
void input_array(int V[],int n,stringa nome_array){
int i;
do{
if(n<0){
cout<<"Non puo'essere inserito un riempimento negativo"<<endl;}
if(n>MAX_ELEM){
cout<<"Non puo'essere inserito un riempimento maggiore di"<<" "<<MAX_ELEM<<endl;}
}while((n<0) || (n>MAX_ELEM));
for(i=0; i<n; i++){
cout<<"Inserire"<<" "<<nome_array<<"["<<i<<"]=";
cin>>V[i];
}
cout<<endl;
}
void input(int V1[],int V2[],int &n){
cout<<"Inserire il riempimento dei vettori"<<":";
cin>>n;
cout<<endl;
input_array(V1,n,"V1");
input_array(V2,n,"V2");
}
void input_k(int &k){
cout<<"Inserire il valore di k"<<":";
cin>>k;
cout<<endl;
}
bool copia(int V1[],int V2[],int V3[],int n,int &n3){
bool trovato=false;
int i;
int j;
n3=0;
for(i=0; i<n; i++){
for(j=0; j<n; j++){
if((V1[i]==V2[i]) && (V1[i]%2!=0) && (V2[j]%2!=0)){
V3[n3++]=V1[i]+V2[i];
}
}
}
if(n3!=0)
trovato=true;
return trovato;
}
bool ricerca(int V3[],int n3,int k,int &val,int &pos){
int i=0;
bool trovato=false;
while((i<n3) && (!trovato))
if(V3[i]>k){
trovato=true;
val=V3[i];
pos=i;
}
else{
i++;}
return trovato;
}
void output(int V1[],int V2[],int V3[],int &n,int &n3,int k,int val,int pos){
int i;
if(copia(V1,V2,V3,n,n3)==true){
cout<<"Il nuovo vettore e'"<<":";
for(i=0; i<n3; i++){
cout<<V3[i]<<" ";
}
cout<<endl;
cout<<"Valore"<<":"<<pos<<endl;
}
else
cout<<"Il vettore risulta vuoto"<<endl;
}
void restart (char &risp){
do{
cout<<"Vuoi ripetere il programma? (s/n)"<<":";
cin>>risp;
}while((risp!='s') && (risp!='S') && (risp!='n') && (risp!='N'));
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Dicci che problema hai
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Jun 2011
Messaggi: 17
|
Ciao,praticamente quando compilo non mi da errori,tuttavia accade questo:se ho ad esempio messo due array di riempimento 5:
V1=1,3,5,6,6 V2=1,3,5,6,6 k=7 Il nuovo vettore dovrebbe essere: V3=2,6,10 Valore=10 Invece a me esce V3=2,2,2,6,6,6,10,10,10 Cioè ho delle ripetizioni,mentre per quanto riguarda il valore ho sempre valore 0.Grazie ancora |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
Quote:
Codice:
if((V1[i]==V2[i]) && (V1[i]%2!=0) && (V2[j]%2!=0)) |
|
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Jun 2011
Messaggi: 17
|
Io invece credo di si,perchè nella traccia parla di posizioni omologhe.
|
|
|
|
|
|
#6 | |
|
Junior Member
Iscritto dal: Oct 2010
Messaggi: 16
|
Quote:
|
|
|
|
|
|
|
#7 |
|
Junior Member
Iscritto dal: Jun 2011
Messaggi: 17
|
Quindi l'omologo è riferito alla posizione,e non al valore.
|
|
|
|
|
|
#8 |
|
Junior Member
Iscritto dal: Jun 2011
Messaggi: 17
|
Grazie mille a tutti !!! Ho risolto !
|
|
|
|
|
|
#9 |
|
Junior Member
Iscritto dal: Jun 2011
Messaggi: 17
|
Tuttavia nel caso in cui metta riempimenti grandi,il problema rimane :-/
Codice:
#include <iostream>
#include <stdlib.h>
using namespace std;
const int MAX_ELEM=100;
const int MAX_LUN=100;
typedef char stringa[MAX_LUN+1];
void input_array(int V[],int n,stringa nome_array);
void input(int V1[],int V2[],int &n);
void input_k(int &k);
bool copia(int V1[],int V2[],int V3[],int n,int &n3);
bool ricerca(int V3[],int n3,int k,int &P);
void output(int V1[],int V2[],int V3[],int &n,int &n3,int k,int P);
void restart(char &risp);
int main()
{
char risp;
do{
int V1[MAX_ELEM];
int V2[MAX_ELEM];
int V3[MAX_ELEM];
int n;
int n3;
int k;
int P;
input(V1,V2,n);
input_k(k);
output(V1,V2,V3,n,n3,k,P);
restart(risp);
}while ((risp=='s') || (risp=='S'));
system("PAUSE");
return 0;
}
void input_array(int V[],int n,stringa nome_array){
int i;
do{
if(n<0){
cout<<"Non puo'essere inserito un riempimento negativo"<<endl;}
if(n>MAX_ELEM){
cout<<"Non puo'essere inserito un riempimento maggiore di"<<" "<<MAX_ELEM<<endl;}
}while((n<0) || (n>MAX_ELEM));
for(i=0; i<n; i++){
cout<<"Inserire"<<" "<<nome_array<<"["<<i<<"]=";
cin>>V[i];
}
cout<<endl;
}
void input(int V1[],int V2[],int &n){
cout<<"Inserire il riempimento dei vettori"<<":";
cin>>n;
cout<<endl;
input_array(V1,n,"V1");
input_array(V2,n,"V2");
}
void input_k(int &k){
cout<<"Inserire il valore di k"<<":";
cin>>k;
cout<<endl;
}
bool copia(int V1[],int V2[],int V3[],int n,int &n3){
bool trovato=false;
int i;
int j;
n3=0;
for(i=0; i<n; i++){
for(j=0; j<n; j++){
if((V1[i]==V2[j]) && (V1[i]%2!=0) && (V2[j]%2!=0)){
V3[n3++]=V1[i]+V2[i];
}
}
}
if(n3>0)
trovato=true;
return trovato;
}
bool ricerca(int V3[],int n3,int k,int &P){
int i=0;
bool trovato=false;
while((i<n3) && (!trovato))
if(V3[i]>k){
trovato=true;
P=i;
}
else{
i++;}
return trovato;
}
void output(int V1[],int V2[],int V3[],int &n,int &n3,int k,int P){
int i;
if(copia(V1,V2,V3,n,n3)==true){
cout<<"Il nuovo vettore e'"<<":";
for(i=0; i<n3; i++){
cout<<V3[i]<<" ";
}
cout<<endl;
if(ricerca(V3,n3,k,P)==true){
cout<<"Valore"<<":"<<P<<endl;}
}
else
cout<<"Il vettore risulta vuoto"<<endl;
}
void restart (char &risp){
do{
cout<<"Vuoi ripetere il programma? (s/n)"<<":";
cin>>risp;
}while((risp!='s') && (risp!='S') && (risp!='n') && (risp!='N'));
}
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Nov 2006
Messaggi: 188
|
_
Ultima modifica di tycoon : 05-06-2011 alle 19:08. |
|
|
|
|
|
#11 |
|
Junior Member
Iscritto dal: Jun 2011
Messaggi: 17
|
Ti ringrazio molto,ma credo che ci sia ancora lo stesso problema,ti spiego:se ad esempio metto:
V1=3,2,1,5,4,3 V2=2,1,5,6,7,8 k=5 mi esce: V3=6,11 quando dovrebbe uscirmi V3=6 Non sei d'accordo? |
|
|
|
|
|
#12 | |
|
Member
Iscritto dal: Nov 2006
Messaggi: 188
|
ha ragione tuccio ^2
Quote:
Ultima modifica di tycoon : 05-06-2011 alle 19:07. |
|
|
|
|
|
|
#13 |
|
Junior Member
Iscritto dal: Jun 2011
Messaggi: 17
|
Ora ho capito!! Vedendo i passaggi mi sono passati i dubbi !!! Grazie mille a chi mi ha dato una mano !!!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:02.




















