1. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Первый товар уже в продаже: Консультация на тему ИБ от Ondrik8

    Скрыть объявление
  2. Спонсор публикаций Marketplace codeby. Сервис, который так долго ждали. При расчетах используем биткоин. Второй товар маркетплейса: Надёжная обфускация вашей программы от PingVinich

    Скрыть объявление

Удалить Самое Короткое Слово В Каждой Строке

Тема в разделе "C/C++/C#", создана пользователем vellasha, 15 янв 2013.

  1. vellasha

    vellasha New Member

    Репутация:
    0
    Регистрация:
    15 янв 2013
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте, код С++. Нужно в каждой строке текстового файла удалить самое короткое слово. Помогите пожалуйста, не знаю, как это построчно сделать, да и найти это короткое слово не получается. Вот, набросала только неправильно:
    Код (C++):
    #include <conio.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    void DeleteSl(char *A)
    {  
    int kb=0; int minkb=2999; int p=0;
    for(int i=0;i<strlen(A);i++)
    { if (A[i]==' ')
    { if (minkb>kb) { minkb=kb; p=i; }
    int kb=0;
    while (A[i+2]!=' ')
    { kb=kb+1;
    i++;
    }
    }
    }
    for(int j=p;j!=' ';j++)
    A[j]=' ';    
    }


    void txtfile(char *A)
    {
    FILE *f;
    int i=0;
    f=fopen("text.txt", "r");
    fgets(A, 3000, f);
    fclose(f);
    }

    void txtprint(char *A)
    {for(int i=0;i<strlen(A);i++)
    {
    printf("%c", A[i]);
    }
    printf("\n");
    }

    int main()
    {
    char A[3000];
    txtfile(A);
    printf("Original text:\n");
    txtprint( A);
    DeleteSl(A);
    printf("Text without short slovo:\n");
    txtprint(A);
    getch();
    }
     
  2. rrrFer

    rrrFer Гость

    Репутация:
    0
    не может совсем ничего не получаться.

    strlen даст тебе длину строки, тогда найти самое короткое слово не сложнее чем найти наименьший элемент массива.

    кроме того есть функции типы strtok, которыми ты легко сможешь разбить строку на слова.

    Судя по коду, считывать строки с файлы ты уже научился.
     
  3. vellasha

    vellasha New Member

    Репутация:
    0
    Регистрация:
    15 янв 2013
    Сообщения:
    2
    Симпатии:
    0
    не может совсем ничего не получаться.

    strlen даст тебе длину строки, тогда найти самое короткое слово не сложнее чем найти наименьший элемент массива.

    Я не понимаю, где у меня ошибка в DeleteSl ?? Вот не получается у меня найти самое короткое слово :P

    кроме того есть функции типы strtok, которыми ты легко сможешь разбить строку на слова.

    А можно пожалуйста поподробнее, как эту функцию реализовать в моей программе?
     
  4. rrrFer

    rrrFer Гость

    Репутация:
    0
  5. rrrFer

    rrrFer Гость

    Репутация:
    0
    твой код ужасен.

    если в конце строки стоит пробел - программа гарантированно упадет, потому что i - уже предпоследний символ. i+1 символ - это нуль-терминатор.
    i+2 символ содержит мусор, из цикла ты можешь очень долго не выйти (выйдешь когда в этом мусоре случайно встретится пробел)
     
Загрузка...

Поделиться этой страницей