Problema con somma elementi array usando funzioni

di Anonimizzato25148 il
17 risposte
Ciao a tutti, ho creato un programma che dovrebbe sommare gli elementi dispari di un array, che metto qua sotto
//Sommare gli elementi dispari di un array
#include <stdio.h>
#include <stdbool.h>

void leggiArray(int *a, int n){
	int i;
	printf("Inserisci lunghezza array\n");
	scanf("%d",&n);
	for(i=0;i<n;i++){
		printf("Inserisci elemento %d dell'array\n",i);
		scanf("%d",&a[i]);
	}
}

bool isDispari(const int *a, int n){
	int i;
	for(i=0;i<n;i++)
		return (a[i]%2)==1;
}

int sommaDisp(int *a, int n){
	int i,sD=0;
	int *s;
	for(i=0;i<n;i++)
		if(!isDispari(a,2))
			sD+=s[i];
	return sD;
}
	
int main(){
	int a,n;
	leggiArray(&a,n);
	printf("La somma e' %d",sommaDisp(a,n));

	return 0;
}
Gli "errori" che mi da sono questi:
array.c:33:36: warning: passing argument 1 of 'sommaDisp' makes pointer from integer without a cast [-Wint-conversion]
printf("La somma e' %d",sommaDisp(a,n));
^
array.c:21:5: note: expected 'int *' but argument is of type 'int'
int sommaDisp(int *a, int n){
Ho provato ad interpretarli, perciò ho cambiato gli argomenti delle funzioni togliendo il *, però a quel punto mi da altri errori..
Come dovrei fare per farlo funzionare? (Le funzioni le devo usare per forza)

17 Risposte

  • Nel main a deve essere un array non un int
  • oregon ha scritto:


    Nel main a deve essere un array non un int
    Ho provato a dichiararla come a, ma non funziona comunque.
    Sicuramente ho sbagliato qualcos'altro, non capisco cosa però
  • Hai provato cosa?
  • A dichiararla come array...
  • Come ?

    Dai tutte le info ...
  • Int main(){
    int n;
    int a[n];
    leggiArray(a,n);
    printf("La somma e' %d",sommaDisp(a,n));

    return 0;
    }
  • Il valore di n non è definito. Non puoi utilizzarlo per l'array se non ha un valore.
  • Ok, come faccio allora?
  • Scusa ma quanti sono gli elementi da leggere?
  • N elementi, n è inserito da tastiera
  • Allora prima devi inserire n da tastiera e poi dichiarare l'array.

    Quindi queste

    printf("Inserisci lunghezza array\n");
    scanf("%d",&n);

    vanno nel main e non nella funzione. E subito dopo la scanf la dichiarazione dell'array
  • Adesso il compilatore non mi da più errori, però evidentemente ce ne sono altri siccome, facendo delle prove, la somma mi esce sempre 0
  • Mostra il codice!
  • E' uguale a quello che ho messo all'inizio..
    //Sommare gli elementi dispari di un array
    
    #include <stdio.h>
    #include <stdbool.h>
    
    bool isDispari(const int *a, int n){
    	int i;
    	for(i=0;i<n;i++)
    		return (a[i]%2)==1;
    }
    
    int sommaDisp(int *a, int n){
    	int i,sD=0;
    	int *s;
    	for(i=0;i<n;i++)
    		if(!isDispari(a,2))
    			sD+=s[i];
    	return sD;
    }
    	
    int main(){
    	int n,i;
    	printf("Inserisci lunghezza array");
    	scanf("%d",&n);
    	int a[n];
    		for(i=0;i<n;i++){
    		printf("Inserisci elemento %d dell'array\n",i);
    		scanf("%d",&a[i]);
    	}
    	printf("La somma e' %d",sommaDisp(a,n));
    
    	return 0;
    }
Devi accedere o registrarti per scrivere nel forum
17 risposte