![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
setConsoleOutputCP(1251);
SetConsoleCP(1251); Последний раз редактировалось Smile188, 12.10.2016 в 10:45. |
|
#2
|
||||
|
||||
|
Оффтоп:
Цитата:
Цитата:
|
|
#3
|
|||
|
|||
|
А точно нужно находить элемент списка, у которого СЛЕДУЮЩИЙ элемент содержит нечётное число?
Может быть надо так Код:
function Found_last_elem(L:TList):TList;
begin
result:=L;
while (result <> nil) do
begin
if (result^.info mod 2) <>0 then exit;
result:=result^.next;
end;
end;Код:
if Podd=nil then
writeln('Нечетных чисел нет') elseИ, кстати, если это Дельфи, то значок ^ можно не писать. |
|
#4
|
|||
|
|||
|
Спасибо, но ошибки мне выдает , когда я пытаюсь вставить квадрат первого нечетнооо числа
|
|
#5
|
||||
|
||||
|
А квадрат вычисляете
Код:
squared := Sqr(number); |
|
#6
|
|||
|
|||
|
Да, влетаешь на result=nil во втором условии. Надо так:
Код:
function Found_last_elem(L:TList):TList; begin result:=L; while(result^.next<>nil)and (result^.info mod 2=0 ) do result:=result^.next; end; Код:
var
NewItem : TList;
...
Podd:=Found_last_elem(L);
if Podd = Nil then writeln('No odd elements.')
else
begin
New(NewItem);
New^.Info := sqr(Podd^.info);
New^.next := Podd^.next;
Podd^.next := NewItem;
end;
... |
|
#7
|
|||
|
|||
|
Программа запустилась, но не возводит в квадрат число
Посмотрите пожалуйста, может есть какие нибудь ошибки Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Un_list in 'Un_list.pas',
Windows;
function Found_last_elem(L:TList):TList;
begin
result:=L;
while(result^.next<>nil)and (result^.info mod 2=0 ) do
result:=result^.next;
end;
Var L:TList;
Podd: TList;
newItem:Tlist;
begin
setConsoleOutputCP(1251);
SetConsoleCP(1251);
Create_Order_from_file(L, 'input.txt');
Print_to_file(L,'output.txt');
Podd:=Found_last_elem(L);
if Podd = Nil then writeln('нет нечетных.')
else
begin
New(NewItem);
Newitem^.Info := sqr(Podd^.info);
Newitem^.next := Podd^.next;
Podd^.next := NewItem;
end;
Print_to_file(L,'output.txt');
Clear(L);
writeln('Файл создан ');
readln;
end.Код:
unit Un_list;
interface
type
TInfo=integer;
Tlist=^Node;
Node=record
info:TInfo;
next:Tlist;
end;
Procedure Create_Order_from_file(var L:Tlist; file_name:string);
Procedure Print_to_file(L:Tlist; file_name:string);
Procedure Clear(var L:Tlist);
Function Del_After_Node(var Pnode:TList):TInfo;
implementation
procedure Init(var L:Tlist);
begin
new(L);
L^.next:=nil;
end;
Function Empty(L:TList):boolean;
begin
result:=L^.next= nil;
end;
Procedure Add_after_Node(var PNode:TList; new_elem:TInfo);
var p:TList;
begin
new(p);
p^.info:=new_elem;
p^.next:=PNode^.next;
Pnode^.next:=p;
end;
Function Del_After_Node(var PNode:TList):TInfo;
var p:TList;
begin
p:=PNode^.next;
PNode^.next:=p^.next;
result:=p^.info;
p^.next:=nil;
dispose(p);
end;
Function Found_Place(L:TList; new_elem:TInfo):TList;
begin
result:=L;
While(result^.next<>nil) and (result^.next^.info< new_elem) do
result:=result^.next;
end;
Procedure Create_Order_from_file(var L:TList; file_name:string);
var f:Textfile;
new_elem:TInfo;
place:TList;
begin
Init(L);
AssignFile(f,file_name);
Reset(f);
While not eof(f) do
begin
read(f,new_elem);
place:=Found_place(L, new_elem);
Add_after_Node (Place,new_elem);
end;
closeFile(f);
end;
Procedure Print_to_file(L:TList; file_name:string);
var
p:TList;
f:Textfile;
begin
p:=L^.next;
AssignFile(f,file_name);
Rewrite(f);
While p<> nil do
begin
Write(f,p^.info, ' ');
p:=p^.next;
end;
CloseFile(f);
end;
Procedure Clear(var L:TList);
begin
While not Empty(L) do
Del_after_Node(L);
dispose(L);
end;
end. |
|
#8
|
||||
|
||||
|
Программа запустилась и возводит в квадрат каждое нечётное число, это отображается в конечном файле output.txt, где за нечетчислом вставляется его квадрат, что не так, не понятки
|
|
#9
|
|||
|
|||
|
..............
Последний раз редактировалось Smile188, 12.10.2016 в 10:47. |