С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
2 / 2 / 0
Регистрация: 08.03.2010
Сообщений: 3
1

считать из входного файла запись многочлена и сформировать список!!

10.05.2010, 10:36. Показов 1672. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, плиз!!
Нужно написать процедуру, которая считывает из входного файла безошибочную запись многочлена(за ней пробел!) и формирует соответствующий список-многочлен p. многочлен записывать в формате например:10х^4-2x^5+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
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 mnog=^link;
     link=record
          power,koef:integer;
          next:mnog
          end;
var p:mnog;
     f:text;
{=======================================}
procedure InputFromFile(var p:mnog);
var l:mnog;
    str,st:string;
    i,temp1,temp2,temp3,code:integer;
begin
  read(f,str);
  writeln(str);
  new(p);
  l:=p;
  temp1:=Pos('x',str);
  if temp1=0 then
  begin
    st:=Copy(str,1,Pos(' ',str)-1);
    Val(st,i,code);
    l^.power:=0;
    l^.koef:=i;
    l^.next:=nil;
    exit
  end;
  st:=Copy(str,1,pos('x',str)-1);
  Val(st,i,code);
  l^.koef:=i;
  Delete(str,1,pos('x',str));
  if str=' ' then
  begin
    l^.power:=1;
    l^.next:=nil;
    exit
  end;
  temp1:=Pos('+',str);
  temp2:=Pos('-',str);
  temp3:=Pos(' ',str);
  if temp1=0 then
     temp1:=100;
  if temp2=0 then
     temp2:=100;
  if temp1<temp2 then
  begin
    st:=Copy(str,2,temp1-2);
    Val(st,i,code);
    l^.power:=i;
    Delete(str,1,temp1)
  end
  else if temp2<temp1 then
       begin
         st:=Copy(str,2,temp2-2);
         Val(st,i,code);
         l^.power:=i;
         Delete(str,1,temp2)
       end
       else if temp1=temp2 then
            begin
              st:=Copy(str,2,temp3-2);
              Val(st,i,code);
              l^.power:=i;
              l^.next:=nil;
              exit
            end;
  repeat
    new(l^.next);
    l:=l^.next;
    temp1:=Pos('x',str);
    if temp1=0 then
    begin
      st:=Copy(str,1,Pos(' ',str)-1);
      Val(st,i,code);
      l^.power:=0;
      l^.koef:=i;
      l^.next:=nil;
      exit
    end;
    st:=Copy(str,1,pos('x',str)-1);
    Val(st,i,code);
    l^.koef:=i;
    Delete(str,1,pos('x',str));
    if str=' ' then
    begin
      l^.power:=1;
      l^.next:=nil;
      exit
    end;
    temp1:=Pos('+',str);
    temp2:=Pos('-',str);
    temp3:=Pos(' ',str);
    if temp1=0 then
       temp1:=100;
    if temp2=0 then
       temp2:=100;
    if temp1<temp2 then
    begin
      st:=Copy(str,2,temp1-2);
      Val(st,i,code);
      l^.power:=i;
      Delete(str,1,temp1)
    end
    else if temp2<temp1 then
         begin
           st:=Copy(str,2,temp2-2);
           Val(st,i,code);
           l^.power:=i;
           Delete(str,1,temp2)
         end
         else begin
                st:=Copy(str,2,temp3-2);
                Val(st,i,code);
                l^.power:=i;
                l^.next:=nil;
                exit
              end;
  until str=' ';
end;
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.05.2010, 10:36
Ответы с готовыми решениями:

Считать из входного файла литеры до первой точки и записать их в текстовый файл (по 40 литер в строке)
Описать процедуру Line40(f), которая считывает из входного файла литеры до первой точи и записывает...

Считать из файла коэффициенты многочлена и создать в памяти соответствующий многочлен
Многочлен P(x) = a0 + a1 x + a2 x2 + ... + an xn с целыми коэффициентами представьте в...

Как считать слово из входного файла в лист типа стринг
Как считать допустим целую фамилию из входного файла в лист типа стринг, можно ли это сделать не...

Считать из входного файла два целых числа, и записать в выходной файл произведение этих чисел (Dev-C++)
Задания к выполнению. 1. Создать файл с названием input_file.txt и записать в него какое-либо...

3
2 / 2 / 0
Регистрация: 24.12.2009
Сообщений: 23
26.05.2010, 04:01 2
i-one-t, у меня сейчас зачет и попалась такая же задача. Если она у тебя уже работает, то дай мне код пожалуйста. Буду признателен.
0
2 / 2 / 0
Регистрация: 08.03.2010
Сообщений: 3
26.05.2010, 15:36  [ТС] 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
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
procedure InputFromFile(var p:mnog);
var l:mnog;
    str,st:string;
    i,temp1,temp2,temp3,code:integer;
