DeeezNuuutz
27-08-2004, 20:04
tra poco devo dare un esame di informatica, vorrei avere qualche chiarimento sul void, vi posto un esercizio (che ho partcamente copiato dalla spiegazione!!!:rolleyes: ) non capisco la differenza tra int e void se poi nell'esercizio le funizioni sembrano uguali, quando e perchè si usa?
Non sò se il void serva a molte altre cose ma a me serve solo in funzioni tipo queste, molto semplici (l'esame è abbastanza facile), quindi non sparatemi robe incredibili:D
Un'altra cosa, in Dev-C++ mi da un errore " [Linker error] undefined reference to `uguali(int*, int*)' " che vuol dire?
ecco l'esercizio:
/* Scrivere un programma che, dopo aver letto dallo Std. Input gli elementi di
due vettori di numeri interi, di dimensione 5:
- controlli se i due vettori sono identici, e stampi sullo Std. Output
un messaggio opportuno
- calcoli e stampi sullo Std. Output il vettore ottenuto come somma dei due
- calcoli e stampi sullo Std. Output il prodotto scalare dei due vettori
Si definisca un nuovo tipo di dati per rappresentare vettori di 5 elementi
Le tre operazioni precedenti (esclusa la stampa sullo Std. Output), devono
essere definite come funzioni C */
#include <stdlib.h>
#include <stdio.h>
#define N 5
typedef int Vettore [N];
int uguali (Vettore, Vettore);
void somma (Vettore, Vettore, Vettore);
int prodsca (Vettore, Vettore);
main()
{
Vettore v1, v2, v3;
int i, p;
printf ("Inserire i valori del primo vettore:\n");
for (i=0; i<N; i=i+1)
scanf ("%d", &v1[i]);
printf ("Inserire i valori del secondo vettore:\n");
for (i=0; i<N; i=i+1)
scanf ("%d", &v2[i]);
if (uguali(v1, v2) == 1) /* Verifica dell'uguaglianza dei vettori: */
printf ("I due vettori sono uguali.\n\n"); /* (vedi la prima funzione) */
somma (v1, v2, v3); /* Calcolo della somma dei vettori. */
printf ("La somma dei due vettori è:\n"); /* (vedi la seconda funzione) */
for (i=0; i<N; i=i+1);
printf ("%d", v3[i]);
p=prodsca(v1, v2); /* Calcolo del prodotto scalare. */
printf ("Il prodotto scalare dei due vettori è: %d\n\n", p); /* (vedi la terza funzione) */
system ("PAUSE");
}
int ugali (Vettore v1, Vettore v2)
{
int i;
for (i=0; i<N; i=i+1)
if (v1[i] != v2[i]);
return 0;
return 1;
}
void somma (Vettore v1, Vettore v2, Vettore v3)
{
int i;
for (i=0; i<N; i=i+1);
v3[i]=v1[i]+v2[i];
}
int prodsca (Vettore v1, Vettore v2)
{
int i, p;
p=0;
for (i=0; i<N; i=i+1)
p=p+v1[i]*v2[i];
return p;
}
Non sò se il void serva a molte altre cose ma a me serve solo in funzioni tipo queste, molto semplici (l'esame è abbastanza facile), quindi non sparatemi robe incredibili:D
Un'altra cosa, in Dev-C++ mi da un errore " [Linker error] undefined reference to `uguali(int*, int*)' " che vuol dire?
ecco l'esercizio:
/* Scrivere un programma che, dopo aver letto dallo Std. Input gli elementi di
due vettori di numeri interi, di dimensione 5:
- controlli se i due vettori sono identici, e stampi sullo Std. Output
un messaggio opportuno
- calcoli e stampi sullo Std. Output il vettore ottenuto come somma dei due
- calcoli e stampi sullo Std. Output il prodotto scalare dei due vettori
Si definisca un nuovo tipo di dati per rappresentare vettori di 5 elementi
Le tre operazioni precedenti (esclusa la stampa sullo Std. Output), devono
essere definite come funzioni C */
#include <stdlib.h>
#include <stdio.h>
#define N 5
typedef int Vettore [N];
int uguali (Vettore, Vettore);
void somma (Vettore, Vettore, Vettore);
int prodsca (Vettore, Vettore);
main()
{
Vettore v1, v2, v3;
int i, p;
printf ("Inserire i valori del primo vettore:\n");
for (i=0; i<N; i=i+1)
scanf ("%d", &v1[i]);
printf ("Inserire i valori del secondo vettore:\n");
for (i=0; i<N; i=i+1)
scanf ("%d", &v2[i]);
if (uguali(v1, v2) == 1) /* Verifica dell'uguaglianza dei vettori: */
printf ("I due vettori sono uguali.\n\n"); /* (vedi la prima funzione) */
somma (v1, v2, v3); /* Calcolo della somma dei vettori. */
printf ("La somma dei due vettori è:\n"); /* (vedi la seconda funzione) */
for (i=0; i<N; i=i+1);
printf ("%d", v3[i]);
p=prodsca(v1, v2); /* Calcolo del prodotto scalare. */
printf ("Il prodotto scalare dei due vettori è: %d\n\n", p); /* (vedi la terza funzione) */
system ("PAUSE");
}
int ugali (Vettore v1, Vettore v2)
{
int i;
for (i=0; i<N; i=i+1)
if (v1[i] != v2[i]);
return 0;
return 1;
}
void somma (Vettore v1, Vettore v2, Vettore v3)
{
int i;
for (i=0; i<N; i=i+1);
v3[i]=v1[i]+v2[i];
}
int prodsca (Vettore v1, Vettore v2)
{
int i, p;
p=0;
for (i=0; i<N; i=i+1)
p=p+v1[i]*v2[i];
return p;
}