Newsgroup: it.comp.lang.c
Titolo: un aiutino...

Come mai non riesco ad eseguire questo piccolo programma quando cerco di
avviarlo con il doppio clic?
Lo stesso mi accade per l'esempio power preso a pagina 26 del libro di
Kernighan,Ritchie.
Di solito si apre una finestra DOS...............................
#include<stdio.h>
main()
{
int i;
   for(i=0;i<10;++i)
   printf("%d %d %d\n",i,power(2,i),power(-3,i));
}
/*funzione power eleva la base all'ennesima potenza*/
power(x,n)
int x,n;/*queste variabili non sono viste dalla funzione main*/
{
  int p;
  for(p=1;n>0;--n)
       p=p*x;
  return (p);
}
grazie
Marco


Windows chiude la finestra Dos al termine dell'esecuzione
del programma. Per evitarlo ci sono due soluzioni:
1 - aggiungere una istruzione getchar() alla fine di main
(vedi es);
2 - Aprire la finestra DOS - andare a schermo intero e
laciare il programma direttamente dal DOS.
Inoltre il tuo programma, scritto in stile K&R, provoca
segnalazioni di errore/warnig con i compilatori a 
Standard ANSI: in particolare ora si richiede che main 
ritorni sempre un intero e tutte le funzioni abbiano 
un prototipo.
Per compilare il codice K&R direttamente, occorre che il
compilatore abbia un apposito switch.
Segue il programma riscritto secondo le regole attuali che
funziona sia lanciato dal DOS che da Windows c/ doppio
click.
Spero ti sia utile. gfb
#include <stdio.h>
int power(int x,int n); /* prototipo  funzione */
int main()		/* main deve ritornare un int	*/
{
int i;
   for(i=0;i<10;++i)    /* modificata per incolonnare i
risultati */
   printf("%2d %10d %10d\n",i,power(2,i),power(-3,i));
/* Istruzioni aggiunte per bloccare l'immediato ritorno a
Windows   */	
   printf("\n          Premi Invio per uscire dal
programma\n");
   getchar();
   return 0;
}
/*funzione power eleva la base all'ennesima potenza*/
/*
Secondo lo standard i parametri vanno indicati all'interno
delle parentesi e devono rispecchiare il prototipo.
*/
int power(int x,int n) 


 wrote in message
39F2A680...@interfree.it...

Ti ringrazio molto per la tua risposta,sei stato veramente d'aiuto.
Cosa mi consigli di fare :cambiare compilatore(sta usando RHIDE)per
adattarmi al libro,o cambiare libro per adottarmi al compilatore?
Ciao e grazie ancora.

 Ciao e grazie ancora.
Non conosco direttamente RHIDE, ma da tempo i compilatori
C/C++
usano la nuova sintassi (alcuni accettano il vecchio codice
K&R per
compatibilità).
Per evitare i warnings basta comunque scrivere le funzioni
indicando
sempre il tipo di ritorno e con il tipo ed il nome dei
parametri
entro le parentesi:
int power(int x, int n)	{ .......}
invece di:
power(x,n)
int x,n;
{ ............} /* tipo di ritorno implicito = int */
Per quanto riguarda il manuale, la seconda edizione del K&R,
ora
tradotta anche in italiano, copre l'ANSI C sia per quanto
riguarda
la sintassi che le  keywords aggiunte (const, volatile. void
etc).
Alla prossima.
gfb

 adattarmi al libro,o cambiare libro per adottarmi al compilatore?
Rhide non e' un compilatore, ma un IDE, ossia una interfaccia grafica
che comprende editor, debugger,..., e ti permette di compilare senza
usare la riga di comando. Il compilatore che usi e' il djgpp, il
porting per dos del gcc, e ti assicuro che non puoi trovare di meglio.
Per il libro, la bibbia K&R2 non e' in discussione ;-)
-- 
 Ciao, Bianco.
 Reply to luca.bianco (at) 
tiscalinet.it





Ehm... scusate il triplo post! Non era mai successo, ma non e' colpa
mia o di Agent: in questi giorni il server Tiscali fa' un po' i
capricci...


 }
????
--
~EnTrOpY~
e-mail: 
entr...@libero.it
ICQ#:        85370161

> }
devi includere "conio.h" ed usare "getch()" al posto di "getchar()"...
esempio:
#include <stdio.h> 
#include <conio.h>
void main(void) {
printf("ASPETTO UN CARATTERE");
getch();
}
ciao
Bun]{er
-> Home: 
http://bunkersite.cjb.net
-> E-mail: scorp...@NOSPAMtin.it