Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум программистов _ Delphi - FAQ _ Что то не работает?

Автор: ЖэКЫЧ 21:04:2008, 04:56

CODE
Program M65;
uses crt;
type slovo = packed array [1..9] of char;
Number_Phone=100000..999999;
Znakom=record
Family:slovo;
Number:Number_Phone;
end;
Page=array[1..20] of znakom;
zapisnaia=array[1..20] of page;
Procedure Fam(Zp:zapisnaia; Nt:Number_Phone; var F:slovo);
var
i,l:integer;
ext:boolean;
begin
ext:=false;
i:=0;
repeat
inc(i);
l:=0;
repeat
inc(l);
if zp[i,l].Number=nt then begin
f:=zp[i,l].family;
ext:=true;
end;
until (l=20) or (ext);
until (i=20) or (ext);
end;
var
Kniga:zapisnaia;
num:Number_Phone;
f:slovo;
begin
randomize;
clrscr;
f:=' ';
Kniga[1,1].number:=111111;
Kniga[1,1].family:='Сидоров';
Kniga[2,1].number:=211111;
Kniga[2,1].family:=' ‘Петров';

fam(kniga,111111,f);
if f<>' ' then writeln('family: ',f) else writeln('family not found');
readln;
end.



Задача выдаёт не тот результат, что не так подскажите пожалуйста!

Автор: sax_ol 21:04:2008, 07:15

Цитата(ЖэКЫЧ @ 21:04:2008 - 06:56) *
i:=0;
...
l:=0;
?

Автор: Yason 21:04:2008, 12:06

Проверить нечем, но мне подозрительно вот это сравнение, разве массивы можно сравнивать как строки?

Код
if f<>'          ' then writeln('family: ',f) else writeln('family not found')


Кроме того, в процедуру передаётся массив размером 20*20*(9+4)=5200, не каждый стек это выдержит. Лучше так:
Цитата
Procedure Fam(const Zp:zapisnaia; Nt:Number_Phone; var F:slovo);

P.S. Не помню, понимает ли Turbo Pascal const перед параметром, если нет - заменить на var.

Автор: ЖэКЫЧ 22:04:2008, 17:10

Не помогает, всё равно не то выводит, и вести ничего нельзя

Автор: Yason 22:04:2008, 17:39

А объясните, пожалуйста, как Вам удалось переменной Kniga[1,1].family типа packed array [1..9] of char присвоить значение 'Сидоров' типа packed array [1..7] of char.
При добавлении нужного количества пробелов, программа выдаёт "Сидоров". Или по-вашему, это "не тот результат"?

Автор: ЖэКЫЧ 23:04:2008, 05:04

И в правду, всё нормально!
Спасибо всем за помощь! rolleyes.gif

Русская версия Invision Power Board (http://www.nulled.ws)
© Invision Power Services (http://www.nulled.ws)