function co_c(string s){
int i=0;
int c=0;
for(i=0;i<=strlen(s);i++)
{ if((s=='0')||(s='1')||(s='1')||(s='2')||(s='3')||(s=='4')||(s=='5')||(s='6')||(s='7')||(s='8')||(s='9'))
{
c++;
}
}
return c;
}
Строка и работа с предложением в С
Здравствуйте. Требуется программа на С, которая в введённой строке(строка идёт как предложение) подсчитывает количество цифр и отображает все слова предложения, которые содержат последнюю букву предыдущего слова не менее 2-х раз.
По превому вопросуу - можно например использовать такую функцию
Код:
По второму - добавлейте все слова в массив, и анализируйте, начиная со второго.
В сях не спец, могут быть ошибки, но смысл такой
З.Ы. Поправьте, если ошибаюсь
В Си нет типа string, используется char*
Да и цикл через strlen() не лучший вариант.
Код:
#include <ctype.h>
int digitCount( char* s )
{
int count = 0;
char* cs;
for( cs=s; cs; ++cs )
{
if( isdigit( *cs ) ) ++count;
}
return count;
}
int digitCount( char* s )
{
int count = 0;
char* cs;
for( cs=s; cs; ++cs )
{
if( isdigit( *cs ) ) ++count;
}
return count;
}
P.s. Поздно заметил приписку, что "не спец" ;)
Код:
#include <conio.h>
#include <stdio.h>
void main()
{
char s[20],sl[10]; /* s-предложение sl- массив с подходящими словами*/
int i=0,c=0,j,m,l=0;
clrscr();
printf("vvedite stroky: ");
gets(s);
for(i=0;(s!='\0');i++)
{ if((s>='0')&&(s<='9'))
{
c++;
}
}
printf("%d\n",c);
/* Цифры посчитали*/
i=0;
c=0;
for(i=0;(s!='\0');i++)
{
m=0; /* Счётчик кол-ва повторений последнего символа пред.слова*/
l=0;
if(s==' ')
{c=i-1;
for (j=i+1;(s[j]!=' ');j++)
{
if (j==c)
m++;
}
if(m>=2)
{
for (j=i+1;(s[j]!=' ');j++)
{ sl[l++]=s[j];
l++;
}
}
}
i++;
}
printf("%s",sl);
getch();
}
#include <stdio.h>
void main()
{
char s[20],sl[10]; /* s-предложение sl- массив с подходящими словами*/
int i=0,c=0,j,m,l=0;
clrscr();
printf("vvedite stroky: ");
gets(s);
for(i=0;(s!='\0');i++)
{ if((s>='0')&&(s<='9'))
{
c++;
}
}
printf("%d\n",c);
/* Цифры посчитали*/
i=0;
c=0;
for(i=0;(s!='\0');i++)
{
m=0; /* Счётчик кол-ва повторений последнего символа пред.слова*/
l=0;
if(s==' ')
{c=i-1;
for (j=i+1;(s[j]!=' ');j++)
{
if (j==c)
m++;
}
if(m>=2)
{
for (j=i+1;(s[j]!=' ');j++)
{ sl[l++]=s[j];
l++;
}
}
}
i++;
}
printf("%s",sl);
getch();
}
Проблема, насколько я поняла в том что в массив sl ничего не записывается. Укажите пожалуйста ошибки.
Цитата: Katish
Проблема, насколько я поняла в том что в массив sl ничего не записывается. Укажите пожалуйста ошибки.
Не вдаваясь в подробности кода:
Код:
for (j=i+1;(s[j]!=' ');j++)
{ sl[l++]=s[j];
l++;
}
{ sl[l++]=s[j];
l++;
}
Код:
for (j=i+1;(s[j]!=' ');j++)
{ sl[l++]=s[j];
j++;
}
{ sl[l++]=s[j];
j++;
}
Исправление не помогло, видимо потому что этого момента цикл не доходит, а пропускает его :(
Цитата: Katish
Код:
for (j=i+1;(s[j]!=' ');j++)
{ sl[l++]=s[j];
j++;
}
{ sl[l++]=s[j];
j++;
}
Исправление не помогло, видимо потому что этого момента цикл не доходит, а пропускает его :(
Я имел ввиду: зачем вообще второй инкремент чего бы то не было?
Цитата:
Я имел ввиду: зачем вообще второй инкремент чего бы то не было?
Предполагалось для того чтобы перейти на след. символ записываемого слова,но вероятно вы правы. Всё равно до этого цикла дело не доходит - выводится пустая строка (вернее сказать не пустая, а с каким-то мусором пожим на шрифт Windings). Если значение sl задать сразу, то его и выведет в конечном итоге.
Всем спасибо, тема закрыта.