Идеи становятся силой...
121 / 121 / 64
Регистрация: 08.12.2009
Сообщений: 445
1

Сформировать файл целых чисел, переставить на начало файла его последний компонент

02.06.2010, 17:43. Показов 1394. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброе время суток, помогите кто знает.
Сформировать файл целых чисел, переставить на начало файла его последний компонент.

Буду очень благодарен.

Добавлено через 12 часов 42 минуты
подскажите кто знает?*

Добавлено через 4 часа 33 минуты
подскажите как сделать лучше, обменять просто информационные поля или же сохранять элемент первый и последний , удалять и потом переставлять просто?*
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2010, 17:43
Ответы с готовыми решениями:

Сформировать текстовый файл input.txt, состоящий из целых чисел, вывести его на экран
Задача 9. Сформировать текстовый файл input.txt, состоящий из целых чисел, вывести его на экран, в...

В массиве целых чисел, рассматриваемом как соединение двух его отрезков, переставить начало и конец
задача: дан массив целых чисел рассматриваемый как соединение двух его отрезков: x..x длины m и...

Дан файл целых чисел. Найти его последний локальныйй максимум
дан файл целых чисел. найти его последний локальныйй максимум (элемент, которыйй больше своих...

Сформировать массив 100 целых случайных чисел в диапазоне от 0 до 100. Напечатать его. Все числа больше 30, но меньше 70 переписать в начало массива
Сформировать массив 100 целых случайных чисел в диапазоне от 0 до 100. Напечатать его. Все числа...

10
Фрилансер
452 / 433 / 117
Регистрация: 01.06.2010
Сообщений: 1,314
02.06.2010, 17:53 2
Тебе нужно переставить именно компонент, т.е. последний станет первым, первый станет вторым, а предпоследний станет последним...
0
636 / 219 / 64
Регистрация: 03.11.2009
Сообщений: 488
02.06.2010, 19:05 3
А сделать это нужно посредством линейного списка?
0
Идеи становятся силой...
121 / 121 / 64
Регистрация: 08.12.2009
Сообщений: 445
02.06.2010, 19:19  [ТС] 4
Цитата Сообщение от lera8 Посмотреть сообщение
А сделать это нужно посредством линейного списка?
можешь плиз примерно накидать как оно будет выглядит?*)
0
636 / 219 / 64
Регистрация: 03.11.2009
Сообщений: 488
02.06.2010, 19:38 5
Постараюсь вам что нить набросать
0
Идеи становятся силой...
121 / 121 / 64
Регистрация: 08.12.2009
Сообщений: 445
02.06.2010, 19:48  [ТС] 6
Цитата Сообщение от lera8 Посмотреть сообщение
Постараюсь вам что нить набросать
буду благодарен)
у меня как бы есть начал, заполнение и вывод на экран
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
71
72
73
74
type
  PNode = ^Node;{Указатель на узел}
  Node = record     {Структура узла}
    chis, nom: integer; {число и порядковый номер числа в списке}
    next: PNode; {Указатель на след}
  end;
 
var
  Head, p: PNode;
  i, k, n: integer;
 
 
{Проц доб в список, посмотрите в теме Динамические структ там всё подробно написанно}
procedure AddToList(var Head1: PNode; k, i: integer);
var
  tmp: PNode;
begin
  if Head1 = nil then
  begin
    New(Head1);
    tmp := Head1;
  end
  else
  begin
    tmp := Head1;
    while tmp^.next <> nil do
      tmp := tmp^.next;
    New(tmp^.next);
    tmp := tmp^.next;
  end;
  tmp^.next := nil;
  tmp^.chis := k;
  tmp^.nom := i;
end;
 
{Проц вывода списка на экран}
procedure Print(Head1: PNode);
begin
  while Head1 <> nil do  {Пока голова не станет равной пустоте делать}
  begin
    write(Head1^.chis:5);
    Head1 := Head1^.next; {Преход на след элемент}
  end;
