PDA

Visualizza la versione completa : Funzioni, richiesta spiegazioni sul funzionamento


brainforce
03-10-2002, 08:33
#include <iostream.h> //includo le librerie per cout e cin
#include <conio.h> //includo le librerie per getch che non so che f ^_^

int mult(int x, int y); //Qu dichiaro la funzione
void main() //Inizio la funzione principale del programma
{ //vabb....
int x, y; //dichiaro le variabili x e y intere
cout<<"Inserire un numero, ed il numero per il quale moltiplicarlo"; //mostro a video la frase
cin>>x>>y; //Input delle due variabili
cout<<endl<<mult(x, y); //cout output, endl mando una linea a capo, mult(x, y) richiamo la funzione sotto dichiarata
getch(); // che f questa?
} //si s.....
int mult(int x, int y) //dichiaro la mia funzione mult che composta da due variabili intere
{ //....
return x*y; //e questa che f? Spiego alla funzione mult che cosa deve fare delle sue 2 variabili?
} //

brainforce
03-10-2002, 09:26
Mi uppo da solo... :(

Johnny_Depp
03-10-2002, 09:37
/* Include libreria dello Standard (Input-Output) del C++ */

#include <iostream.h>

/* Include libreria CONIO.H (comprende la funzione GETCH()) del C++ */

#include <conio.h>

/* Dichiarazione del PROTOTIPO della funzione func_AREA_RETT */

int func_AREA_RETT(int base1, int altezza1);

/* Funzione principale ed UNICA INDISPENSABILE main() */

void main(){

/*
Dichiaro 2 variabili d tipo int (da passare poi alla funzione func_AREA_RETT)
N.B. non devono chiamarsi necessariamente come le 2 variabili dichiarate
sopra nel PROTOTIPO della funzione func_AREA_RETT) ma devono essere di tipo int
*/

int base2, altezza2;

/* Output a video */

cout<<"Inserire la BASE : ";

/* Input a video */

cin>>base2;

/* Stessa cosa di sopra */

cout<<"Inserire l' ALTEZZA : ";
cin>>altezza2;

/*
Output a video + (RICHIAMO la funzione func_AREA_RETT e gli passo
i valori inseriti nelle 2 variabili di tipo int che serviranno
alla funzione func_AREA_RETT (in pratica vengono passati
alle 2 variabili di tipo int della funzione func_AREA_RETT)
N.B. Ogni funzione ECCETTO quelle di tipo VOID()...
restituiscono sempre un risultato e quindi:
RETURN (BASE1 * ALTEZZA1) il risultato che restituisce
la funzione func_AREA_RETT.
Infine il risultato della funzione func_AREA_RETT
viene restituito allo standard OUTPUT che appunto chiama la funzione
in MAIN().
*/

cout<<"AREA RETTANGOLO = "<<func_AREA_RETT(base2, altezza2)<<"\n\n";

/*
GETCH() una funzione della libreria CONIO.H del C++
che accetta un CARATTERE della tastiera prima di far proseguire
il flusso del programma, in questo caso ti serve
per attendere che tu visualizzi il risultato prima
di uscire automaticamente dal programma.
*/

getch();

}

int func_AREA_RETT(int base1, int altezza1){
return (base1*altezza1);

}

Ciao

brainforce
03-10-2002, 10:14
Uff, non mi funziona....

#include <iostream.h>
int func_PASSWORD(int username, int password);
int main()
{
int counteraccessi, username, password;
counteraccessi=0;
counteraccessi=counteraccessi+1;
cout<<"Inserisci Username = ";
cin>>username;
cout<<"Inserisci Password = ";
cin>>password;
if(username==123&&password==123)
{
cout<<"Benvenuto al Nuke76 Connecting Software "<<username;
cout<<"\nquesto programma e' stato utilizzato N "<<counteraccessi<<" volte\n";
cout<<func_PASSWORD(int username, int password); //qu dovrei richiamere la mia funzione password
}
else
{
cout<<"Password Errata "<<username<<"\n";
}
return 0;
}

int func_PASSWORD(int username, int password)
{
return (username*password);
}

Purpua?
E poi volevo chiederti come faccio a richiamare una funzione e le sue relative operazioni?
Mi spiego, dopo aver accettato la user e la pass vorrei richiamare la funzione VERFICA che contiene tutto l'if di verifica di password, come si f?

Grazie, ciao.

brainforce
03-10-2002, 10:30
Allora questo secondo me dovrebbe girare, dico dovrebbe perch non gira, mi da errori....

#include <iostream.h>
#include <conio.h>
int func_PASSWORD(int username1, int password1);
int main()
{
int counteraccessi, username, password;
counteraccessi=0;
counteraccessi=counteraccessi+1;
cout<<"Inserisci Username = ";
cin>>username;
cout<<"Inserisci Password = ";
cin>>password;
if(username==123&&password==123)
{
cout<<"Benvenuto al Nuke76 Connecting Software "<<username;
cout<<"\nquesto programma e' stato utilizzato N "<<counteraccessi<<" volte\n";
cout<<"moltiplicazione"<<func_PASSWORD(int username, int password);
}
else
{
cout<<"Password Errata "<<username<<"\n";
}
int func_PASSWORD(int username1, int password1)
{
return (username1*password1);
}
}

Johnny_Depp
03-10-2002, 11:17
Non ti funzia perch
fai un CASINO di errori...

Ti consiglio di acquistare un manuale di C o C++
...In questo modo non imparerai mai a programmare in C/C++



STRUTTURA DI UN PROGRAMMA C/C++

INCLUDO I FILE HEADER (*.h) CHE UTILIZZERO' NEL PROGRAMMA
#include <iostream.h>
DICHIARO PROTOTIPO DI FUNZIONE SE NECESSARIO
int mia_func(int x, int y, int z);
FUNZIONE PRINCIPALE ED INDISPENSABILE
int main(){
.........
.........
SE DEVO RICHIAMARE UNA FUNZIONE LO FACCIO
E SE LA FUNZIONE NON E' DI TIPO "void"
GLI PASSERO' DEI VALORI in questo caso x, y, z
mia_func(x, y, z);
SE UNA FUNZIONE NON DI TIPO VOID es: void main()
RESTITUISCE SEMPRE UN RISULTATO, in genere 0 se andata
a buon fine ed 1 se ha causato un errore.
PERCIO' IN QUESTO CASO (visto che ho dichiarato: int main()
CI VUOLE :
return 0;
POI CHIUDO IL BLOCCO DELLA FUNZIONE main()
}

ORA SE DEVO INIZIALIZZARE UNA FUNZIONE LO FACCIO,
MA RICORDATI "SEMPRE FUORI DA main() O DA ALTRE FUNZIONI.
int mia_func(int x, int y, int z){
...........
...........
VISTO CHE ANCHE QUESTA FUNZIONE E' DI TIPO int
MI DEVE PER FORZA RESTITUIRE QUALCOSA
return QUALCOSA;
ORA CHIUDO IL BLOCCO DELLA FUNZIONE mia_func()
}


ECCO IL TUO PROGRAMMA CORRETTO

confrontalo con quello che hai editato tu
e cerca di capire dove hai sbagliato
[code]
#include <iostream.h>

int func_PASSWORD(int username1, int password1, int counter_accessi1);

void main(){
int username, password, counter_accessi;
counter_accessi=0;
counter_accessi++;
cout<<"Inserisci Username = ";
cin>>username;
cout<<"Inserisci Password = ";
cin>>password;
func_PASSWORD(username, password, counter_accessi);
}

int func_PASSWORD(int username1, int password1, int counter_accessi1){
if(username1==123&&password1==123){
cout<<"\nBenvenuto al Nuke76 Connecting Software :"<<username1;
cout<<"\nquesto programma e' stato utilizzato N "<<counter_accessi1<<" volte\n\n";
}
else{
cout<<"\nUtente : "<<username1<<" Password Errata\n\n";
}
return 0;
}
ciao

brainforce
03-10-2002, 11:41
No spe colpa mia, che non mi spiego, mi hai stravolto il programma.

Allora questo e quello che volevo fare, richiedo la user e la pass, poi tramite l'IF verifico se vera, se vera, allora entro nel programma, che mi f vedere "Benvenuto nel bla bla bla..." ed all'interno di questo IF, se la user e la pass sono vere che richiamo la funzione func_PASSWORD che non f altro che moltiplicare la user con la pass e mostrami a video il risultato.

Giustamente dirai a che mi serve, a nulla solo ad imparare come si richiama la funzione.

Mea culpa....

brainforce
03-10-2002, 11:44
Come non detto, ho capito. Sbonk. :quote:

Johnny_Depp
03-10-2002, 11:50
ALLORA!!!

ti ho postato 2 ESEMPI differenti di come si RICHIAMANO
le funzioni in C/C++

GUARDA meglio i vari post e capirai...

Il primo esempio passa 2 valori (BASE e ALTEZZA)
ad una funzione che calcola l'area del rettangolo
(molto elementare ed accadamico)

Il secondo esempio passa 3 valori e richiama una funzione che
convalida un LOGIN e ti restituisce il responso.

Se vuoi saperne di pi ti consiglio di acquistare
un buon manuale sul linguaggio C/C++

e di iniziare dalle BASI e non dalle funzioni.

Ciao

brainforce
03-10-2002, 11:59
Usavo delle piccole guide che praticamente non spiegavano un cachio, dopo 2 pagine stavo gi alle funzioni.

Mi servirebbe sapere

1) Un ottimo manuale che spieghi tutto dalla A alla Z, pensa che quello che aveva non spiega neanche la differenza fra void e main.

2) Un compilatore decente, perch mi sono accorto che non supporta alcuni comandi countaccessi++ ne un esempio.

Infini ti ringrazio per la pazienza. Ciao.

Loading