PDA

Visualizza la versione completa : Procedure [C++]


Iena87
12-05-2004, 17:17
In classe oggi abbiamo studiato le procedure, i richiami a sottoprogrammi con void, svolto l'esercizio a casa con quel benedetto di un dev e come sempre mi da degli errori di sintassi, credo, a meno che il mio prof nn stava sballato stamattina.
Questo è il prog che ho scritto:


#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <conio.c>

const int n=4;
int mata[n][n], matb[n][n], matsomma[n][n], i, j;

int main(){
aquisizione_matrice_a();
aquisizione_matrice_b();
somma_matrici();
visualizzazione_matrice_a();
visualizzazione_matrice_b();
visualizzazione_matrice_somma();
getch();
return 0;
}

void aquisizione_matrice_a(void){
for(i=0;i<=n-1;i++)
for(j=0;j<=n-1;j++){
cout<<"\nDammi il valore della matrice a di posizione ["<<i<<"] ["<<j<<"] ";
cin>>mata[i][j];
}
clrscr();
}

void aquisizione_matrice_b(void){
for(i=0;i<=n-1;i++)
for(j=0;j<=n-1;j++){
cout<<"\nDammi il valore della matrice a di posizione ["<<i<<"] ["<<j<<"] ";
cin>>matb[i][j];
}
clrscr();
}

void somma_matrici(void){
for(i=0;i<=n-1;i++)
for(j=0;j<=n-1;j++)
matsomma[i][j]=mata[i][j]+matb[i][j];
clrscr();
}

void visualizzazione_matrice_a(void){
for(i=0;i<=n-1;i++){
cout<<"\n";
for(j=0;j<=n-1;j++)
cout<<mata[i][j] <<" ";
}
cout<<"\n\n";
}

void visualizzazione_matrice_b(void){
for(i=0;i<=n-1;i++){
cout<<"\n";
for(j=0;j<=n-1;j++)
cout<<matb[i][j] <<" ";
}
cout<<"\n\n";
}

void visualizzazione_matrice_somma(void){
for(i=0;i<=n-1;i++){
cout<<"\n";
for(j=0;j<=n-1;j++)
cout<<matsomma[i][j] <<" ";
}
cout<<"\n\n";
}

Dove stanno gli errori??? Grazie mille

andrea_NET-_DSL
12-05-2004, 19:33
Originariamente inviato da Iena87
In classe oggi abbiamo studiato le procedure, i richiami a sottoprogrammi con void, svolto l'esercizio a casa con quel benedetto di un dev e come sempre mi da degli errori di sintassi, credo, a meno che il mio prof nn stava sballato stamattina.
Questo è il prog che ho scritto:

.........

Dove stanno gli errori??? Grazie mille
il codice sembra corretto ma mancano i prototipi delle funzioni :fagiano:
Per poter usare funzioni dichiarate "sotto" il main() devi specificare "sopra" al main i loro prototipi.
Provalo cosi'...demmi se và :


#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <conio.c>

/* prototipi funzioni */
void aquisizione_matrice_a(void);
void aquisizione_matrice_b(void);
void somma_matrici(void);
void visualizzazione_matrice_a(void);
void visualizzazione_matrice_b(vodi);
void visualizzazione_matrice_somma(void);



const int n=4;
int mata[n][n], matb[n][n], matsomma[n][n], i, j;

int main(){
aquisizione_matrice_a();
aquisizione_matrice_b();
somma_matrici();
visualizzazione_matrice_a();
visualizzazione_matrice_b();
visualizzazione_matrice_somma();
getch();
return 0;
}

void aquisizione_matrice_a(void){
for(i=0;i<=n-1;i++)
for(j=0;j<=n-1;j++){
cout<<"\nDammi il valore della matrice a di posizione ["<<i<<"] ["<<j<<"] ";
cin>>mata[i][j];
}
clrscr();
}

void aquisizione_matrice_b(void){
for(i=0;i<=n-1;i++)
for(j=0;j<=n-1;j++){
cout<<"\nDammi il valore della matrice a di posizione ["<<i<<"] ["<<j<<"] ";
cin>>matb[i][j];
}
clrscr();
}

void somma_matrici(void){
for(i=0;i<=n-1;i++)
for(j=0;j<=n-1;j++)
matsomma[i][j]=mata[i][j]+matb[i][j];
clrscr();
}

