PDA

Visualizza la versione completa : [C] errori da niubbo con funzione


Nescio
11-07-2004, 11:07
Mi sapete dire perch nel seguente semplicissimo programma





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



double base,output;
int el;
double pot(double num, int esp);

main(void) {
printf("Dammi il numero");
scanf("%f", &base);
printf("Dammi esponente");
scanf("%d", &el);
output=pot(base,el);

printf("%f", output);

system("pause");
}

double pot(double num, int esp) {
double po;
po=1;

if (esp==0)return(1);

else {
while(esp--) po=po*num; ;
return(po);
}
}



se l'esponente diverso da 0 l'output sempre 0?

andrea_NET-_DSL
11-07-2004, 11:16
prova cosi':


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

double pot(double , int );

double base,output;
int el;

int main() {
printf("Dammi il numero");
scanf("%f", &base);
printf("Dammi esponente");
scanf("%d", &el);
output=pot(base,el);

printf("%f", output);

system("pause");
return 0;
}

double pot(double num, int esp) {
double po;
po=1;

if ( esp == 0 ) return 1;

while( esp-- ) po=po*num;

return po;
}


fammi sapere
:ciauz: :D

Nescio
11-07-2004, 11:24
anche con il tuo se faccio per esemio 2alla 2 d sempre 0


edit: uso devc++ su winxp

andrea_NET-_DSL
11-07-2004, 12:00
prova cosi'...

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

float pot(float , int );

float base,output;
int el;

int main() {
printf("Dammi il numero");
scanf("%f", &base);
printf("Dammi esponente");
scanf("%d", &el);
output=pot(base,el);

printf("%f", output);

system("pause");
return 0;
}

float pot(float num, int esp) {
float po=1;

if ( esp == 0 ) return 1;

while( esp-- > 0 ){
po=po*num;
po++;
}
return po;

Nescio
11-07-2004, 16:49
nemmeno questo.... (2*2=7!, 2*2*2*2=41!) ma formalmente il mio primo esempio scorreto?

Ankin
11-07-2004, 21:53
#include <stdio.h>
#include <stdlib.h>



double base,output;
int el;
double pot(double num, int esp);

main(void) {
printf("Dammi il numero");
scanf("%lf", &base); // <---- avevi messo %f, ma base un double
printf("Dammi esponente");
scanf("%d", &el);
output=pot(base,el);

printf("%lf", output); // <-- uguale qui.

system("pause");
}

double pot(double num, int esp) {
double po;
po=1;

if (esp==0)return(1);

else {
while(esp--) po=po*num; ;
return(po);
}
}



Cos dovrebbe andare :)

Nescio
12-07-2004, 09:02
quando uno un pirla un pirla, non c' niente da fare
:stordita:

grazie 1000 :yuppi:

Loading