end;
 
{процедура удаления списка}
procedure FreeSpisok(var Head1: PNode);
var
  tmp: PNode;
begin
  while Head1 <> nil do
  begin
    tmp := Head1;
    Head1 := Head1^.next; {Преставляем голову на след элемент за ней и }
    dispose(tmp);  {удаляем элем}
  end;
end;
 
 
begin
  Head := nil;
  writeln('Введите колво элементов');
  readln(n);
  Randomize;
  for i := 1 to n do
    repeat
      k := random(50);
      if p = nil then
        AddToList(Head, k, i);
    until p = nil;
  Print(Head);
  writeln;
  FreeSpisok(Head);
end.
0
636 / 219 / 64
Регистрация: 03.11.2009
Сообщений: 488
02.06.2010, 20:00 7
хм а ты уверен что всё таки нужен линейный список? эту задачу намного легче решить используя стек
0
Идеи становятся силой...
121 / 121 / 64
Регистрация: 08.12.2009
Сообщений: 445
02.06.2010, 20:03  [ТС] 8
Цитата Сообщение от lera8 Посмотреть сообщение
хм а ты уверен что всё таки нужен линейный список? эту задачу намного легче решить используя стек
к сожалению Вам наверное видней как легче....
0
636 / 219 / 64
Регистрация: 03.11.2009
Сообщений: 488
02.06.2010, 20:23 9
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Вот ваша программа написана без комментов если что не понятно спрашивайте
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
type
PNode=^Node;
Node=record
  num:integer;
  next:PNode;
end;
var
Head:PNode;
f:text;
n:integer;
 
procedure AddToStack(var Head1:PNode;k:integer);
var
tmp:PNode;
begin
  New(tmp);
  tmp^.num:=k;
  tmp^.next:=Head1;
  Head1:=tmp;
end;
procedure ReadFromF(var Head1:PNode;fl:text);
var
k:integer;
 
begin
  reset(fl);
   while not EOF(fl) do
     begin
       while not EOln(fl) do
         begin
          read(fl,k);
          AddToStack(Head1,k);
         end;
       readln(f);
     end;
      close(fl);
end;
procedure Print(Head1:PNode);
begin
  if Head1=nil then
    begin
      writeln('Стек пуст!');
      exit;
    end;
      while Head1 <> nil do
        begin
          write(Head1^.num:4);
          Head1:=Head1^.next;
        end;
end;
procedure ChangeF(var fl:text;Head1:PNode);
begin
  rewrite(fl);
    while Head1 <> nil do
      begin
        write(f,Head1^.num:2);
        Head1:=Head1^.next;
      end;
   close(fl);
end;
 
procedure FreeStack(var Head1:PNode);
var
tmp:PNode;
begin
  while Head1 <> nil do
    begin
      tmp:=Head1;
      Head1:=Head1^.next;
      Dispose(tmp);
    end;
end;
 
 
begin
  Head:=nil;
  assign(f,'c:\t.txt');
  writeln('Данный файл');
   reset(f);
     while not EOF(f) do
        begin
          read(f,n);
          write(n:4);
        end;
  ReadFromF(Head,f);
  writeln;
  writeln('Содержимое списка');
  Print(Head);
  ChangeF(f,Head);
  FreeStack(Head);
  writeln;
  writeln('Изменнёный файл');
   reset(f);
     while not EOF(f) do
        begin
          read(f,n);
          write(n:4);
        end;
  close(f);
end.
1
Идеи становятся силой...
121 / 121 / 64
Регистрация: 08.12.2009
Сообщений: 445
02.06.2010, 20:27  [ТС] 10
большое Валерия, думаю что разберусь)))
0
636 / 219 / 64
Регистрация: 03.11.2009
Сообщений: 488
03.06.2010, 13:04 11
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

https://www.cyberforum.ru/pascal/thread77419.html вот вам в помощи а и ещё забыла сказать задача решена при помощи стека а не линейного списка т.к. создавать список линейный и к тому же односвязный не вижу смысла

