[RISOLTO][C++] Array calcolo delle occorrenze

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Tino-Tom
Prode Principiante
Messaggi: 68
Iscrizione: venerdì 29 agosto 2014, 13:00
Distribuzione: Ubuntu 64bit

[RISOLTO][C++] Array calcolo delle occorrenze

Messaggio da Tino-Tom »

Salve a tutti, devo scrivere questo programma in c++ :

Scrivere un programma in C++ che prenda in input dall'utente n valori interi memorizzandoli in un'array.
Implementare Selection Sort e utilizzarlo per ordinare l'array. Trovare e stampare a video:
• l'array ordinato;
• il valore più piccolo, il più grande e quello col maggior numero di occorrenze.

Fino al valore più grande e più piccolo ci sono ! Il problema e che non riesco a capire come calcolare il valore col maggior numero di occorrenze. Io ho sempre inserito un numero in input e con un contatore mi sono calcolato quante volte compare, qui invece vuole sapere direttamente qual'è quello col maggior numero di occorrenze. Qualcuno potrebbe aiutarmiii :muro: :muro: :muro:

Ecco qui il mio codice cosi che potete vedere se fino al valore più piccolo e più grande è giusto

Codice: Seleziona tutto

#include<iostream>
using namespace std;
const int DIM=100;

void CaricaVettore(int v[DIM], int n){

	for(int i=0; i<n; i++)
	{
		cout<<"Inserisci il "<<i+1<<" elemento: ";
		cin>>v[i];
	}

}

void Stampa(int v[DIM], int n){

	for(int i=0; i<n; i++)
	{
		cout<<v[i]<<"\t";
	}
	cout<<endl;
}

void SelectionSort(int v[DIM], int n) {
    int min;

    for(int i=0;i<n;i++) 
    {
        min = i;
        for(int j=i+1;j<n;j++)
        {
            if(v[j] < v[min])
                min = j;
        }

    	int aux=v[i];
    	v[i]=v[min];
    	v[min]=aux;
    }
}

int RicercaMax(int v[DIM], int n){

	int max=0;

	max=v[0];
	for(int i=0; i<n; i++)
	{
		if(v[i]>max)
		{
			max=v[i];
		}
	}

	return max;
}

int RicercaMin(int v[DIM], int n){

	int min=0;

	min=v[0];
	for(int i=0; i<n; i++)
	{
		if(v[i]<min)
		{
			min=v[i];
		}
	}

	return min;
}

int main(){

	int vett[DIM], n;

	cout<<"Inserisci dimensione vettore: ";
	cin>>n;
	cout<<endl;

	CaricaVettore(vett,n);

	cout<<"\n***ECCO IL VETTORE***"<<endl;
	Stampa(vett,n);

	cout<<"\n***ECCO IL VETTORE ORDINATO***"<<endl;
	SelectionSort(vett,n);
	Stampa(vett,n);

	cout<<"\nIl valore piu' grande e': "<<RicercaMax(vett,n)<<endl;
	cout<<"Il valore piu' piccolo e': "<<RicercaMin(vett,n)<<endl<<endl;

}
Ultima modifica di Tino-Tom il sabato 14 maggio 2016, 14:30, modificato 1 volta in totale.
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

Re: [C++] Array calcolo valore col maggior numero di occorre

Messaggio da SuperStep »

per calcolare il valore con il maggior numero di occorrenze basta creare una struttura di tipo matrice (prima righa numero, seconda riga occorrenze) oppure un HashMap (numero, occorrenze) dove vai a riportare iterando sul vettore le occorrenze di ogni numero, dopo di che', fai una ricerca delle occorrenze maggiori e prendi il numero associato.
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
Tino-Tom
Prode Principiante
Messaggi: 68
Iscrizione: venerdì 29 agosto 2014, 13:00
Distribuzione: Ubuntu 64bit

Re: [C++] Array calcolo valore col maggior numero di occorre

Messaggio da Tino-Tom »

Potresti farmi vedere un'esempio ? Ancora sono alle prime armi e non capisco bene come si fa :cry:
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

Re: [C++] Array calcolo valore col maggior numero di occorre

Messaggio da SuperStep »

certo, eccolo:

Codice: Seleziona tutto

#include <iostream>

using namespace std;

const int DIM = 10;

int array  [DIM] = {0,1,2,3,3,3,4,4,8,9}; //inserisco qui l'arrai in modo che hai un esempio visibile, il 3 e' il numero con il maggior numero di occorrenze
int matrix [DIM][2];

/**
 * Questa funzione calcola le occorrenze di un array di 
 * dimensione @param2 e le posiziona in una matrice @param3
 * --------------------------
 * @param 1 - dimensione array/matrix(MAX)
 * @param 2 - array
 * @param 3 - matrice
 */
void calcolaOccorrenze(int, int [], int [DIM][2]);

/**
 * Questa funzione cerca un determinato elemento in una matrice
 * con dimensione passata come argomento
 * -------------------------- 
 * @param 1 - dimensione matrice
 * @param 2 - matrice
 * @param 3 - elemento da cercare
 * @return  - La posizione dell'elemento oppure -1 se non esiste
 */
int  exists(int, int[DIM][2], int);

/**
 * Questa funzione manda su stdout
 * il contenuto della matrice @param2
 * --------------------------
 * @param 1 - dimensione matrice
 * @param 2 - matrice
 */
void printMatrix(int, int[DIM][2]);

int
main(int argc, char * argv [])
{
	
	calcolaOccorrenze(DIM, array, matrix);
}

void
calcolaOccorrenze(int size, int a[], int b[DIM][2]){
	int i, matrixSize = 0;
	int pos;	
	for(int i=0; i<size; i++){
	    pos = -1;
		if((pos = exists(matrixSize,b,a[i])) == -1){
			b[matrixSize][0] = a[i]; //Setto il numero
			b[matrixSize][1] = 1;    //Setto le occorrenze (1 inizialmente)

			matrixSize ++;
		}
		else {
			b[pos][1]++; //Incremento le occorrenze
		}
	}

	printMatrix(matrixSize,b);
}

int
exists(int size, int matrix[DIM][2], int num){
	int i;

	for(i=0; i<size; i++){
		if(matrix[i][0] == num) return i;
	}

	return -1;
}

void
printMatrix(int size, int matrix[DIM][2]){
	int i;
	for(i=0; i<size; i++){
		cout << "il numero " << matrix[i][0] << " possiede " << matrix[i][1] << " Occorrenze." << endl;
	}
}
questo e' l'esempio di output:

Codice: Seleziona tutto

il numero 0 possiede 1 Occorrenze.
il numero 1 possiede 1 Occorrenze.
il numero 2 possiede 1 Occorrenze.
il numero 3 possiede 3 Occorrenze.
il numero 4 possiede 2 Occorrenze.
il numero 8 possiede 1 Occorrenze.
il numero 9 possiede 1 Occorrenze.
lascio a te l'arduo compito di prendere il numero con il piu' alto numero di occorrenze (in questo caso il numero 3 con 3 occorrenze) e farne cio' che vuoi.
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
Tino-Tom
Prode Principiante
Messaggi: 68
Iscrizione: venerdì 29 agosto 2014, 13:00
Distribuzione: Ubuntu 64bit

Re: [C++] Array calcolo valore col maggior numero di occorre

Messaggio da Tino-Tom »

Grazie mille dell'aiuto :D :D
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti