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

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

Наш партнер Genesis Hackspace
  1. vellasha

    vellasha New Member

    Регистрация:
    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 Гость

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

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

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

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

    vellasha New Member

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

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

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

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

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

    rrrFer Гость

  5. rrrFer

    rrrFer Гость

    твой код ужасен.

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

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