Programma in C "Ricerca di un dato valore...e posizione
Salve ragazzi, vi posto una traccia che non riesco proprio a risolvere, vi posto quello che son riuscito a fare e il problema del mio programma è che non riesco a distinguere le posizioni quando il valore è presente più di una volta.
Qualcuno può darmi un aiuto?
Ricerca di un dato valore in uno array monodimensionale di interi con indicazione della posizione se il valore è presente più volte indicare il numero delle volte e le posizioni
#include
//il programma ricerca un dato valore e indica il numero di volte presente e le rispettive posizioni//
main()
{
int a[5], i ,posizione, volte ,pos[5], cerca;
printf("Inserisci il valore da cercare\n");
scanf("%d",&cerca);
printf("inserire i valori della sequenza\n");
volte=0;
for(i=0; i<5; i++)
{
scanf("%d",&a);
}
for(i=0; i<5; i++)
{
if(cerca==a)
{
volte=volte+1;
posizione=i+1;
}
}
printf("il valore cercato %d è presente %d volta nella posizione",cerca,volte);
for(i=0; i<5; i++)
{
printf("%d ",posizione);
}
}
Qualcuno può darmi un aiuto?
Ricerca di un dato valore in uno array monodimensionale di interi con indicazione della posizione se il valore è presente più volte indicare il numero delle volte e le posizioni
#include
//il programma ricerca un dato valore e indica il numero di volte presente e le rispettive posizioni//
main()
{
int a[5], i ,posizione, volte ,pos[5], cerca;
printf("Inserisci il valore da cercare\n");
scanf("%d",&cerca);
printf("inserire i valori della sequenza\n");
volte=0;
for(i=0; i<5; i++)
{
scanf("%d",&a);
}
for(i=0; i<5; i++)
{
if(cerca==a)
{
volte=volte+1;
posizione=i+1;
}
}
printf("il valore cercato %d è presente %d volta nella posizione",cerca,volte);
for(i=0; i<5; i++)
{
printf("%d ",posizione);
}
}
Risposte
Terminato il ciclo di ricerca, dovresti testare la variabile "volta"
Per volta = 0 --> Il carattere non è presente
Per volta = 1 --> Il carattere è presente ( e puoi visualizzare dove si trova il carattere, ovvero la variabile posizione)
Per volta > 1 --> Il carattere è presente piu volte, e quindi visualizzi proprio "volta"
Per volta = 0 --> Il carattere non è presente
Per volta = 1 --> Il carattere è presente ( e puoi visualizzare dove si trova il carattere, ovvero la variabile posizione)
Per volta > 1 --> Il carattere è presente piu volte, e quindi visualizzi proprio "volta"
si ok su questo ci sono...però il programma mi chiede nel caso sia presente + volte di dirgli la posizione
non so se è chiaro

SI, è vero.
In questo caso, stabilito che VOLTE > 1, potresti rifare di nuovo il ciclo di ricerca, ed ogni qualvolta riesce il carattere lo visualizzi.
Oppure fai un solo ciclo, visualizzi le posizioni man mano che incontri il carattere, e SOLO alla fine sarai in grado il numero di volte che il carattere è presente.
In questo caso, stabilito che VOLTE > 1, potresti rifare di nuovo il ciclo di ricerca, ed ogni qualvolta riesce il carattere lo visualizzi.
Oppure fai un solo ciclo, visualizzi le posizioni man mano che incontri il carattere, e SOLO alla fine sarai in grado il numero di volte che il carattere è presente.
potresti unificare ricerca e le posizioni in un unico for, cioè (anche se sprechi piu risorse:
ti crei un array di interi vuoto (chiamalo tipo posizioni) della stessa dimensione di quello dell'input, poi fai un for sul tuo array di input: se trovi il carattere che cerchi incrementi la tua variabile volte e in piu nell'array che hai creato (posizioni) metti nella cella i esima (quindi quella corrente, dove hai appena trovato il carattere che cerchi, un 1. quindi una volta che hai scandito tutto l'array, in posizioni avrai un 1 nelle posizioni corrispondenti al carattere cercato. quindi stampi. questo modo è molto macchinoso, mentre un'altro piu immediato e che ti fa risparmiare risorse (non devi allocare un nuovo array) è questo:
sempre un unico for per scandire l'array, appena trovi il carattere che cerchi incrementi volte, e stampi la posizione in cui è il carattere (quindi stampando semplicemente l'indice del for). alla fine del ciclo stampi poi la tua variabile volte.
ti crei un array di interi vuoto (chiamalo tipo posizioni) della stessa dimensione di quello dell'input, poi fai un for sul tuo array di input: se trovi il carattere che cerchi incrementi la tua variabile volte e in piu nell'array che hai creato (posizioni) metti nella cella i esima (quindi quella corrente, dove hai appena trovato il carattere che cerchi, un 1. quindi una volta che hai scandito tutto l'array, in posizioni avrai un 1 nelle posizioni corrispondenti al carattere cercato. quindi stampi. questo modo è molto macchinoso, mentre un'altro piu immediato e che ti fa risparmiare risorse (non devi allocare un nuovo array) è questo:
sempre un unico for per scandire l'array, appena trovi il carattere che cerchi incrementi volte, e stampi la posizione in cui è il carattere (quindi stampando semplicemente l'indice del for). alla fine del ciclo stampi poi la tua variabile volte.
Grazie mille ragazzi ho risolto il programma brillantemente
