|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Dec 2008
Messaggi: 21
|
[C/C++] AIUTO PROGRAMMINO
chiedo un aiuto su un programmino che avevo da fare..non rieesco bene a capire l'algoritmo giusto..questo è il testo e il codice che ho scritto..è sbagliato però..se riuscite a capire che cosa ho sbagliato mi fate un piacere..grazie!
1) (a) Scrivere una funzione di nome conta_uguali che, presi come suoi parametri due array di interi A e B, e le rispettive lunghezze n ed m, determina e restituisce come suo risultato il numero di elementi coincidenti presenti nei due array (con "elementi coincidenti" si intendono due elementi identici come valore e come posizione occupata all'interno dell’array). (b) Descrivere la funzione conta_uguali anche tramite un diagramma di flusso. 2) Realizzare un programma che: (1) richiede all'utente il nome di un file contenente n (n • 1) sequenze di numeri interi, terminate ciascuna da un intero negativo; (2) legge da standard input una sequenza di interi, terminata da un intero negativo, e la memorizza in un array S; (3) utilizzando (obbligatoriamente) la funzione conta_uguali determina e stampa su standard output la sequenza di numeri presente nel file specificato che ha il maggior numero di coincidenze con la sequenza memorizzata in S; (4) richiede all'utente se vuol fornire un'altra sequenza di numeri da controllare ed in caso affermativo ripete dal passo (2). N.B. Si imponga che le sequenze di numeri siano di lunghezza max. 50; gli eventuali numeri in eccesso vengono ignorati. Codice:
#include <iostream> #include <fstream> using namespace std; int const dim=50; int conta_uguali(int A[],int n,int B[],int m) {int i,j,cont=0; for(i=0;i<n;i++) for(j=0;j<m;j++) if(A[i]==B[j] && i==j)cont++; return cont; } int main() {int a,x,y1,y2,i=0,j=0,risp; int S[dim]; int A[dim]; int B[dim]; char NOME_FILE[dim]; cout<<"inserisci il nome del file in cuitrovare le sequenze"<<endl; cin>>NOME_FILE; ifstream f1; f1.open(NOME_FILE); if(f1.fail()){cout<<"errore,file inesistente"<<endl; return 0; } do {cout<<"inserisci la sequenza di riferimento,terminata da numero negativo"<<endl; cin>>a; while(a>=0 && i<dim) {S[i]=a; i++; cin>>a; } f1>>x; while(x>=0) {A[j]=x; j++; f1>>x; } y1=conta_uguali(A,dim,S,dim); do {j=0; f1>>x; while(x>=0) {B[j]=x; j++; f1>>x; } y2=conta_uguali(B,dim,S,dim); if(y1<y2)for(i=0;i<dim;i++) for(j=0;j<dim;j++) A[i]=B[j]; } while(!f1.eof()); cout<<"la sequenza con il numero maggiore di elementi uguali alla sequenza di riferimento è:"<<endl; for(i=0;i<dim;i++) cout<<A[i]; cout<<"vuoi continuare?(se si digita 1 altrimenti 0)"<<endl; cin>>risp; } while(risp==1); return 0; } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:14.