IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> стороны света, программа
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Женский
Реальное имя: Kristina

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


написать функцию с масивом, который содержит название сторон света:nord,east,south,west. Функция, полученное обозначение(1 или 2 буквы) переделывает в название направление стороны света.


--------------------
Help!!!I need it!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 62
Пол: Мужской

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


Какая-то лёгкая задачка.
В массив, сначала вводишь названия сторон света.
Пользователь вводит одну или две первые буквы.
Функция перебирает весь :-) массив и сравнивает с введёным пользователем словом.
Результатом работы функции будет название стороны света или сообщение о том, что такой стороны света не бывает.
Для сравнения можно использовать pos, как использовать, можно прочитать в help`e
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Владимир

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


Можешь взять здесьПрикрепленный файл  SS.txt ( 350 байт ) Кол-во скачиваний: 201
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


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 буквы)

У тебе работает только с одной smile.gif


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Владимир

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


Цитата(Bokul @ 27.05.2006 11:58) *

Не долго исправить! good.gif
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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


Вот функция, но она не правильно работает - возвращает название сторони только последней буквы 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 -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


RaV твоя прога имеет один недостаток - при вводе, например rd , она пичатает
nord, хотя такой сторонны не существует.

А теперь вопрос к автору: для чего вводить 2 буквы?
Я понял для того чтобы можна было выводить "промежуточные" стороны.
Например, если ты ввел "ne", то результат должен быть nord east.
Правильно?


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Владимир

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


Вот они ошибки! smile.gif

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 буквы!!!Иначе по первым двум будет выводить сторону света.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Владимир

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


Не долго исправить!

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 буквы предназначены именно для "промежуточной" стороны
текст программы с "промежуточной" стороной Прикрепленный файл  SS_new.txt ( 725 байт ) Кол-во скачиваний: 202


Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






RaV, вместо того, чтобы повторять все время:
Цитата(RaV @ 27.05.2006 8:36)
Не долго исправить!

возьми и исправь! У тебя программа (та, что в аттаче) по-прежнему содержит МИНИМУМ одну ошибку!!!

Не веришь? Введи 'nn' на запрос... Что получишь? 'nord nord'? Очень остроумно...

Вот вариант, который лишен этого недостатка:
Прикрепленный файл  north.pas ( 773 байт ) Кол-во скачиваний: 205


(хотя и здесь еще не все предусмотрено) no1.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 ОТДЕЛЬНОЕ СПАСИБО,за все проги!!!!!!! wub.gif wub.gif wub.gif wub.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


Я так понял что RaV исправил мою прогу по подобию своей, хотя
она должна искать
Цитата
"промежуточные" стороны.

Вопрос остается: где моя ошибка?


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Цитата(Bokul @ 27.05.2006 7:32)
Где ошибка?

blink.gif blink.gif
Цитата(Bokul @ 27.05.2006 7:32)

for i:=1 to length(str) do; { <--- Как ты думаешь, что ЗДЕСЬ делает точка с запятой ??? }
begin
...
end;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

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


Цитата
for i:=1 to length(str) do; { <--- Как ты думаешь, что ЗДЕСЬ делает точка с запятой ??? }

Почему компилятор не ругается? blink.gif


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






А с чего ругаться? Согласно синтаксису - все правильно... Мало ли, что ты делаешь? Может, тебе понадобился "пустой" цикл... Компилятор пропустил... Дальше - Begin ... End : везде, где допускается один оператор, допускается и блок операторов, взятый в операторные скобки... Тоже все по правилам...

Это такие ошибки - где компилятор - не помощник... smile.gif
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 16.12.2017 8:18
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"