singlepost

помогите с задачкой << На главную или назад  

надо написать программу,удаляющую из слова каждую третью букву
я её написал,но не могу сделать так что бы из первого слова тоже удалялась 3-я буква.

Вот код

#include&lt;stdio.h&gt;
#include&lt;string.h&gt;
#include&lt;conio.h&gt;
void main()
{
clrscr();
int i, j;
char s[50], ss[50] = {0};
printf(&quot;ўўҐ¤ЁвҐ бва®Єг:&quot;);
gets(s);
for(i = 0, j = 0; i &lt; strlen(s); i++)
if(s[i-3] &#33;= &#39; &#39;)
ss[j++]=s[i];
printf(&quot;Ё§¬Ґ­­Ґ­ п бва®Є : %s&quot;, ss);
getch();
}

13 ответов в теме “помогите с задачкой”

  1. 12
    Дмитрий Уповалов ответил:

    s = (char*)malloc(512); <- А если у меня под char 2 байта? =)
    Уж если вы*бываться, так до конца :)

    if(isalpha(s[i])) <- вот эта хрень думаю излишняя. Подразумевается, что каждый символ слова – буква. Пусть это даже и цифра.

    А вы вкурсе, что функция free не зименяет указатель? Т.е. указатель char* s у вас некоторое время указывает на какой то мусор в памяти. Это дурной тон батенька. Если почистил память под указателем, то изволь и указатель занулить. Я конечно понимаю что в такой проге это не критично, т.к. при завершении функции указатель перестанет существовать, но если бы это была прога побольше?

  2. 11
    Леонид Максимов ответил:

    фиг с вами, напишу. но потом не жалуйтесь:

    #include<stdio.h>
    #include<string.h>
    #include<conio.h>
    void main()
    {
    clrscr();
    int i, j, k;
    char *s;
    printf("введите строку:");
    s = (char*)malloc(512);
    gets(s);
    for(i = 0, j = 0, k =0; s[i]; i++){
    if(isalpha(s[i])) k++; else k=0;
    if(!k || k%3) s[i-j]=s[i]; else j++;
    }
    s[i-j]=0;
    printf("измее я строк : %s", s);
    free(s);
    getch();
    }

    здесь нет проверок на длину строки, но для лабораторной сойдет.

  3. 10
    Дмитрий Ашкадов ответил:

    легче самому изучить и исправить…

  4. 9
    Мирик Рафиев ответил:

    здрасти , мне нужен прогер который отлично знает пхп , есть у меня скрипты онлайн игры там надо 2-3 файлаисправить . 216959727 – пишите ( За услугу конечно же плачу )

  5. 8
    Дмитрий Уповалов ответил:

    >>> Надо написать программу, удаляющую из слова каждую третью букву.
    Я её написал.

    <<< Раз ты её написал то зачем тогда что-то спрашиваешь?

  6. 7
    Алексей Крикунов ответил:

    Пишите функцию, котрая удаляет определенный элемент массива. Т.е. Просто смещает все элементы справа на единцу к началу. Вызываете её для каждого 3го элемента. Это если слово в строке одно.
    Если там предложение, или же набор слов, то вводите дополнительный счетчик для определения номера буквы в слове, который обнуляется при переходе через пробел, и по нему удаляете символы.
    Я бы так сделал.

  7. 6
    Кирилл Постнов ответил:

    //govnokod.ru/автор тебе туда.

  8. 5
    Вячеслав Барболин ответил:

    #5. Создайте отдельную тему, а?
    З.Ы. 99% проблема с мамкой ноута.

  9. 4
    Артем Сергеевич ответил:

    на моём ноутбуке есть внешний порт SATA, при подклячении любого устройсва через этот порт -компьютер нагло, не попрощавшись со своим хозяином(в английском стиле) вырубается. причём с дольнейшее вклячение компьютера возможно только если его вырубить от сети и снять и снова вставить батарею, или не вставлять её снова а просто подрубить к сети.

    ВОПРОС ЗНАТОКАМ:
    что может вызвать данную неполадку и как её устранить?

  10. 3
    Владислав Sharenko ответил:

    ну так мне и надо пропускать элементы массива кроме 3

  11. 2
    Даниил Горин ответил:

    хахаха а че слабо самому практику сделать?!)))

  12. 1
    Леонид Максимов ответил:

    for(i = 0, j = 0; i < strlen(s); i++)
    if(s[i-3] != ' ')
    ss[j++]=s[i];

    а что вы хотите? в первом (и не только) проходе цикла вы пытаетесь читать мимо массива.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.