Errore esercizio C

di il
4 risposte

Errore esercizio C

Salve a tutti
Ho un problema per quanto riguarda un esercizio.
Praticamente devo moltiplicare due vettori utilizzando una funzione principale che chiama due funzioni e cioè leggi_vettore e prodotto_vettore .
Io l'ho fatto in questo modo:

#include <stdio.h>
#include <stdlib.h>

void leggi_vettore(float a[],float b[], int *len)
{
	int i,j,n;
	printf("Di quanti elementi deve essere il vettore? ");
	scanf("%d",&n);
	if(n>0 && n<=1000)
	{
		printf("Inserisci gli elementi del vettore a: \n");
		for(i=0;i<n;i++)
		{
			scanf("%f",&a[i]);
		}
		
		printf("Inserisci gli elementi del vettore b: \n");
		for (j=0; j<n;j++)
		{
			scanf("%f",&b[j]);
		}
	}
	else printf("Numero di elementi massimo 1000");
}

void prodotto_vettore(float a[],float b[], int *len)
{
	int i,j,n;
	float prodotto=1;
	if (n>0 && n<1000)
	{
		for(i=0; i<n;i++)
		{
			for(j=0;j<n;j++)
			{
				prodotto=a[i]*b[j];
			}
		}

		printf("Il prodotto tra il vettore a e il vettore b e': %f",prodotto);
	}
		else printf("numero di elementi non previsto\n\n");
}

int main()
{
	int i,j,n;
	float a[n],b[n];
	leggi_vettore(a[n],b[n],&n);
	prodotto_vettore(a[n],b[n],&n);
	
	system("pause");
	
	return 0;
}
Innanzitutto sono sicuro di aver sbagliato il prodotto perchè devo sono sicuro di dover creare un vettore c contenente il prodotto di a*b[j] ma dico sinceramente che non so come fare
e poi mi restituisce questo errore:

[Error] cannot convert 'float' to 'float*' for argument '1' to 'void leggi_vettore(float*, float*, int*)'

in questa riga:

leggi_vettore(a[n],b[n],&n);

Qualcuno può aiutarmi?

4 Risposte

  • Re: Errore esercizio C

    Ciao e benvenuto sul forum!
    Te l'ho corretto, prova a darci un'occhiata e vedi se ti ritrovi.
    
        #include <stdio.h>
        #include <stdlib.h>
    
        void leggi_vettore(float a[],float b[], int n)
        {
           int i,j;
           if(n>0 && n<=1000)
           {
              printf("Inserisci gli elementi del vettore a: \n");
              for(i=0;i<n;i++)
              {
                 scanf("%f",&a[i]);
              }
    
              printf("Inserisci gli elementi del vettore b: \n");
              for (j=0; j<n;j++)
              {
                 scanf("%f",&b[j]);
              }
           }
           else printf("Numero di elementi massimo 1000");
        }
    
        void prodotto_vettore(float a[],float b[], int n)
        {
           int i, j;
           if (n>0 && n<1000) {
              for(i=0; i<n;i++) {
                    b[i]=a[i]*b[i];
              }
    
            for(i=0; i<n; i++) {
                printf("%f  ", b[i]);
            }
           }
              else printf("numero di elementi non previsto\n\n");
        }
    
        int main()
        {
           int i, j, n;
           printf("Inserire il numero di elemementi: ");
           scanf("%d", &n);
           float a[n],b[n];
           leggi_vettore(a, b, n);
           prodotto_vettore(a, b, n);
    
           system("pause");
    
           return 0;
        }
    

  • Re: Errore esercizio C

    Grazie per la risposta, gentilissimo!
    Quindi non bisogna inserire il tutto in un array c?
    E poi cosa significava quell'errore?
  • Re: Errore esercizio C

    PierIzzle ha scritto:


    Grazie per la risposta, gentilissimo!
    Quindi non bisogna inserire il tutto in un array c?
    Non è necessario: il vettore b (o anche a) non serve più dopo aver fatto il prodotto, quindi lo puoi sovrascrivere risparmiando memoria.

    PierIzzle ha scritto:


    E poi cosa significava quell'errore?
    Quei a[n] e b[n] non indicavano i vettori ma solo l'n-esimo elemento dei vettori. Infatti ti diceva che si aspettava un float* (puntatore a float inteso come array) e tu gli passavi un float(singolo valore).
  • Re: Errore esercizio C

    Ah ho capito! Grazie mille per la risposta
Devi accedere o registrarti per scrivere nel forum
4 risposte