С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Maqvaer
3 / 3 / 0
Регистрация: 23.10.2009
Сообщений: 25
#1

не работает на большом количестве - C++

26.10.2009, 16:45. Просмотров 473. Ответов 4
Метки нет (Все метки)

здравствуйте!
Программа сравнивает наличие строки из файла "наречия.txt" в файле "словарь.txt". Причем в "наречия.txt" слова представлены в виде строк :
Код
информаш
информгаз,
а в файле "словарь.txt" слдующим образом:
Код
информаш 2805 61 36 Фг - 29
информгаз 36 27 397 Уэ -
Когда оба файла весят порядка 2ух КБ, прогрмма отлично работает. Надо, чтоб работала на 158 КБ файла "наречия.txt" и почти 5000 КБ файла "словарь.txt"(в результирующем файле при большом количестве данных записываются только знаки "+", а надо "+ и найденное слово"). Помогите, пожалуйста!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
 
 
int main(void)
 
{
 
FILE *file_from;
FILE *file_in;
FILE *file_to;
 
char* file_words = "наречия.txt";
char* file_vocab = "словарь.txt";
char* file_word_in_vocab = "слова_в_словаре.txt";
 
if(!(file_from = fopen( file_words, "r" )))//файл где слова для сверки(наречия)
{
    printf("File %s not found\n", file_words);
    return 0;
}
if(!(file_to=fopen(file_word_in_vocab, "w"))) //файл с результатом работы
    {
        printf("File %s not found\n", file_word_in_vocab);
        return 0;
    }
 
char word[23];
char word_name[23];
 
while(fgets (word,sizeof word, file_from))
{
 
int c=0;
char w[23]="";
 
while(word[c])
{
if (word[c]=='\n') w[c]-='\0';
else w[c]=word[c];
c++;
 
}
 
if(!(file_in=fopen(file_vocab,"r"))) //файл словаря
{
    printf("File %s not found\n", file_vocab);
    return 0;
}
 
while(fgets (word_name,sizeof word_name, file_in))
 {
int i=0;
char temp[23]= "";
 
while(word_name[i]!=' ')
{
    if (word_name[i]=='\n') temp[i]=word_name[i];
    else temp[i] = word_name[i];
    i++;
}
 
if (strcmp(w,temp)==0)
{
    fputs("+", file_to);
    fputs(w, file_to);
    fputs("\n", file_to);
 
}
}
fclose(file_in);
}
fclose( file_to);
fclose( file_from);
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2009, 16:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не работает на большом количестве (C++):

Нестабильная работа программы при большом количестве строк во входном потоке - C++
Вопрос с подвохом: пользователь вставляет n строк символов в консоль, где n &gt; 1000. Задание - сделать так, чтобы программа не зависала и не...

ГСЧ в большом диапазоне - C++
rand()% ограничен диапазоном от 0 до ~ 32 000. Нужно ГСЧ в меняющемся диапазоне от 0 до 1 000 000. Подскажите, как это реализовать на...

Найти в большом изображении маленькое - C++
Здравствуйте! Хочу найти в большом изображении маленькое, но не понимаю как. Мне один человек говорит, что нужно сравнивать...

Ошибка при большом размере массива - C++
Есть код: #include &lt;stdio.h&gt; main() { int y=0; const int i=10000000; // если i=1000000 работает, если больше, например...

Создание динамической галереи: при большом количестве картинок приложение работает медленно - C#
Необходимо динамически выводить таблицу из картинок. Картинок может быть более 100 штук, соответственно появляется скролинг. Сейчас...

отправка chekbox-ов в большом количестве! - PHP
доброго времени суток ув.программисты! у меня такая ситуация: на странице цикл выводид n записей, в каждой есть checkbox, параметр name...

4
niXman
Эксперт С++
3139 / 1451 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
26.10.2009, 16:57 #2
То ли у меня дежавю, то ли я этот код где-то уже видел(возможно не на одном форуме).

По теме:
1. Код ужасен. Отформатируй его, и вставь в теги.
2. Почему не используешь возможности С++ ?
3. Прочитай все файлы в словесный/строковой массив, и работай на здоровье.
1
Maqvaer
3 / 3 / 0
Регистрация: 23.10.2009
Сообщений: 25
26.10.2009, 17:12  [ТС] #3
Ценю любую критику! Я самоучка, можно поподробней о возможностях C++ , что имеется в виду.
0
niXman
Эксперт С++
3139 / 1451 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
26.10.2009, 18:07 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main() {
   std::ifstream file(file name);
   if ( !file ) {
      std::cerr << "Error open file" << std::endl;
      return 1;
   }
 
   std::vector<std::string> array((std::istream_iterator<std::string>(file)),
       (std::istream_iterator<std::string>())
   );
 
   reutrn 0;
}
Это пример как загрузить содержимое текстового файла в массив. Разве не симпотней выглядит?

Добавлено через 1 минуту
В общем, написав на С++, объем кода сократится в трое. И качество будем много лучше.
1
Maqvaer
3 / 3 / 0
Регистрация: 23.10.2009
Сообщений: 25
28.10.2009, 15:18  [ТС] #5
спасибочки!! счас программа работает, можно заняться как Вы говорите "симпонтностью" кода
0
28.10.2009, 15:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2009, 15:18
Привет! Вот еще темы с ответами:

Вставка одинаковых фраз в большом количестве - VBA
Вот сделал документик. Немного грустный, но это жизнь ))) Смысл - нужно включать большое количество одинаковых элементов . ...

QTableView зависает на большом количестве строк - Python
При добавлении в таблицу большого количества данных зависает виджет QTableVIew. Когда данные загрузились я их вижу, но стоит мне скроллом...

Вставить подпись на большом количестве страниц - VBA
Доброго времени суток! Подскажите, пожалуйста, как быть если автофигур много? То есть нужно вставить место для подписи на очень большом...

Поиск в большом количестве документов word - Delphi
Доброго времени суток, уважаемые форумчане! Столкнулся с необходимостью поиска в большом количестве документов Word (десятки тысяч)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.