Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Что то не работает?, Не тот результат
ЖэКЫЧ
Вставить ник
сообщение 21:04:2008, 04:56
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 33
Регистрация: 12:11:2007
Пользователь №: 13 656
Специализация: Программист (Студент!)!



Репутация: - 0 +


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.



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

Сообщение отредактировал European - 21:04:2008, 06:39
Причина редактирования: Установка тегов кода
Подняться вверх 
 
Сообщение #1
 
Новая тема 
Ответов (1 - 5)
sax_ol
Вставить ник
сообщение 21:04:2008, 07:15
Цитата Ответить 


==============
*****

Группа: Модеры
Сообщений: 1 740
Регистрация: 11:01:2007
Пользователь №: 8 750
Специализация: specialist



Репутация: - 27 +


Цитата(ЖэКЫЧ @ 21:04:2008 - 06:56) *
i:=0;
...
l:=0;
?
Подняться вверх 
 
Сообщение #2
Yason
Вставить ник
сообщение 21:04:2008, 12:06
Цитата Ответить 


Продвинутый
**

Группа: Программист
Сообщений: 100
Регистрация: 27:02:2004
Пользователь №: 296



Репутация: - 5 +


Проверить нечем, но мне подозрительно вот это сравнение, разве массивы можно сравнивать как строки?
Код
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.
Подняться вверх 
 
Сообщение #3
ЖэКЫЧ
Вставить ник
сообщение 22:04:2008, 17:10
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 33
Регистрация: 12:11:2007
Пользователь №: 13 656
Специализация: Программист (Студент!)!



Репутация: - 0 +


Не помогает, всё равно не то выводит, и вести ничего нельзя
Подняться вверх 
 
Сообщение #4
Yason
Вставить ник
сообщение 22:04:2008, 17:39
Цитата Ответить 


Продвинутый
**

Группа: Программист
Сообщений: 100
Регистрация: 27:02:2004
Пользователь №: 296



Репутация: - 5 +


А объясните, пожалуйста, как Вам удалось переменной Kniga[1,1].family типа packed array [1..9] of char присвоить значение 'Сидоров' типа packed array [1..7] of char.
При добавлении нужного количества пробелов, программа выдаёт "Сидоров". Или по-вашему, это "не тот результат"?
Подняться вверх 
 
Сообщение #5
ЖэКЫЧ
Вставить ник
сообщение 23:04:2008, 05:04
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 33
Регистрация: 12:11:2007
Пользователь №: 13 656
Специализация: Программист (Студент!)!



Репутация: - 0 +


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


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 16:05:2008 - 17:13
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net