Grazie per l'aiuto

di il
9 risposte

Grazie per l'aiuto

Salve a tutti per iniziare, sono nuovo sia del forum, sia del linguaggio C.
Da qualche giorno provo a scrivere un programma che mi permette di riempire un vettore con numeri, verificare qual'è il valore massimo, e poi contare quante volte questo valore massimo si ripete all'interno del vettore.Il mio problema è quando devo contare le ricorsioni vi posto il codice, mi scuso per l'intendazione, ma non ho ancora capito come si intenda.
#include <stdio.h>

#define NMAX 20

void main()
{
    int vett[NMAX];
    int a[NMAX];
    int n;     
    int x;   
    int i;    
    int max;
    int cnt;  

    printf("Numero di elementi del vettore: ");
    scanf("%d", &n);

    printf("Immettere da tastiera i %d elementi interi del vettore\n", n);
    for(i=0; i<=n-1; i++) {
        printf("Elemento in posizione [%d]: ", i);
        scanf("%d", &vett[i]);

    }
    max=a[0]; 
            for (i=1;i<NMAX;i++)
             {
                if (a[i]>max) { 
                max=a[i];
                }                               
             }
             printf("\nIl valore massimo e': %d",max);

    cnt=0;              
    for(i=0; i<=n-1; i++)
        if(vett[i]==max)   
            cnt=cnt+1; 

    printf("Il valore %d ricorre %d volte\n", max, cnt);
    getch();
}

9 Risposte

  • Re: Grazie per l'aiuto

    Pensalo così:
    leggi da input i valori del vettore.

    Trova il massimo con un ciclo for.
    In un altro ciclo for conta quante volte sto massimo compare nel vettore. Non hai bisogno di un altro vettore chiamato a[NMAX]. Ovviamente questo è un metodo anche se non il più veloce.
    esempio:
    
    #include <stdio.h>
    
    #define NMAX 20
    
    void main()
    {
    	int vett[NMAX];
    	int n;     
    	int x;   
    	int i;   
    	int max;
    	int cnt; 
    
    	printf("Numero di elementi del vettore: ");
    	scanf("%d", &n);
    
    	printf("Immettere da tastiera i %d elementi interi del vettore\n", n);
    	for(i=0; i<=n-1; i++) {
    		printf("Elemento in posizione [%d]: ", i);
    		scanf("%d", &vett[i]);
    
    	}
    	max=vett[0];
    	for (i=1;i<NMAX;i++)
    	{
    		if (vett[i]>max) {
    			max=vett[i];
    		}                               
    	}
    	printf("\nIl valore massimo e': %d",max);
    
    	cnt=0;             
    	for(i=0; i< n; i++)
    		if(vett[i]==max)   
    			cnt=cnt+1;
    
    	printf("Il valore %d ricorre %d volte\n", max, cnt);
    }
    
  • Re: Grazie per l'aiuto

    Nn ho capito...se non sbaglio ho usato un ciclo for per contare, se hai provato a far partire il programma, da un errore tipo di codifica....
  • Re: Grazie per l'aiuto

    Scusa, il codice che hai postato tu a te funziona? perchè a me da lo stesso errore del mio e mi era sembrato che non avevi apportato modifiche, ma ora sto vedendo che hai eliminato il vettore superfluo, però a me non funziona cioè compila ma poi mi da il solito errore di codifica
  • Re: Grazie per l'aiuto

    Che vuol dire errore di codifica? Il codice l'ho compilato ed eseguito e funziona.
  • Re: Grazie per l'aiuto

    Praticamente mi da valori assurdi, in particolare come valore max mi da il valore max del range dei doble, e come risultato delle ricorrenze 0
  • Re: Grazie per l'aiuto

    E' vero cambia sta riga:
    
    for (i=1;i<n;i++)  //cambia da NMAX a n
       {
          if (vett[i]>max) {
             max=vett[i];
          }                               
       }
    
  • Re: Grazie per l'aiuto

    Grazie mille, era da due giorni che cercavo qst errore, ora potresti darmi delle dritte in generale sull'indentazione?(non so se si scrive così)
    P.S devo seguire l'ANSI C
  • Re: Grazie per l'aiuto

    Non ci sono regole solo il buon senso di scrivere un codice il più chiaro possibile.
    Leggi quà anche se in inglese
    http://en.wikipedia.org/wiki/Indent_styl
  • Re: Grazie per l'aiuto

    Grazie
Devi accedere o registrarti per scrivere nel forum
9 risposte