|
|
Регистрация | << Правила форума >> | 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. |