Добавлено через 4 минуты
Цитата Сообщение от lera8 Посмотреть сообщение
write(f,Head1^.num:2);
вот в это строке измените 2 на 5 или 6 а то будет проблемка при записи в файл

Добавлено через 16 часов 31 минуту
Вот как и обещала я исправила, а та задача что я решила вам может быть пригодиться когда нибудь))
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
type
PNode=^Node;
Node=record
  num:integer;
  next:PNode;
end;
var
Head:PNode;
f:text;
n:integer;
 
procedure AddToSpis(var Head1:PNode;k:integer);
var
tmp:PNode;
begin
  if Head1=nil then
    begin
      New(Head1);
      tmp:=Head1;
    end
  else
    begin
      tmp:=Head1;
        while tmp^.next <> nil do
          tmp:=tmp^.next;
        New(tmp^.next);
        tmp:=tmp^.next;
    end;
     tmp^.next:=nil;
     tmp^.num:=k;
end;
 
procedure ReadFromF(var Head1:PNode;fl:text);
var
k:integer;
 
begin
  reset(fl);
   while not EOF(fl) do
     begin
       while not EOln(fl) do
         begin
          read(fl,k);
          AddToSpis(Head1,k);
         end;
       readln(f);
     end;
      close(fl);
end;
procedure Print(Head1:PNode);
begin
  if Head1=nil then
    begin
      writeln('Список пуст!');
      exit;
    end;
      while Head1 <> nil do
        begin
          write(Head1^.num:4);
          Head1:=Head1^.next;
        end;
end;
procedure ChangeF(var fl:text;Head1:PNode);
var
tmp:PNode;
begin
  rewrite(fl);
  tmp:=Head1;
    while tmp^.next <> nil do
       tmp:=tmp^.next;
    write(fl,tmp^.num:5);
    while Head1 <> tmp do
       begin
         write(fl,Head1^.num:5);
         Head1:=Head1^.next;
       end;
       
   close(fl);
end;
 
procedure FreeSpis(var Head1:PNode);
var
tmp:PNode;
begin
  while Head1 <> nil do
    begin
      tmp:=Head1;
      Head1:=Head1^.next;
      Dispose(tmp);
    end;
end;
 
 
begin
  Head:=nil;
  assign(f,'c:\t.txt');
  writeln('Данный файл');
   reset(f);
     while not EOF(f) do
        begin
          read(f,n);
          write(n:4);
        end;
  ReadFromF(Head,f);
  writeln;
  writeln('Содержимое списка');
  Print(Head);
  ChangeF(f,Head);
  FreeSpis(Head);
  writeln;
  writeln('Изменнёный файл');
   reset(f);
     while not EOF(f) do
        begin
          read(f,n);
          write(n:4);
        end;
  close(f);
end.
1
03.06.2010, 13:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2010, 13:04
Помогаю со студенческими работами здесь

Дан файл целых чисел, содержащий не менее четырех элементов. Вывести его нулевой, первый, предпоследний и последний элем
Дан файл целых чисел, содержащий не менее четырех элементов. Вывести его нулевой, первый,...

Сформировать два текстовых файла из целых чисел. Записать в третий файл минимальный элемент первого файла и максимальный элемент второго файла
Тема: работа с текстовыми файлами с использованием стандартных функций библиотеки stdio.h Нужно...

Дан файл,компонентами его яв-ся числа.Число компонент делится на 2.Создать новый файл,куда будет записываться наименьшее из каждой пары чисел 1 файла
#include &quot;fsteam&quot; #include &quot;iomanip&quot; using namespace std; int main() {ifstream in(&quot;f.txt&quot;);...

Сформировать файл X целых чисел. Записать в файл R все компоненты файла X, которые делятся на 2 и не делятся на 5.
Сформировать файл X компонентами которого являются целые числа. Записать в файл R все компоненты...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru