int words_count = 0;
int chars_count = 0;
int pos = 0;
while (1)
{
while ( str[pos] == ' ' && str[pos] != 0 ) // идем до первого символа
pos++;
if (str[pos] == 0 ) break; //если конец строки выходим из цикла
words_count++;
while ( str[pos] != ' ' && str[pos] != 0 ) //идем до конца слова
{
pos++;
chars_count++; // считаем буквы
}
}
printf( "kol-vo bukv: %d\n", chars_count );
printf( "kol-vo slov: %d"\n, words_count );
(с)Нахождение количества слов в строке
Найти количество букв и слов в введенной строке.
Цитата:
[size=+1]
Пришли SMS на номер 0000 и получи решение задачи на свой мобильный!
[/size]
[size=-3]
*cтоимоть SMS 5 у.е. без НДС
[/size]
:D
Цитата: JKJ
Найти количество букв и слов в введенной строке.
[COLOR="Red"] Свои замечания о личности автора держи при себе .Удалил.[/COLOR]модератор.
Для количества букв - удалите из исходной строки все не-буквы (сформировав новую строку по for, скажем) и возьмите длину.
Для количества слов проще нормализовать пробелы и взять их количество.
int j=1,i;
char ms[80],k=' ';
printf("vvedite stroky");
gets(ms)
только вот проблемка с условием для повторения оператора if, тут как я понимаю надо через wail делать,но вот какое "условаие" для него задать?
if(ms=k && ms[i++]!=k) j++
printf("kolichtstdo clov %d",j)
Цитата: JKJ
С количеством букв сделал.А вот с количеством строк проблема...Для нахождения делаю примерно следующие:
int j=1,i;
char ms[80],k=' ';
printf("vvedite stroky");
gets(ms)
только вот проблемка с условием для повторения оператора if, тут как я понимаю надо через wail делать,но вот какое "условаие" для него задать?
if(ms=k && ms[i++]!=k) j++
printf("kolichtstdo clov %d",j)
int j=1,i;
char ms[80],k=' ';
printf("vvedite stroky");
gets(ms)
только вот проблемка с условием для повторения оператора if, тут как я понимаю надо через wail делать,но вот какое "условаие" для него задать?
if(ms=k && ms[i++]!=k) j++
printf("kolichtstdo clov %d",j)
На вскидку:
str - строка
Код:
Цитата: FractalizeR
[COLOR="Red"] Свои замечания о личности автора держи при себе .Удалил.[/COLOR]модератор.
Для количества букв - удалите из исходной строки все не-буквы (сформировав новую строку по for, скажем) и возьмите длину.
Для количества слов проще нормализовать пробелы и взять их количество.
Для количества букв - удалите из исходной строки все не-буквы (сформировав новую строку по for, скажем) и возьмите длину.
Для количества слов проще нормализовать пробелы и взять их количество.
Задача типичная, стандартно считается, что все кроме пробела является буквой ;)
Код:
const int textlength = 256;
int wordcount=0;
int charcount=0;
char *text = new char[textlength];
cout<<"Please enter text"<<endl;
gets(text);
do
{
if(*text==' ' || *text=='\0')
{
wordcount++;
continue;
}
charcount++;
}while(*text++);
cout<<"Word Count:\t"<<wordcount<<endl;
cout<<"Char Count:\t"<<charcount<<endl;
return 0;
int wordcount=0;
int charcount=0;
char *text = new char[textlength];
cout<<"Please enter text"<<endl;
gets(text);
do
{
if(*text==' ' || *text=='\0')
{
wordcount++;
continue;
}
charcount++;
}while(*text++);
cout<<"Word Count:\t"<<wordcount<<endl;
cout<<"Char Count:\t"<<charcount<<endl;
return 0;
это реализация через указатели, все очень просто:-)
при условии, что слова вводятся в стандартной текстовой форме:-) иначе надо будет внутри цикла добавить if(). Если надо добавить, напиши.
А вот как я вычислял количество букв,немного перемудрил)
Код:
char str[80];
char k=' ',m;
int i,j;
printf("\nvvedite stroky: \n");
gets(str);
for(i=j=0;str!='\0';i++)
if(str!=k) str[j++]=str;
str[j]='\0';
printf("\nkolichestvo simvolov v stroke: \n%d", strlen(str));
getch();
clrscr();
return 0;
}
char k=' ',m;
int i,j;
printf("\nvvedite stroky: \n");
gets(str);
for(i=j=0;str!='\0';i++)
if(str!=k) str[j++]=str;
str[j]='\0';
printf("\nkolichestvo simvolov v stroke: \n%d", strlen(str));
getch();
clrscr();
return 0;
}
Цитата: NeO_u
Считаеся все очень просто:
это реализация через указатели, все очень просто:-)
при условии, что слова вводятся в стандартной текстовой форме:-) иначе надо будет внутри цикла добавить if(). Если надо добавить, напиши.
Код:
const int textlength = 256;
int wordcount=0;
int charcount=0;
char *text = new char[textlength];
cout<<"Please enter text"<<endl;
gets(text);
do
{
if(*text==' ' || *text=='\0')
{
wordcount++;
continue;
}
charcount++;
}while(*text++);
cout<<"Word Count:\t"<<wordcount<<endl;
cout<<"Char Count:\t"<<charcount<<endl;
return 0;
int wordcount=0;
int charcount=0;
char *text = new char[textlength];
cout<<"Please enter text"<<endl;
gets(text);
do
{
if(*text==' ' || *text=='\0')
{
wordcount++;
continue;
}
charcount++;
}while(*text++);
cout<<"Word Count:\t"<<wordcount<<endl;
cout<<"Char Count:\t"<<charcount<<endl;
return 0;
это реализация через указатели, все очень просто:-)
при условии, что слова вводятся в стандартной текстовой форме:-) иначе надо будет внутри цикла добавить if(). Если надо добавить, напиши.
Хммм... а если я введу такую строку (с несколькими пробелами между строк):
Код:
dflkjsldk lskdjflkdsjf sdlkfjdlskfjldsk sdkfjdslkfjlkj k
Эта задача подразумевает это
Цитата: specter
Хммм... а если я введу такую строку (с несколькими пробелами между строк):
Эта задача подразумевает это
Код:
dflkjsldk lskdjflkdsjf sdlkfjdlskfjldsk sdkfjdslkfjlkj k
Эта задача подразумевает это
Код:
const int textlength = 256;
int wordcount=0;
int charcount=0;
char *text = new char[textlength];
cout<<"Please enter text"<<endl;
gets(text);
bool found = true;
do
{
if((*text==' ' || *text=='\0') && !found)
{
wordcount++;
found = true;
continue;
}
if(*text != ' ' && *text != '\0')
{
charcount++;
if(found)
found = false;
}
}while(*text++);
int wordcount=0;
int charcount=0;
char *text = new char[textlength];
cout<<"Please enter text"<<endl;
gets(text);
bool found = true;
do
{
if((*text==' ' || *text=='\0') && !found)
{
wordcount++;
found = true;
continue;
}
if(*text != ' ' && *text != '\0')
{
charcount++;
if(found)
found = false;
}
}while(*text++);
Вот, отлавливает пробелы:-)