Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для Alekseenko
1 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 4

Работа с текстовым файлом

21.10.2013, 18:45. Показов 1813. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание: "Удалить все четные числа из текстового файла"

Предварительно я загрузила текстовый файл в мемо1, а с мемо1 в масив и вот что получилось.

C++
1
2
3
4
5
6
7
8
9
10
OpenDialog1->FileName;
  if (OpenDialog1->Execute())
       {
        Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
       }
 
 for (int i=0;i<Memo1->Lines->Count;i++)
{
 b[i]=StrToFloat (Memo1->Lines->Strings[i]);
}
Поиск четных и их удаление:
C++
1
2
3
4
5
6
for (int i=0;i<Memo1->Lines->Count;i++)
{
   if (b[i]%2==0)
       {  i++;
          b[i-1] = b[i];
        }
Кто-то может предложить более простой способ решения задачи, а то у меня что-то не получается - не работает программа.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.10.2013, 18:45
Ответы с готовыми решениями:

Работа с текстовым файлом
В первом Memo1 в один столбик записаны значения координат X. Во втором Memo2 - значения координат Y. Как лучше организовать сохранение этих...

Работа с текстовым файлом
Поставлена задача находить ссылки на страницы из загруженной страницы HTML. ее получаю благодаря TNMHTTP в стринговое поле Body теперь...

Работа с текстовым файлом
Напишите программу, которая позволяет: а) выводить на экран содержи-мое указанного текстового файла; б) считывать из этого файла первые три...

7
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
21.10.2013, 19:13
А где удаление? Как вариант, заменяешь четные значения на, допустим, нулевые и потом их "игнорируешь".
В результате элементы массива, не равные нулю, и будут тем, что требуется найти (поместишь их в текстовый файл).
C++
1
2
3
for (int i=0;i<Memo1->Lines->Count;i++)
  if (b[i]%2==0)
    b[i] = 0;
1
 Аватар для Alekseenko
1 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 4
21.10.2013, 23:07  [ТС]
gunslier, сейчас попробую ваш способ. Спасибо.

Но мне все же интересно почему это не работает, вроде как намного проще способ: проверять четное число и если оно четное, то заменить след. числом.
Цитата Сообщение от Alekseenko Посмотреть сообщение
C++
1
2
3
4
5
6
for (int i=0;i<Memo1->Lines->Count;i++)
{
if (b[i]%2==0)
{ *i++;             // переход к след. числу
 b[i-1] = b[i]; // заменяю предыдущее число текущим
}
Выдает ошибку на:
C++
1
if (b[i]%2==0)
BCC32 Error] Unit1.cpp(52): E2060 Illegal use of floating point
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
22.10.2013, 01:05
Потому что элементы массива имеют (судя по всему) тип float, а операция % - получение остатка от деления - применима только для "целых чисел". Попробуй в условии (if) изменить b[i] на int(b[i]).
Я не претендую на звание знатока С++ (скорее наоборот), но тебе необходимо иметь хотя бы базовое представление о том, что ты делаешь и как это работает (имею в виду твой вариант кода).
1
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
22.10.2013, 10:57
Цитата Сообщение от Alekseenko Посмотреть сообщение
*i++;
У Вас инкримент указателя на итератор? В первом посте звёздочки нет. Опечатка?

И тут же ошибка в логике программы. При нахождении чётного элемента и замены его "следующим" на следующий итерации этот "следующий" элемент будет пропущен - два чётных подряд не отловятся.
Ещё смещение будет равно количеству найденных чётных.
1
 Аватар для Alekseenko
1 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 4
23.10.2013, 00:24  [ТС]
Все задача решена, сделала без массива намного проще. Спасибо всем за помощь.

Код программы:

Открытие файла и загрузка его в мемо:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
 
OpenDialog1->FileName;
  if (OpenDialog1->Execute())
       {
        Memo1->Lines->Clear();
        Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
       }
 
}
1. Удаление кратных чисел c выводом их в memo2;
2. Вывод среднего значения чисел больших 0 в edit.
3. Сохранение в отдельный файл.
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
void __fastcall TForm1::Button2Click(TObject *Sender)
{
 
 
Memo2->Lines=Memo1->Lines;
 
for (int i=0;i<Memo2->Lines->Count;i++)
{
    TryStrToInt(Memo2->Lines->Strings[i],numb);
   if (int (numb%2)==0)
       {
          Memo2->Lines->Delete(i);
        }
}
for (int i=0;i<Memo2->Lines->Count;i++)
{
    TryStrToInt(Memo2->Lines->Strings[i],numb);
   if (numb>0)
       {
          s+=numb;
          j++;
        }
}
s=s/j;
Edit1->Text=s;
Memo2->Lines->SaveToFile("second.txt");
}
0
23.10.2013, 00:41

Не по теме:

Ну вот можешь, когда хочешь.

0
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
23.10.2013, 09:25
Цитата Сообщение от Alekseenko Посмотреть сообщение
for (int i=0;i<Memo2->Lines->Count;i++)
{
* * TryStrToInt(Memo2->Lines->Strings[i],numb);
* *if (int (numb%2)==0)
* * * *{
* * * * * Memo2->Lines->Delete(i);
* * * * }
}
При удалении i-й строки, i+1-я становится i-й. После этой строчки
Цитата Сообщение от Alekseenko Посмотреть сообщение
for (int i=0;i<Memo2->Lines->Count;i++)
итератор фактически будет на i+2-й позиции. В случае нахождения чётного числа нужен декремент.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.10.2013, 09:25
Помогаю со студенческими работами здесь

Работа с текстовым файлом C ++ Builder
В тексте надо проверить и исправить правила написания на русском языке букв И, А, В вместо Ы, Я, Ю после Ж, Ч, Ш, Щ. Помогите пожалуйста,...

RichEdit работа с текстовым файлом!
Компонент RichEdit после чтения текстового файла посчитывает количество строк, символов, пробелов, цифр. не могу разобраться. поможете буду...

Работа с таблицами Excel и текстовым файлом
Необходимо написать программу в которой расчитывается формула:одна переменная берется из текстового файла, а другая из таблицы Excel. Как...

работа с файлом
Помогите! Как написать программу которая открывает уже сеществующий файл и считывает из него информацмю? Например дан файл 1000045.dmp

Работа с Wav файлом
Пишу курсовую. Надо получить спект Wav файла. Прочитал достаточно статей и форумов. В общем оформил шапку и вытащил параметры. Для...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru