Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    28

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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Devi dare maggiori informazioni sul problema e non richiedere un generico "aiuto" ..
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    759
    Dopo aver risposto alla richiesta di oregon, riguarda la funzione conta_uguali che così non va bene.
    Se
    con "elementi coincidenti" si intendono due elementi identici come valore e come posizione occupata all'interno dell’array
    non c'è bisogno di eseguire il ciclo For su entrambi gli array. Basta che tu lo esegua sull'array più corto e per ciascun elemento verifichi se nella stessa posizione dell'altro array c'è lo stesso valore.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.