Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 125

Построение элементов в файле

14.11.2014, 20:06. Показов 448. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан файл f, компоненты которого - целые числа и никакая из компонент не равна 0.
Файл f содержит в себе равное количество отрицательных и положительных чисел.
(Это информация по вводу для пользователя).
Используя вспомогательный файл h, переписать файл f в файл q так,
чтобы в файле q не было двух соседних чисел с одинаковым знаком.

Контрольный пример:
Ввод: 3,4,-3,5,6,7,-8,10,-11,-12,-13,-15
Вывод: 3,-3,4,-8,5,-11,6,-12,7,-13,12,-15

P.S.: Использовать переменные типа text нельзя.

Я так понимаю, что пользователь должен ввести данные согласно условию задачи.
Программа используя файлы, должна эти данные обработать
("Используя вспомогательный файл h, переписать файл f в файл q") и вывести
результат на экран.

Не пойму как осуществить расстановку и как для этого в программе хранить данные.
Прошу помочь с программой. (Понимаю, что требуется, но придумать не могу).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.11.2014, 20:06
Ответы с готовыми решениями:

Построение и настройка фильтра pivot-а в файле
Всем добрый день, коллеги по цеху! Опишу в кратце, какая стоит задача и какая проблема взникает Есть большое количество файлов...

Тема «текстовый файл» (в файле хранятся целые числа). В файле найти сумму квадратов элементов
,,,

Удаление элементов списка, находящегося в одном файле, из списка, имеющегося в другом файле
По сути есть два списка, одни - файлы в папке, которые рекурсивно сканятся и в одну строчку складываются, а другой список файлов в...

3
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,159
Записей в блоге: 1
14.11.2014, 22:04
1) проходите по файлу f, переписывая в h отрицательные числа
2) читаете из f положительные, из h отрицательные поочередно и пишете в q
0
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 125
15.11.2014, 00:47  [ТС]
Сейчас попробую. Если что не выйдет, то отпишусь.

Беда, программа работает корректно только тогда, когда я сначала введу все положительные, а потом отрицательные(или наоборот при смене в 25-ой строке b<0 на b>0). Именно с моим примером не работает - оно как-то меняет знаки числам и на выходе получается, что сначала\в конце один\два положительных\отрицательных числа, а потом все либо положительные, либо отрицательные.

Pascal
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
Program pr10;
uses    crt;
const   n=6;
var     f,h,q:file of integer;
        i,a,b,c,d,e:integer;
 
 
Begin
assign(f,'file_f.txt');
assign(h,'file_h.txt');
assign(q,'file_q.txt');
rewrite(f);
textcolor(black);
textbackground(lightgray);
clrscr;
for i:=1 to n do
Begin
write('Enter [',i,'] component of file: ');
readln(a);
write(f,a);
End;
close(f);
reset(f);
rewrite(h);
for i:=1 to n do
Begin
read(f,b);
if b<0 then
write(h,b);
End;
close(f);
close(h);
reset(f);
reset(h);
rewrite(q);
while not eof(h) do
Begin
read(f,c);
read(h,d);
write(q,c);
write(q,d);
End;
close(h);
close(q);
close(f);
reset(q);
writeln;
write('Result saved in file: ');
while not eof(q) do
Begin
read(q,e);
write(e); write(',');
End;
close(q);
readln;
End.
При вводе 1,2,3,-1,-2,-3 Выводит правильно, а при Вводе 1,-2,-3,-1,2,3 то Выводит 1,-2,-2,-3,-3,-1

Добавлено через 1 час 29 минут
Вот ещё переделал. Просто поставил на всякий случай модуль числа через одну позицию.
Но он дублирует числа(в данном случае 3). Как от этого избавиться?

Pascal
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
Program pr10;
uses    crt;
const   n=12;
var     f,h,q:file of integer;
        i,a,b,c,d,e:integer;
 
 
Begin
assign(f,'file_f.txt');
assign(h,'file_h.txt');
assign(q,'file_q.txt');
rewrite(f);
textcolor(black);
textbackground(lightgray);
clrscr;
for i:=1 to n do
Begin
write('Enter [',i,'] component of file: ');
readln(a);
write(f,a);
End;
close(f);
reset(f);
rewrite(h);
for i:=1 to n do
Begin
read(f,b);
if b<0 then
write(h,b);
End;
close(f);
close(h);
reset(f);
reset(h);
rewrite(q);
while not eof(h) do
Begin
read(f,c);
c:=abs(c);
read(h,d);
write(q,c);
write(q,d);
End;
close(h);
close(q);
close(f);
reset(q);
writeln;
write('Result saved in file: ');
while not eof(q) do
Begin
read(q,e);
write(e); write(',');
End;
close(q);
readln;
End.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
15.11.2014, 07:54
Pascal
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
uses crt;
var f,g,h:file of integer;
    a,kp,ko:integer;
begin
clrscr;
assign(f,'fileF');
rewrite(f);
{введем числа с контролем, чтобы не юыло 0 и
было поровну положительных и отрицательных}
kp:=0;
ko:=0;
writeln('Введите равное количество целых положительных и отрицательных чисел');
writeln('конец ввода число 50');
repeat
 repeat
  write('a=');
  readln(a);
 until a<>0;
if a<>50 then
 begin
  if a>0 then inc(kp)
  else inc(ko);
  write(f,a);
 end
else
 begin
  if ko>kp then writeln('Введите еще ',ko-kp,' положительных чисел и число 50')
  else if kp>ko then writeln('Введите еще ',kp-ko,' отрицательных чисел и число 50')
 end;
until(a=50)and(kp=ko);
clrscr;
assign(h,'fileH');
rewrite(h);
writeln('Исходный файл F');
seek(f,0);
while not eof(f)do
 begin
  read(f,a);
  write(a,' ');
  if a<0 then write(h,a);{пишем отрицательные в файл h}
 end;
writeln;
close(h);{закроем пока файл h}
assign(g,'fileG');
rewrite(g);
seek(f,0);
reset(h);{и откроем}
while not eof(f) do
 begin
  read(f,a);{читаем файл f}
  if a>0 then{если положительное}
   begin
    write(g,a);{пишем его}
    read(h,a); {читаем очереное число из файла h}
    write(g,a);{пишем его}
    end
  end;
close(f);
close(h);
erase(h);{уничтожим вспомогательный файл}
writeln('Файл G');
seek(g,0);
while not eof(g) do
 begin
  read(g,a);
  write(a,' ')
 end;
close(g);
readln
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.11.2014, 07:54
Помогаю со студенческими работами здесь

Подсчитать количество элементов и сумму элементов одномерного массива, записанного в текстовом файле
Дан(какой-то) текстовый файл содержащий элементы одномерного массива.сколько элементов не известно.Подсчитать количество элементов и их...

Построение вектора из элементов матрицы
Помогите найти в чем проблема Пусть дана матрица А(n*n). Постройте вектор, каждый элемент которого равен наибольшему количеству равных...

Построение матрицы и нахождение суммы ее элементов
Помогите пожалуйста,уже случился вывих мозга с этими матрицами. Задача в следующем: Дана матрица А состоящая из 2 строк и 3 столбцов,...

Построение матрицы из элементов двух векторов
Всем Доброго Утра! Помогите написать и протестировать функцию.

Построение сетки с точками - добавление новых элементов
Здравствуйте! На первом этапе стоит довольно простая задача - сгенерировать рандомные точки на сетке с известными координатами. ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru