PDA

Visualizza la versione completa : [C] differenza tra procedura e funzione


sizeof
15-10-2013, 19:16
Ciao, qualcuno sa dirmi la differenza tra procedura e funzione ? e cosa una procedura parametrica?
Grazie

oregon
15-10-2013, 21:00
Queste cose le trovi su google o su un libro ... o anche in altre discussioni su questo forum ,,, falla qualche ricerca ...

http://forum.html.it/forum/showthread/t-988308.html

sizeof
16-10-2013, 09:31
Ok, in un esercizio che devo fare parla di una procedura parametrica a cui vengono forniti gli elementi N(dimensione vettori) A e B (vettori) e che restituisca gli elementi C(vettore delle medie dei vettori A e B). In questo caso per "procedura parametrica" intende Funzione?

oregon
16-10-2013, 09:57
Intende una funzione

void

che accetta alcuni parametri, N per valore e gli altri per indirizzo

sizeof
16-10-2013, 16:24
Intende una funzione

void

che accetta alcuni parametri, N per valore e gli altri per indirizzo

scusa, ma una funzione void non restituisce nulla ?

oregon
16-10-2013, 16:30
S cos. Quello che restituisci lo fai tramite i puntatori passati (vedi terzo array)

sizeof
16-10-2013, 16:37
Ho fatto in questo modo, ma mi da errore di segmentation fault e non capisco dov' l'errore



#include <stdio.h>
#define N 3

float* procedura(int a[], int b[], int size);

int main()
{
int A[N];
int B[N];
int i;
float* C;

printf("Inserisci i numeri del vettore A : \n");
for ( i = 0; i < N; i++ ) {
printf("Inserisci l'elemento %d di A : \n", i);
scanf("%d", &A[i]);
}

printf("Inserisci i numeri del vettore B : \n");
for ( i = 0; i < N; i++ ) {
printf("Inserisci l'elemento %d di B : \n", i);
scanf("%d", &B[i]);
}

C = procedura(A, B, N);

printf("Il vettore C : \n");
for ( i = 0; i < N; i++ ) {
printf("%f", C[i]);
printf("\n");
}

return 0;
}


float* procedura(int a[], int b[], int size)
{

int i;
float* c;

for ( i = 0; i < size; i++ ) {
c[i] = (( a[i] + b[i] ) / 2);
}


return c;
}


dove sbaglio ?

oregon
16-10-2013, 17:52
Mi sembrava di averti detto che la funzione era void e passavi anche C gi allocato ...

sizeof
16-10-2013, 17:57
#include <stdio.h>
#define N 3

void* procedura(int a[], int b[], int size);

int main()
{
int A[N];
int B[N];
int i;
float* C;

printf("Inserisci i numeri del vettore A : \n");
for ( i = 0; i < N; i++ ) {
printf("Inserisci l'elemento %d di A : \n", i);
scanf("%d", &A[i]);
}

printf("Inserisci i numeri del vettore B : \n");
for ( i = 0; i < N; i++ ) {
printf("Inserisci l'elemento %d di B : \n", i);
scanf("%d", &B[i]);
}

C = procedura(A, B, N);

printf("Il vettore C : \n");
for ( i = 0; i < N; i++ ) {
printf("%f", C[i]);
printf("\n");
}

return 0;
}


void* procedura(int a[], int b[], int size)
{

int i;
float* c;

for ( i = 0; i < size; i++ ) {
c[i] = (( a[i] + b[i] ) / 2);
}


return c;
}


ma come faccio a passare C gi allocato ?

oregon
16-10-2013, 18:00
Come hai fatto con A e B

Loading