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

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

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

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


Новичок
*

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

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


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


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


Пионер
**

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

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


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


Новичок
*

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

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


Можешь взять здесьПрикрепленный файл  SS.txt ( 350 байт ) Кол-во скачиваний: 337
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bokul
сообщение 27.05.2006 6:58
Сообщение #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 
 К началу страницы 
+ Ответить 
RaV
сообщение 27.05.2006 7:27
Сообщение #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 - 2.11.2006 17:55
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bokul
сообщение 27.05.2006 7:32
Сообщение #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 - 2.11.2006 17:56


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


Гуру
*****

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

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


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

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


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
RaV
сообщение 27.05.2006 8:25
Сообщение #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 
 К началу страницы 
+ Ответить 
RaV
сообщение 27.05.2006 8:36
Сообщение #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 байт ) Кол-во скачиваний: 333


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


Гость






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

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

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

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


(хотя и здесь еще не все предусмотрено) no1.gif
 К началу страницы 
+ Ответить 
Гость
сообщение 27.05.2006 16:33
Сообщение #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
 К началу страницы 
+ Ответить 
Bokul
сообщение 27.05.2006 18:33
Сообщение #12


Гуру
*****

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

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


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

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


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.05.2006 23:02
Сообщение #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;
 К началу страницы 
+ Ответить 
Bokul
сообщение 27.05.2006 23:08
Сообщение #14


Гуру
*****

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

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


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

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


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


Гость






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

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

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

 

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