Newsgroup: it.comp.lang.c
Titolo: Il maledetto non esce...

Ciao a tutti...ho un problemino con programma in C (non ancora del tutto
completo). Infatti non riesco a farlo uscire dal  ciclo do-while, nonostante
abbia messo uno string compare...chi può darmi una mano?
__________________________________
#include <conio.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define uscita "esci"
void clscr ();
void main(void)
{
/*  Inizializzazione delle Variabili */
char invio;
int somma,righe,parole,i;
float media;
char vet[1200];
parole=0;
righe=0;
media=0;
somma=0;
i=0;
clrscr();
do
 {do
   {scanf("%s",&vet[i]);
    i++;
    parole++;
    scanf("%c",&invio);}
  while (invio!=10);
  righe++;}
/* questa è la maledetta!*/
while (strcmp (vet[i],uscita));
/*  Quello che dovrebbe stampare... */
printf("Il numero di parole S %d\n",parole);
printf("Il numero di righe S %d\n",righe);
printf("La media delle parole S %f\n",media);
}
Grazie 1000 a tutti per l'aiuto!!!
Enrico S.
--
Webmaster della Pagina NON Ufficiale del SonyCRX100
SonyCRX120,  SonyCRX140E/S, SonyCRX100EX, HP8100
HP8200, HP9100 & HP9200
http://www.freeweb.org/computer/SonyCRX100/


Secondo la mia modesta opinione così com'é questo programma non farà mai
quello che vuoi!
Devi rimettere mano al codice e rivedere un po' tutto!
Un debugger ti potrà dare una mano

 alla fine del programma (prima dell'ultima graffa)!
Capisco che nel contesto sia marginale, ma consigliare di scrivere main()
invece che main(void) non č un buon consiglio. In C le parentesi () non
significano "nessun argomento" ma un numero indefinito. E' quindi + corretto
specificare che i parametri passati dal SO si vogliono ignorare con un
(void).
ciao ciao
Marco
--
Marco Coppo
University Of Sheffield
FAQ di it.comp.lang.c:
http://www.programmazione.it/linguaggi/c/itcomplangc.htm

 quello che vuoi!
A no? Beh...un po' di simpatia in più non guasterebbe e comunque con il
Turbo C non mi da errori di compilazione e fino alla riga in questione
funzia tutto...semplicemente non va  lo string compare, che poi è quello che
ho chiesto e che non sei riuscito a dirmi.
Bye e grazie per il tentato aiuto
Enrico

Direi  che è la stessa identica cosa...
Niente affatto. Lo abbiamo detto piu' volte.
In C si usa : 
 int main()
e non :
  void main()
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
-----------------------------------------------------------------------
"There is nothing better for understanding a kangaroo than seeing it jump."
[D.Grune, C.J.H. Jacobs]

 completo). 
Mi pare ci siano un pò di errori ed imprecisioni, e ho preferito 
riscriverlo:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
int main(void)
{
	int righe  0, parole  0, fine  0;
	char vet[1024], *tmp, *new;
	while ((!fine) && (fgets(vet, sizeof vet, stdin))) {
		if ((tmp  strchr(vet, '\n')))
			*tmp  '\0';
		righe++; 
		tmp  vet;
		while (isspace(*tmp))
			tmp++;
		if (*tmp  '\0') /* riga vuota */
			continue;
		parole++;
		if (strncmp(tmp, "esci", 4)  0)
			fine  1;
		else if (strtok(tmp, " \t")) {
			while ((new  strtok(NULL, " \t"))) {
				parole++;
				if (strcmp(new, "esci")  0) {
					fine  1;
					break;
				}
			}
		}
	}
	printf("Parole\t%d\nRighe\t%d\nMedia\t%f\n",
	       parole, righe, (float) parole / righe);
	return 0;
}
Non garantisco nulla, ovviamente. 8)
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

 (void).
