![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Kristina20 |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 10 Пол: Женский Реальное имя: Kristina Репутация: ![]() ![]() ![]() |
написать функцию с масивом, который содержит название сторон света:nord,east,south,west. Функция, полученное обозначение(1 или 2 буквы) переделывает в название направление стороны света.
-------------------- Help!!!I need it!!!
|
pascal65536 |
![]()
Сообщение
#2
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 62 Пол: Мужской Репутация: ![]() ![]() ![]() |
Какая-то лёгкая задачка.
В массив, сначала вводишь названия сторон света. Пользователь вводит одну или две первые буквы. Функция перебирает весь :-) массив и сравнивает с введёным пользователем словом. Результатом работы функции будет название стороны света или сообщение о том, что такой стороны света не бывает. Для сравнения можно использовать pos, как использовать, можно прочитать в help`e |
RaV |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Владимир Репутация: ![]() ![]() ![]() |
|
Bokul |
![]()
Сообщение
#4
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
function func (var ch : char): string;
const
ss : array [1..4] of string=('nord','west','east','south');
var k,i : integer;
begin
for i:=1 to 4 do
if pos(ch,ss[i])<>0 then
k:=i;
if k<>0 then
write(ss[k])
else write('Не существует такой стороны света');
end;
var
ch : char;
begin
read(ch);
func(ch);
end.
Читай внимательно Цитата полученное обозначение(1 или 2 буквы) У тебе работает только с одной ![]() -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
RaV |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Владимир Репутация: ![]() ![]() ![]() |
Не долго исправить! ![]() function func (var ch : string{<---изменение}): string;
const
ss : array [1..4] of string=('nord','west','east','south');
var k,i : integer;
begin
k:=0;{<---изменение}
for i:=1 to 4 do
if pos(ch,ss[i])<>0 then
k:=i;
if k<>0 then
write(ss[k])
else write('Не существует такой стороны света');
end;
var
ch : string;{<---изменение}
begin
read(ch);
func(ch);
end.
k нужно обнулить, иначе там может быть не ноль Сообщение отредактировано: volvo - 2.11.2006 17:55 |
Bokul |
![]() ![]()
Сообщение
#6
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Вот функция, но она не правильно работает - возвращает название сторони только последней буквы str.
function world(str:string):string;
const mas:array[1..4] of string[5]=('nord',
'east',
'south',
'west');
var i,j:byte; buf:string;
begin
buf:='';
for i:=1 to length(str) do;
for j:=1 to 4 do
if str[i]=mas[j][1] then
buf:=buf+' '+mas[j];
world:=buf;
end;
А когда делаю такую проверку const mas:array[1..4] of string[5]=('nord',
'east',
'south',
'west');
var i,j:byte; buf:string;
begin
buf:='';
for i:=1 to length(str) do;
begin
writeln('i = ',i);
readln;
for j:=1 to 4 do
if str[i]=mas[j][1] then
buf:=buf+' '+mas[j];
end;
world:=buf;
end;
то і выводиться только один раз и равняется length(str), даже когда длинна str больше 1. Где ошибка? Сообщение отредактировано: volvo - 2.11.2006 17:56 -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
Bokul |
![]()
Сообщение
#7
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
RaV твоя прога имеет один недостаток - при вводе, например rd , она пичатает
nord, хотя такой сторонны не существует. А теперь вопрос к автору: для чего вводить 2 буквы? Я понял для того чтобы можна было выводить "промежуточные" стороны. Например, если ты ввел "ne", то результат должен быть nord east. Правильно? -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
RaV |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Владимир Репутация: ![]() ![]() ![]() |
Вот они ошибки!
![]() function world(str:string):string;
const mas:array[1..4] of string[5]=('nord',
'east',
'south',
'west');
var i,j:byte; buf:string;
begin
buf:='';
for i:=1 to length(str) do{<----удалить эту строку }
for j:=1 to 4 do
if (str[1]=mas[j][1]) and (str[2]=mas[j][2]) then{<--Здесь изменено}
buf:=mas[j];
world:=buf;
end;
И все нормально будет. Только если вводить 1 или 2 буквы!!!Иначе по первым двум будет выводить сторону света. |
RaV |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 26 Пол: Мужской Реальное имя: Владимир Репутация: ![]() ![]() ![]() |
Не долго исправить!
function func (var ch : string): string;
const
ss : array [1..4] of string=('nord','west','east','south');
var k,i : integer;
begin
k:=0;
for i:=1 to 4 do
if pos(ch,ss[i])=1{<-- изменение} then
k:=i;
if k<>0 then
write(ss[k])
else write('Не существует такой стороны света');
end;
var
ch : string;
begin
read(ch);
func(ch);
end.
Скорее всего 2 буквы предназначены именно для "промежуточной" стороны текст программы с "промежуточной" стороной ![]() Сообщение отредактировано: volvo - 2.11.2006 17:57 |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
RaV, вместо того, чтобы повторять все время:
Цитата(RaV @ 27.05.2006 8:36) Не долго исправить! возьми и исправь! У тебя программа (та, что в аттаче) по-прежнему содержит МИНИМУМ одну ошибку!!! Не веришь? Введи 'nn' на запрос... Что получишь? 'nord nord'? Очень остроумно... Вот вариант, который лишен этого недостатка: ![]() (хотя и здесь еще не все предусмотрено) ![]() |
Гость |
![]()
Сообщение
#11
|
Гость ![]() |
Bokul,ti vse praveljno ponjal,4to esli vvoditj 'ne',to na ekrane dolzno vivoditsa 'nord east'!!!!!!
Sapsibo vam vsem ogromnoe!!!!!!!!!vi mne namnogo obleg4ili ziznj!!!!!!!!!teperj,blagodorja va,ja uze pol ekzamena sdala!!!!!!!!СПАСИБО!!!! PS:VOLVO ОТДЕЛЬНОЕ СПАСИБО,за все проги!!!!!!! ![]() ![]() ![]() ![]() |
Bokul |
![]()
Сообщение
#12
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Я так понял что RaV исправил мою прогу по подобию своей, хотя
она должна искать Цитата "промежуточные" стороны. Вопрос остается: где моя ошибка? -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Цитата(Bokul @ 27.05.2006 7:32) Где ошибка? ![]() ![]() Цитата(Bokul @ 27.05.2006 7:32) for i:=1 to length(str) do; { <--- Как ты думаешь, что ЗДЕСЬ делает точка с запятой ??? }
begin
...
end;
|
Bokul |
![]()
Сообщение
#14
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 117 Пол: Мужской Реальное имя: Богдан Репутация: ![]() ![]() ![]() |
Цитата for i:=1 to length(str) do; { <--- Как ты думаешь, что ЗДЕСЬ делает точка с запятой ??? } Почему компилятор не ругается? ![]() -------------------- Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее. |
volvo |
![]()
Сообщение
#15
|
Гость ![]() |
А с чего ругаться? Согласно синтаксису - все правильно... Мало ли, что ты делаешь? Может, тебе понадобился "пустой" цикл... Компилятор пропустил... Дальше - Begin ... End : везде, где допускается один оператор, допускается и блок операторов, взятый в операторные скобки... Тоже все по правилам...
Это такие ошибки - где компилятор - не помощник... ![]() |
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 19:09 |