RISOLTO [C++] Due esercizi da risolvere entro stasera

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.

MPG

Utente Attivo
Messaggi
566
Reazioni
4
Punteggio
55
Ho due esercizi da risolvere entro stasera in funzione della verifica di domani per cui vi prego se mi potete correggere il primo e aiutare a svolgere il secondo (nessuno dei miei compagni riesce a svolgere il secondo).
1) Scrivere una funzione che riceva come parametro un array di interi, (la sua dimensione) e un intero x e restituisca la posizione di x nell'array. Se l'elemento non è presente la funzione restituisce -1.

Codice:
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <iostream>

using namespace std;

int CercaEl(int A[],int dim,int x)
{
 for(int i=0;i<dim;i++)
 {
        if(A[x]==A[i])
    return i;
 }
 return -1;

}
int main()
{
int dimensione;
cin>>dimensione;
int a[dimensione];
int posizione;
cin>>posizione;
cout<<CercaEl(a,dimensione,posizione);
return 0;
}

Va bene?

2) una funzione riceve come parametri 2 array di uguale dimensione e la dimensione. Sampa e restituisce il numero di elementi in comune.
????????
 
Ho due esercizi da risolvere entro stasera in funzione della verifica di domani per cui vi prego se mi potete correggere il primo e aiutare a svolgere il secondo (nessuno dei miei compagni riesce a svolgere il secondo).
1) Scrivere una funzione che riceva come parametro un array di interi, (la sua dimensione) e un intero x e restituisca la posizione di x nell'array. Se l'elemento non è presente la funzione restituisce -1.

Codice:
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <iostream>

using namespace std;

int CercaEl(int A[],int dim,int x)
{
for(int i=0;i<dim;i++)
{
        if(A[x]==A[i])
    return i;
}
return -1;

}
int main()
{
int dimensione;
cin>>dimensione;
int a[dimensione];
int posizione;
cin>>posizione;
cout<<CercaEl(a,dimensione,posizione);
return 0;
}

Va bene?

2) una funzione riceve come parametri 2 array di uguale dimensione e la dimensione. Sampa e restituisce il numero di elementi in comune.
????????
Conosco c++ ma non ho mai programmato con questo linguaggio (ma alla fine il procedimento è uguale per tutti i linguaggi).
La prima funzione va bene. In sostanza devi scorrere l'intero Array e confrontare valore per valore. Sembra ok. Ti funziona?
La seconda funzione è facilissima.
Hai due Array di uguali dimensioni.
Ti servono due for innestati.
Dal cellulare mi è difficile scrivere il codice. Te lo scrivo in c e tu lo traduci in c++
For(i=0; i<dim;i++){
For(j=0;j<dim;j++){
if(ai==b[j]) printef("%d",ai);
}
}
Dal cellulare mi da problemi il codice ai sarebbe a[]
 
Aggiorno il primo ho rifatto cosi'

Codice:
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <iostream>

using namespace std;




int CercaEl(int A[],int dim,int x)
{

 for(int i=0;i<dim;i++)
 {
        if(x==A[i])
        {
          return i;

        }



}
return -1;
}

int main()
{
    srand(time(NULL));
int dim;
cin>>dim;
int A[dim];
int x;
cin>>x;
 for(int i=0; i<dim;i++ )
{
       cin>>A[i];
      cout<<endl;
}
cout<<CercaEl(A,dim,x);
return 0;
}
--- i due messaggi sono stati uniti ---
il secondo:

Codice:
#include <iostream>

using namespace std;



int ElComune(int A[],int B[], int dim)
{
    int conta=0;
    for(int i=0;i<dim;i++)
    {
        for(int j=0;j<dim;j++)
        {
        if(A[i]==B[j])
        conta++;
        }
    }
        return conta;
}
int main()
{
    int dim;
    cin>>dim;
    int A[dim];
    int B[dim];
    for(int i=0;i<dim;i++)
    {
        cin>>A[i];
        cout<<endl;

    }
    for(int j=0;j<dim;j++)
    {
        cin>>B[j];
        cout<<endl;
    }
    cout<<ElComune(A,B,dim);


}
 
Ultima modifica:
Sono fatti bene adesso. Tuttavia sul secondo c'e' un dubbio non da poco. Se per esempio ho

A = [1,2,3,4,1,5,6,7]
B = [1,2,3,4,5,6,7,8]

Siccome 1 c'e' due volte in A, lui me lo conta come 2 occorrenze. Ma la traccia potrebbe voler dire che gli interessi il numero di cooccorrenze dell'oggetto, cioe' del simbolo 1. Cioe' quei due 1 in A dovrebbero essere valutati una sola volta. In questo caso saresti costretto per prima cosa a fare il pruning delle due matrici, eliminando gli elementi duplicati in ognuna di esse.
 
Comunque se vuoi sorprendere il tuo prof. puoi implementare una ricerca binaria (o dicotomica).
Altrimenti ti consiglio di chiamare la funzione che hai già scritto tu (quella che confronta da inizio a fine array) int ricercaLineare(const int*, int, int) per il futuro.
 
In effetti si la tua seconda traccia potrebbe andar bene per come l'hai scritta ma ovviamente c'è il caso che ti è stato detto che andrebbe gestito in altro modo. Quindi se a te basta come l'hai scritta tu ok, altrimenti va cambiato come ti è stato suggerito cioè riscrivere gli array senza doppioni e applicare la procedura.
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top