Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2008, 22:22   #1
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию Записи

Отобрать работников с одинаковыми именами.
Прога работает.. не определяет одинаковые имена...


Uses crt;
Type
Worker = record
End;
Var
Num : word;
Imena:string;
Workers:array[1..30] of worker;
s1,s2: string;
i: byte;
begin
clrscr;
writeln ('Имена');
readln('imena');
if s1[i] =s2[i] then
writeln ('Одинаковые имена');
readln;
readkey;
end.


в техникуме недопонял. подскажите что да как.. если есть возможность и желание, вкратце ,плиз, описание функции, которую надо использовать...
Xeon332 вне форума Ответить с цитированием
Старый 12.01.2008, 22:30   #2
simple
 
Регистрация: 11.01.2008
Сообщений: 6
По умолчанию

writeln ('Имена');
readln('imena');
1. здесь Вам надо ввести НЕСКОЛЬКО, как я понимаю, 30 имен (Workers:array[1..30] of worker, а в проге вводится одно.
2. здесь
if s1[i] =s2[i] then
writeln ('Одинаковые имена');
Вы определяете наличие одинаковых имен в массиве, а переменную i не изменяете.
и в том, и в другом случае Вам поможет for от 1 до 30 =)
simple вне форума Ответить с цитированием
Старый 12.01.2008, 22:31   #3
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

чтото непонятное ты написал....


Код:
begin
clrscr; writeln ('Имена'); 
readln('imena'); // Занесли в переменную
if s1[i] = s2[i] then // ??? 
writeln ('Одинаковые имена');
readln;
readkey;
end.
Если тебе надо сравнить две строки то ненадо ставить [i].
S[i] - означает что ты обращаешся к определённому симаолу строки где i - порядковый номер элемента.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 12.01.2008, 22:47   #4
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

ПРинял! Буду учиться! только недопонял в одном случае - как мне нужно ввести 30 имен? какой функцией это лучше сделать? Спасибо
Xeon332 вне форума Ответить с цитированием
Старый 12.01.2008, 23:10   #5
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

А почему не массив?
Один двумерный массив и всё....
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 12.01.2008, 23:17   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Ты создал тип
Type
Worker = record
End;
Но не описал поля, вместо этого вводишь то, что должно быть полями.
У тебя массив Workers:array[1..30] of worker; пустой.
Нужно
Type
Worker = record
Num : word;
Imena:string;
End;
Тогда в массиве будут после введения данные о работниках, к которым нужно обращаться так:
Workers[i].Num-номер i-го работника, Workers[i].Imena-имя i-го работника.
Названия полей у тебя какие-то неудачные, обычно используют фамилию и имя (например Workers[i].fam и Workers[i].nam).
Вообще надо почитать про этот тип данных, иначе здесь лекцию надо читать.

Последний раз редактировалось puporev; 12.01.2008 в 23:19.
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Записи Rio309 Помощь студентам 1 15.03.2008 22:23
Записи RECREATOR Помощь студентам 3 25.12.2007 10:58
записи 11111 Паскаль, Turbo Pascal, PascalABC.NET 2 29.11.2007 15:28
Записи zzzzz Помощь студентам 1 25.05.2007 16:26