-

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

Stato
Discussione chiusa ad ulteriori risposte.
#1
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 Attivo
3,101
1,393
Hardware Utente
Sistema Operativo
Windows 10 Pro
#2
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[]
 
#3
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:
#4
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 Attivo
2,919
663
Hardware Utente
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
Hard Disk
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
Scheda Video
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
Alimentatore
RM550X
Case
NZXT S340
Periferiche
Cooler Master XT; Razer Abyssus
Sistema Operativo
Windows 10 Pro
#5
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.
 
#7
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.

Discussioni Simili


Entra