Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Образовательный студенческий форум _ Информатика / Программирование _ замена символов в С

Автор: Andreyka 4.11.2007, 17:27

Здраствуйте. помогите пожалуйста. вот задание(программа на С)
Здраствуйте, помогите пожалуйстаЮ мне некуда больше обратиться. вот задание:

Дан текст. Если первый символ текста не является малой Латинской буквой, то оставить его без изменения. Если же это малая латинская буква, но за начальной группой малых латинских букв не следует цифра, то так же оставить без изменения. Иначе каждую цифру, принадлежащую группе цифр, следующей за начальной группой малых латинских букв, заменить *

Вот моя программа: сначала ввожу текст, потом работаю с ним(там где начинаются ошибки закомментировал)
#include <stdio.h>
#include <math.h>
int i,j,K,M;
char z,s;
char lat[]="abcdefghijklmnoprstuvwxyz";
char cifra[]="1234567890";

void main()
{
printf("Napishite predlojenie s tochkoi v konce \n");
for (z=s=' ';z!='.';s=z)
{
scanf("%c",&z);
printf("%c",z);
}

/* вот здесь начинаются ощибки */
/*
{K=0;
for (i=0; i<=27; i++)
if (z[0]==lat[i])
{
for (i=0;i<=K;i++)
for (j=0;j<=27;j++)
{
if (text[i]==lat[j]) {K=K+1;}
}
for (i=0;i<=10;i++)
if (text[K+1]==cifra[i])
{
for (i=K+1;i<=M;i++)
for (j=0;j<=10;j++)
if (text[i]==cifra[j]) {M=M+1;}
for (i=K;i<=M;i++)
text[i]='*';
for (i=0;i<=15;i++)
printf("%c",text[i]);
}
}
for (i=0;i<=15;i++)
printf("%c",&text[i]);
}

*/

Автор: creer 5.11.2007, 15:02

Запутано то как все :-). А строка куда вводится? ;-) "z" это же просто char, один символ. Надеюсь, никто не будет обижаться, если я напишу пример, а то исправить ошибки сложнее. :-)

Код

#include <stdio.h>

char lat[]="abcdefghijklmnoprstuvwxyz";
char cifra[]="1234567890";
char st[255];
int pos;

int main()
{
    printf("Write string\n");
    gets(st);

    if (strcspn(st,lat)==0)
    {
        pos = strcspn(st,cifra);
        while (strcspn(st,cifra)!=strlen(st))
        {
            st[strcspn(st,cifra)]='*';
        }
    }

printf(st);
return 0;
}

Автор: Nefrit 22.1.2008, 8:46

эээээ.......зачем так сложно? umnik.gif в языке Си++ есть функции, которые определяют, является ли, к примеру, переменная h, буквой isalpha(h), цыфрой isdigit(h), строчной буквой islower(h), прописной буквой isupper(h). beer.gif

Автор: creer 22.1.2008, 14:01

Просто у автора темы было сделано примерно так же, как у меня smile.gif. Не стал разрушать идею wink.gif

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)