Dalle FAQ internazionali del C:
11.12a: What's the correct declaration of main()?
A:      Either int main(), int main(void), or int main(int argc,
        char *argv[]) (with alternate spellings of argc and *argv[]
        obviously allowed).  See also questions 11.12b to 11.15 below.
        References: ISO Sec. 5.1.2.2.1, Sec. G.5.1; H&S Sec. 20.1 p.
        416; CT&P Sec. 3.10 pp. 50-51.
EMG

         obviously allowed).  See also questions 11.12b to 11.15 below.
 Ok, ok non ho detto che scrivere main() č sbagliato! ho solo detto che uno
che consiglia:
"prima di tutto scrivi main() invece che main(void)" non ha cambiato nulla
nella sostanza.
In piů a parer mio specificare (void) č meno equivoco di () anche se
ugualmente corretto. Mi rendo conto sia filosofia ma....


A:      Either int main(), int main(void), or int main(int argc,
Hai mai provato a guardare gli esempi che ci sono nell'help del Visual
C++ 6.0 ? C'e' sempre scritto void main()
Ma alla MS hanno imparato il C leggendo lo Schildt ?
ciao

>   void main()
Beh...il mio prof di ing inf. usa sempre void main(void) e se lo usa lui...
Ciiips
Enrico S.

Ma alla MS hanno imparato il C leggendo lo Schildt ?
Peggio, e' Schildt che ha imparato da MS.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)


 abbia messo uno string compare...chi può darmi una mano?
Prova cosi:
#include <stdio.h>
#include<string.h>
char vet[1024];
int   parole = 0;
int righe = 0;
int i = 0;
int main()
{
 while     ( strcmp( fgets( vet, sizeof(vet), stdin ),"esci\n") )
              {
              righe+=(strstr(vet,"\n"))?1:0;
              for     ( i=1;i<strlen(vet);i++)
                       if     ( ((!vet[i])||(vet[i] == ' ')||(vet[i] == '\n'))
&& ( vet[i-1] != ' ') )
                              parole++;
              memset( vet,0,sizeof(vet) );
               }
 printf( "\nParole: %d\nRighe: %d\nMedia:
%f\n",parole,righe,((float)parole/righe) );
 return 0;
}

 Ma alla MS hanno imparato il C leggendo lo Schildt ?
La domanda dovrebbe essere: hanno mai imparato a programmare? :-)))
EMG

 while (strcmp (vet[i],uscita));
questo non puo' funzionare, perche' vet[i] non e' una stringa.
--
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it

 Beh...il mio prof di ing inf. usa sempre void main(void) e se lo usa lui...
Lo usa perché ignora cosa dice lo standard al riguardo.
EMG

Lo usa perché ignora cosa dice lo standard al riguardo.
E chissa' quante altre cose ignora del linguaggio ! :)


Adesso siete voi a peccare di superbia però ^_^


Grazie 1000!


Adesso siete voi a peccare di superbia però ^_^
Nessuno pecca di superbia, ridimensiona le tue parole, qui si sta
soltanto cercando di far conoscere la verita' a chi *non la vuole*
conoscere. Atteggiamenti come il tuo sono veramente antipatici.
Vuoi pensare che "void main()" sia corretto ? Fallo pure, sai quanto
me ne importa, personalmente. Faresti bene a prestare maggiore
attenzione a cio' che ti viene detto.
L'umilta' ci dev'essere da parte di chi ascolta, innanzitutto.


 conoscere. Atteggiamenti come il tuo sono veramente antipatici.
Umh...allora sei duro...
Prima di tutto ho già chiesto scusa per un errore di comprensione dei mex
precedenti (punto primo)
Punto secondo: quando leggi un messaggio GUARDA ANCHE LE FACCINE. Saprai
anche il C a memoria ma quanto a simboli internet sei messo maluccio:
^_^ = Battuta, sorrisino...etc...etc...
Ciiips
Enrico S.


^_^ = Battuta, sorrisino...etc...etc...
"Adesso siete voi a peccare di superbia però ^_^"
3 caratteri su 47 fanno un totale di appena il 300/47 = 6% circa di
umorismo.


Effettivamente! Però ti hanno fatto divertire un casino ^_^
