Errore che non riesco a capire..

di il
12 risposte

Errore che non riesco a capire..

Buonasera , qualcuno saprebbe dirmi come fare a conoscere la dimensione del vettore b?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
      int *a;
      int *b;
      
      int i;
      int j=0;
      int n;
      srand(time(NULL));
      int somma;
      
      double media;
      somma=0;
      media=0.0;
      int minimo=0;
      int massimo=0;
   
      
      printf("Inserire numero elementi:\t");
      scanf("%d",&n);
      a=(int*)malloc(n*sizeof(int));
      b=(int*)malloc(n*sizeof(int));
      
       for(i=0;i<=n-1;i++){
       	
       	
                          
            
			
			
			
			
			
		                     printf("Inserire elemento a[%d]:\t\t",i);
                             scanf("%d",&a[i]);
                             
                              if (a[i]%2==0){
                              
                                         
                             b[j]=a[i];
                             j++;	
                             	
                             	
                             }
                         }
                     
                            
                            
							 
                        
                             
     for(j=0;j<=n-1;j++){
      minimo=massimo=b[j];
      somma=somma+b[j];
      media=(double)somma/n;
      }
      for(j=0;j<=n-1;j++){
      if(b[j]>massimo) massimo=b[j];
      if(b[j]<minimo) minimo=b[j];}
      printf("\n\nSomma=%4d\tMedia=%4lf\tMinimo=%4d\tmassimo=%4d\t\n\n",somma,media,minimo,massimo);
      
      system("pause");
      }                   


12 Risposte

  • Re: Errore che non riesco a capire..

    E' j-1
  • Re: Errore che non riesco a capire..

    Ma puo essere mai che dentro i cicli for per il calcolo di minimo massimo somma e media debba mettere j-1 al posto di n?
  • Re: Errore che non riesco a capire..

    Il minimo e il massimo devi trovarli solo tra i numeri pari o per tutti i numeri inseriti?
  • Re: Errore che non riesco a capire..

    Per i pari cosi come somma e media..
  • Re: Errore che non riesco a capire..

    I pari sono contati da j e il totale è j-1, altrimenti a che servirebbe j nella if ?
  • Re: Errore che non riesco a capire..

    Non ho capito
    minimo=massimo=b[j];
  • Re: Errore che non riesco a capire..

    Il valore finale della for per calcolare minimo e massimo è j-1 .... non so come dirtelo diversamente.

    Se j-1 è il massimo non potrai usare j nella for per la ricerca ... usa un'altra variabile ...
  • Re: Errore che non riesco a capire..

    E poi, quando dichiari b dovresti settarlo a un valore predefinito(altrimenti le posizioni non settate contengono valori random)
  • Re: Errore che non riesco a capire..

    ale99 ha scritto:


    E poi, quando dichiari b dovresti settarlo a un valore predefinito(altrimenti le posizioni non settate contengono valori random)
    Questo in realtà è poco importante ...
  • Re: Errore che non riesco a capire..

    C'ho messo tanto ma sono riuscito a capire cosa sbagliavo e perchè soprattutto.
  • Re: Errore che non riesco a capire..

    Ovvero ?
  • Re: Errore che non riesco a capire..

    Daniele per l'ennesima volta disinstalla dev-c++ e leggi questa faq.
    Se non riesci a seguire questo consiglio base è inutile spiegare il resto.
    Secondo ti posto del codice solo per farti vedere una corretta indentazione e un corretto uso dei cicli for.
    ATTENTO gli spazi non sono messi a caso ma servono per capire meglio il codice.
    ATTENTO le variabili non sono messe a caso ma servono a capire meglio il codice.
    Se non implementi questi semplici aiuti allora domani sarai di nuovo sul forum con l'hello world che non va!
    
    int main()
    {
    
        int n;
        printf("Inserire numero elementi:\t");
        scanf("%d",&n);
    
        int* a=(int*) malloc( n * sizeof(int) );
        int* b=(int*) malloc( n * sizeof(int) );
    
        int i,j;
        for(i = 0 , j = 0 ; i < n; i++)
        {
            printf("Inserire elemento a[%d]:\t\t",i);
            scanf("%d",&a[i]);
    
            if ( a[i] % 2 == 0 )
                b[j++] = a[i];
        }
    
        int somma = 0;
        double media = 0.0;
        int minimo ,massimo;
        if (j == 0)
        {
            printf("Non ci sono pari\n");
            return 0;
        }
        minimo = massimo = b[0];
    
        for( i = 0 ; i < j ; i++)
        {
            if( b[i] >  massimo) massimo = b[i];
            if( b[i] < minimo) minimo = b[i];
            somma += b[j];
        }
    
        media = (double)somma / n;
        printf("\n\nSomma=%4d\tMedia=%4lf\tMinimo=%4d\tmassimo=%4d\t\n\n",somma,media,minimo,massimo);
    
        return 0;
    }
    
Devi accedere o registrarti per scrivere nel forum
12 risposte