begin
  read(f,str);
  new(p);
  l:=p;
  temp1:=Pos('x',str);
  case temp1 of
  0: begin
       st:=Copy(str,1,Pos(' ',str)-1);
       Val(st,i,code);
       l^.power:=0;
       l^.koef:=i;
       l^.next:=nil;
       exit
    end;
  1: begin
       l^.koef:=1;
       Delete(str,1,1)
     end;
  else begin
         temp2:=Pos('+',str);
         if temp2=0 then
            temp2:=1000;
         if (temp1<temp2) then
         begin
           st:=Copy(str,1,temp1-1);
           Val(st,i,code);
           l^.koef:=i;
           Delete(str,1,pos('x',str))
         end
         else if temp1>temp2 then
              begin
                st:=Copy(str,1,temp2-1);
                Val(st,i,code);
                l^.koef:=i;
                Delete(str,1,temp2-1);
                temp2:=-1
              end
       end
  end;
  if str=' ' then
  begin
    l^.power:=1;
    l^.next:=nil;
    exit
  end;
  case str[1] of
  '^': begin
         temp1:=Pos('+',str);
         temp2:=Pos(' ',str);
         if temp1=0 then
            temp1:=1000;
         if temp1<temp2 then
         begin
           st:=Copy(str,2,temp1-2);
           Val(st,i,code);
           l^.power:=i;
           Delete(str,1,temp1)
         end
         else begin
                st:=Copy(str,2,temp2-2);
                Val(st,i,code);
                l^.power:=i;
                l^.next:=nil;
                exit
              end
       end;
  '+': begin
         if temp2=-1 then
         begin
           l^.power:=0;
           Delete(str,1,1)
         end
         else begin
                l^.power:=1;
                Delete(str,1,1)
              end
       end;
  else begin
         l^.power:=1;
         Delete(str,1,1)
       end
  end;
  repeat
    new(l^.next);
    l:=l^.next;
    temp1:=Pos('x',str);
  case temp1 of
  0: begin
       st:=Copy(str,1,Pos(' ',str)-1);
       Val(st,i,code);
       l^.power:=0;
       l^.koef:=i;
       l^.next:=nil;
       exit
    end;
  1: begin
       l^.koef:=1;
       Delete(str,1,1)
     end;
  else begin
         temp2:=Pos('+',str);
         if (temp1<temp2)or(temp2=0) then
         begin
           st:=Copy(str,1,pos('x',str)-1);
           Val(st,i,code);
           l^.koef:=i;
           Delete(str,1,pos('x',str))
         end
         else if temp1>temp2 then
              begin
                st:=Copy(str,1,temp2-1);
                Val(st,i,code);
                l^.koef:=i;
                Delete(str,1,temp2-1);
                temp2:=-1
              end
       end
  end;
  if str=' ' then
  begin
    l^.power:=1;
    l^.next:=nil;
    exit
  end;
  case str[1] of
  '^': begin
         temp1:=Pos('+',str);
         temp2:=Pos(' ',str);
         if temp1=0 then
            temp1:=1000;
         if temp1<temp2 then
         begin
           st:=Copy(str,2,temp1-2);
           Val(st,i,code);
           l^.power:=i;
           Delete(str,1,temp1)
         end
         else begin
                st:=Copy(str,2,temp2-2);
                Val(st,i,code);
                l^.power:=i;
                l^.next:=nil;
                exit
              end
       end;
  '+': begin
         if temp2=-1 then
         begin
           l^.power:=0;
           Delete(str,1,1)
         end
         else begin
                l^.power:=1;
                Delete(str,1,1)
              end
       end;
  else begin
         l^.power:=1;
         Delete(str,1,1)
       end
  end;
  until str=' '
end;
чтобы использовать например 2x^6-x^5 нужно писать 2x^6+-x^5
1
2 / 2 / 0
Регистрация: 24.12.2009
Сообщений: 23
26.05.2010, 21:15 4
Огромное спасибо!!!
0
26.05.2010, 21:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.05.2010, 21:15
Помогаю со студенческими работами здесь

На основе данных входного файла составить список студентов
На основе данных входного файла составить список студентов группы, включив следующие данные: ФИО,...

На основе данных входного файла составить список сотрудников учреждения
Помогите пожалуйста написать программу на языке C# Вариант 5 На основе данных входного файла...

Составить список студентов группы на основе данных входного файла
На основе данных входного файла составить список студентов группы, включив следующие данные: ФИО,...

На основе данных входного файла составить список студентов группы
Помогите пожалуйста срочно испраить программу!! 1. исходная информация хранится в текстовом файле...


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

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