void visualizzazione_matrice_a(void){
for(i=0;i<=n-1;i++){
cout<<"\n";
for(j=0;j<=n-1;j++)
cout<<mata[i][j] <<" ";
}
cout<<"\n\n";
}

void visualizzazione_matrice_b(void){
for(i=0;i<=n-1;i++){
cout<<"\n";
for(j=0;j<=n-1;j++)
cout<<matb[i][j] <<" ";
}
cout<<"\n\n";
}

void visualizzazione_matrice_somma(void){
for(i=0;i<=n-1;i++){
cout<<"\n";
for(j=0;j<=n-1;j++)
cout<<matsomma[i][j] <<" ";
}
cout<<"\n\n";
}

Xadoom
12-05-2004, 19:37
Comunque è sempre meglio oltre al codice postare pure l'errore che ti dà il compilatore!! :ciauz:

andrea_NET-_DSL
12-05-2004, 19:51
Originariamente inviato da Xadoom
Comunque è sempre meglio oltre al codice postare pure l'errore che ti dà il compilatore!! :ciauz:
certo il codice mi sembra corretto(oltre x il fatto della dichiarazione dei prototipi) ma se postavA pure il log di errori/warning del compilatore potevamo vedere ancora meglio :)

:ciauz: :D

Iena87
12-05-2004, 20:00
si scusate....nn ho postato la segnalazione d'errore :quipy:


cmq grazie mille , perchè dovevo proprio mettere la dichiarazione dei prtotipi.....devo dirlo domani al prof....o sarà ubriaco....perchè oggi ha detto che nn si trattava di funzioni vere e proprie quindi avevo escluso l'uso dei prototipi....grazie ancora :ciauz:

LeleFT
12-05-2004, 20:10
Forse avrà detto che non si trattava di funzioni vere e proprie in quanto, in altri linguaggi, esse vengono definite procedure, dato che "non hanno un valore di ritorno". In gergo si usa distinguere tra procedure e funzioni proprio per la presenza/assenza di ritorno valori. In analisi matematica, infatti, una funzione è qualcosa che, preso un input (dominio), restituisce un output (codominio).

PS: ho messo tra virgolette l'affermazione non hanno un valore di ritorno perchè, in realtà, anche il void può essere inteso come un valore di ritorno (siamo informatici, infatti, non matematici :gren: )


Ciao. :ciauz:

andrea_NET-_DSL
12-05-2004, 20:25
Originariamente inviato da LeleFT


PS: ho messo tra virgolette l'affermazione non hanno un valore di ritorno perchè, in realtà, anche il void può essere inteso come un valore di ritorno (siamo informatici, infatti, non matematici :gren: )


Ciao. :ciauz:

infatti restituiscono un VOID,ossia un qualcosa di nullo :)

:ciauz:

:gren:

ps in ogni caso i prototipi ci vanno cmq :stordita: :)

andrea_NET-_DSL
12-05-2004, 20:27
Originariamente inviato da Iena87
si scusate....nn ho postato la segnalazione d'errore :quipy:


cmq grazie mille , perchè dovevo proprio mettere la dichiarazione dei prtotipi.....devo dirlo domani al prof....o sarà ubriaco....perchè oggi ha detto che nn si trattava di funzioni vere e proprie quindi avevo escluso l'uso dei prototipi....grazie ancora :ciauz:
certo anche essendo "procedure"(in c/c++ non c'è differenza perchè sono cmq funzioni che non restituiscono nulla o meglio un VOID) necessitano dei prototipi "sopra" al main per essere richiamate :)

:ciauz:

LeleFT
12-05-2004, 20:35
Originariamente inviato da andrea_NET-_DSL
infatti restituiscono un VOID,ossia un qualcosa di nullo :)

:ciauz:

:gren:

ps in ogni caso i prototipi ci vanno cmq :stordita: :)
La mia affermazione, infatti, era volutamente ironica volta a sottolineare una differenza sottilissima fra informatico e matematico... (che come ben sappiamo non sono così distanti). :gren: :gren:


Ciao. :ciauz:

andrea_NET-_DSL
12-05-2004, 20:40
Originariamente inviato da LeleFT
La mia affermazione, infatti, era volutamente ironica volta a sottolineare una differenza sottilissima fra informatico e matematico... (che come ben sappiamo non sono così distanti). :gren: :gren:


Ciao. :ciauz:
sisi :) :gren:

:) :ciauz:

Loading