Array in c

di il
6 risposte

Array in c

Ciao ragazzi ho provato a scrivere questo programma in c:

"scrivi un programma che legga un array vetA di n interi e costruisca un array vetB di n numeri tale che vetB sia dato dalla media aritmetica dei primi i elementi di vetA. al temine delle elaborazioni visualizza il vettore vetB."

io l'ho risolto in questo modo( ma messo in esecuzione non visualizza vetB e mi si blocca l'esecuzione ). vi sarei molto riconoscente se mi aiutaste... grazie mille .
   
#include<stdio.h>
#include<stdlib.h>
int main(void){
	int  i,k,cont,n;
	cont=0;
	printf("inserisci la dimensione del vetore ");
	scanf("%d",&n);
	int vetA[n];
	int vetB[n];
	for(i=0;i<n;i++){
		printf("inserisci un numero ");
		scanf("%d",&vetA[i]);
	}
	for(i=0;i<n;i++){
		for(k=0;k<i;k++){
		    cont=cont+vetA[k];
		}
		vetB[i]=cont/k;
	}
	for(i=0;i<n;i++){
		printf("vetB[i]");
	}
	system("PAUSE");
}
 

6 Risposte

  • Re: Array in c

    Ciao!
    1- Credo che vetB[n] debba essere un float e non un int perchè non è detto che la divisione ti restituisca un intero!
    2- Prova a stampare a video mano mano "k" e vedi se contiene davvero l'incremento.
    3- Manca il return 0 !
    4-
    
    for(i=0;i<n;i++){
          for(k=0;k<i;k++){
              cont=cont+vetA[k];
          }
          vetB[i]=cont/k;
       }
    
    All'inizio i vale 0 e k vale 0 essendo 0 < 0 false nel ciclo for annidato non ti entra proprio il programma quindi fa una divisione 0/0 essendo k = 0 e cont = 0 !

    Fammi sapere !
  • Re: Array in c

    Grazie mille proverò ad apportare le modifiche che mi hai suggerito!!(non avevo notato lo 0<0 ora proverò a cambiarlo)
  • Re: Array in c

    Marino_c++ ha scritto:


    Ciao!
    1- Credo che vetB[n] debba essere un float e non un int perchè non è detto che la divisione ti restituisca un intero!
    2- Prova a stampare a video mano mano "k" e vedi se contiene davvero l'incremento.
    3- Manca il return 0 !
    4-
    
    for(i=0;i<n;i++){
          for(k=0;k<i;k++){
              cont=cont+vetA[k];
          }
          vetB[i]=cont/k;
       }
    
    All'inizio i vale 0 e k vale 0 essendo 0 < 0 false nel ciclo for annidato non ti entra proprio il programma quindi fa una divisione 0/0 essendo k = 0 e cont = 0 !

    Fammi sapere !
    grazie mille ora ho corretto e pare che va solo che la media matematica risulta errata... ecco il codice:
    
    #include<stdio.h>
    #include<stdlib.h>
    int main(void){
    	int  i,k,cont,n,somma;
    	cont=0;
    	somma=0;
    	printf("inserisci la dimensione del vetore ");
    	scanf("%d",&n);
    	int vetA[n];
    	double vetB[n];
    	for(i=0;i<n;i++){
    		printf("inserisci un numero ");
    		scanf("%d",&vetA[i]);
    	}
    	for(k=0;k<n;k++){
    		for(i=0;i<=k;i++){
    		    somma=somma+vetA[i];
    		    cont=cont+1;
    		}
    		vetB[k]=(double)somma/cont;
    	}
    	for(k=0;k<n;k++){
    		printf("%g\n",vetB[k]);
    	}
    	system("PAUSE");
    }
    
    
  • Re: Array in c

    Secondo te cont=0 è messo nel posto giusto?
  • Re: Array in c

    Concordo con oregon, rifletti su dove sta cont = 0 e dove invece dovrebbe essere...e capirai l'errore
  • Re: Array in c

    oregon ha scritto:


    Secondo te cont=0 è messo nel posto giusto?
    Hai ragione grazie... dovrebbe andare dopo il primo for giusto?
Devi accedere o registrarti per scrivere nel forum
6 risposte