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

Stato
Discussione chiusa ad ulteriori risposte.

MPG

Utente Attivo
544
4
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.
????????
 

Ibernato

Utente Èlite
4,328
2,047
OS
Windows 10 Pro / Ubuntu 22.04
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[]
 

MPG

Utente Attivo
544
4
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;
}
Post unito automaticamente:

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:

pabloski

Utente Èlite
2,868
916
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.
 

_Achille

Utente Èlite
3,067
725
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
HDD
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
GPU
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
PSU
RM550X
Case
NZXT S340
Periferiche
Anne Pro 2, Razer Abyssus
OS
Windows 10 Pro
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.
 

Eduadie

Utente Attivo
204
24
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.

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili