Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2012, 19:13   #1
Gregorii
Новичок
Джуниор
 
Регистрация: 18.11.2012
Сообщений: 1
По умолчанию Работа со строками

Вообщем условие:
Задан текстовый файл Input.txt, состоящий из слов. Разделителями между словами является некоторое множество знаков препинания. Найти в каждой строке слова, записанные прописными буквами, равные по длине слову каждой строки с наибольшей длиной, удалить и дописать в начало строки. Результат записать в новый файл Output.txt. Упорядочить слова в полученных строках по алфавиту, результат сортировки записать в файл Out_sort.txt.
Код:

Код:
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
 
FILE *in;
FILE *out;
 
FILE *sort;
char seps[] = " ,.*%$#@!?\t\r\n";
 
bool isWordUpper (char *word){
    for(int x=0; x<strlen(word);x++){
        if(!isupper( word[x] )){
            return false;
        }
    }
    return true;
}
 
int compare( const void *arg1, const void *arg2 ){
    return strcmp( *(char**) arg1, *(char**) arg2 );
}
 
void main ()
{
    setlocale(LC_ALL, "Russian");
 
    in = fopen("input.txt", "r");
   out = fopen("output.txt", "w");
    
    sort = fopen("Out_sort.txt", "w");
    //ofstream sort("out_sort.txt");
    //ofstream out("output.txt");
 
 
    char **words = new char*[2000];
    for (int i = 0; i < 2000; i++){
        words[i] = new char[200];
    }
 
    int n = 0; 
 
    char *str = (char*) malloc (200);
    char *str2 = (char*) malloc (200);
 
    if(in == NULL)    {    
        printf (" Файл не открывается\n");
        return;
    }
    if (feof(in)) {
        return;
    }
 
    
 
    while(fgets(str, 200, in) != NULL) {  
        strcpy(str2, str); 
 
        char *word = strtok( str, seps );
        if (word != NULL){
 
        int max = strlen(word);
 
        while( word != NULL ){
            if (strlen(word) > max){
                max = strlen(word);
            }
            word = strtok( NULL, seps );
        }
 
        word = strtok( str2, seps );
        while( word != NULL ){
            if (isWordUpper(word) && (strlen(word) == max)){
                fputs(word, out);
                fputs(" ", out);
                //out<<word;
                //out<<" ";
 
                strcpy(words[n], word);
 
                n++;
            }
 
            word = strtok( NULL, seps );
        }
 
        fputs("\n", out);
        //out<<"\n";
        }
    }
 
    qsort(words, n, sizeof(char *), compare );
 
    for (int i=0; i<n; i++){
        fputs(words[i],sort);
        fputs("\n",sort);
        //sort<<words[i];
        //sort<<"\n";
    }
 
    //out.close();
    fclose(out);
    fclose(in);     
    fclose(sort);     
    //sort.close();
}
значит взял для проверки текстовый файл со следующим содержанием:
FFFFFFFFFFFFFFFFFFFFFFF FFFFFFLLFFFFFFFFFFSGSHSHDRWTFFFFFFF FF FFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF
klfjgkdfg OOOO *%$##@
GKJKDJGKJD KLKLGDSGJ SDLKGJLISJDG LSDKGJKLSLKDJG LKSDJGLKJ

Получается в файле output.txt в 3 строчке должно быть ОООО, но там просто пустая строка...Вообще ума не приложу в чем проблема...Помогите найти ошибку!
Gregorii вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками Программер Михаил Общие вопросы C/C++ 4 07.12.2010 20:00
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
работа со строками DeDoK Общие вопросы Delphi 2 02.02.2010 23:27
работа со строками Андрей.12 Помощь студентам 3 15.11.2009 19:42
Работа со строками semennn Помощь студентам 6 05.05.2009 19:10