|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2006
Città: Roma
Messaggi: 1008
|
[C]Contare parole in una stringa
ragazzi sono un cane non malmenatemi
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
main()
{
int i, spazio;
char frase[MAX];
printf("Inserire una stringa, le cui parole sono intervallate da spazi: ");
scanf("%s", frase);
fflush(stdin);
spazio = 0;
for(i=0;i<strlen(frase);i++)
if(frase[i] == ' ')
spazio++;
if(spazio>0)
printf("Il numero delle parole presenti nella stringa e': %d\n", spazio+1);
else
printf("Non ci sono spazi nella stringa\n");
system("pause");
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
questa libreria funziona molto bene; guardatela
http://www.koders.com/c/fidF4F66D790...EB2D3CE4F.aspx
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2006
Città: Roma
Messaggi: 1008
|
mi da sempre 0!!!!
se provo a mettere printf sotto all'incremento di spazio, come controllo mi da sempre 0.. forse un problema nell'acquisire la stringa? |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2001
Messaggi: 458
|
Prova a sostituire questo: if(frase[i] == ' ') con if(frase[i] == '\b')
Vedi se trovi qualcosa di utile qui: http://users.dimi.uniud.it/~ivan.sca.../lezione10.pdf
__________________
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2006
Città: Roma
Messaggi: 1008
|
ottime dispense!
ce ne sono altre..ho provato ad accedere tramite ivan scagnetti ma non trovo nulla li dentro..ciao! ora provo come dici te |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2006
Città: Roma
Messaggi: 1008
|
no con barra \b non cambia nulla...
cmq ho provato così Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
int conta_parole()
{
int i, spazio;
char frase[MAX];
strcpy(frase, "ciao mare bello");
spazio = 0;
for(i=0;i<strlen(frase);i++)
if(frase[i] == ' ')
spazio += 1;
return spazio;
}
main()
{
int conta;
conta = conta_parole();
if(conta)
printf("Il numero delle parole presenti nella stringa e': %d\n", conta+1);
else
printf("Non ci sono spazi nella stringa\n");
system("pause");
}
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2006
Città: Roma
Messaggi: 1008
|
ah ok...grazie!
ora cerco |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 96
|
prova a fare magari una lettura più brutta stilisticamente ma con il getchar() o il getch() (non ricordo le sottili differenze tra i 2)... con questi di sicuro ti prende gli spazi e tutto il resto
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Roma sud
Messaggi: 590
|
oppure usa la gets() che serve per aquisire una stringa anche se mi sa che non e' standard mi sa che c'e' solo su turbo c++
__________________
-Mac Book intel core duo 1,83GHz, 1,25 Gb RAM -Amd athlon 64 dual core 4400+, 2 GB RAM, Asus a8n-sli Deluxe, totale 500 GB di HARD DISK(4 hdd) |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1059
|
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
Quote:
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1059
|
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
|
Sicuramente con scanf (come con cin) non può funzionare, in quanto si ferma al primo spazio acquisito.
In C++ io risolverei sostituendo il cin con cin.get() specificando ovviamente una variabile char* d'appoggio e un numero di caratteri massimo. Mi auguro che qualche conoscitore del C sappia tradurre in codice C
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization. --Gerald Weinberg |
|
|
|
|
|
#14 | ||
|
Senior Member
Iscritto dal: Apr 2006
Città: Roma
Messaggi: 1008
|
Quote:
Quote:
|
||
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Cosenza
Messaggi: 2971
|
io in c++ userei un cin.getline per acquisire la frase, e la funziona strtok per contare le parole...(è in cstring)
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Aug 2005
Città: Roma sud
Messaggi: 590
|
Si e' vero stavo vedendo or ora che c'e' pure su dev c++
@Lucuzzu Che compilatore usi? Tipo su dev c++ mi e' bastato predere il codice postato nel primo post e modificarlo cosi'(ho cambiato solo lo scanf con una gets) Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
main()
{
int i, spazio;
char frase[MAX];
printf("Inserire una stringa, le cui parole sono intervallate da spazi: ");
gets(frase);
fflush(stdin);
spazio = 0;
for(i=0;i<strlen(frase);i++)
if(frase[i] == ' ')
spazio++;
if(spazio>0)
printf("Il numero delle parole presenti nella stringa e': %d\n", spazio+1);
else
printf("Non ci sono spazi nella stringa\n");
system("pause");
}
__________________
-Mac Book intel core duo 1,83GHz, 1,25 Gb RAM -Amd athlon 64 dual core 4400+, 2 GB RAM, Asus a8n-sli Deluxe, totale 500 GB di HARD DISK(4 hdd) |
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Il problema è che gets() è abbastanza insicura come funzione, getline() già è una migliore scelta.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:50.











VIDEOLEZIONI di Matematica, Informatica, Fisica I & II e MOLTO altro, GRATIS !!! 








