Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Помогите решить программку на паскале

Ответить
Настройки темы
Разное - [решено] Помогите решить программку на паскале

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вывести на экран символ, предшествующий первому вхождению буквы «а» или сообщить о том, что буквы «а» нет в предложении.

Отправлено: 17:45, 07-05-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата grethin999:
Помогите… »
И что у Вас самого получилось? Приведите Ваш код или Ваши рассуждения по решению.

Отправлено: 18:21, 07-05-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1404
Благодарности: 135

Профиль | Отправить PM | Цитировать


Буква «а» означает, что тип данных языка программирования должен быть строковым. Сперва выясняем, каким образом на паскале объявляется строковый тип данных.
Устанавливаем среду для разработки, например, fpc. Скачать эту среду можно по ссылке http://sourceforge.net/projects/freepascal/files/ выбрав Download fpc-2.6.2.i386-win32.exe (41.2 MB) Запускаем скачанный файл и устанавливаем.
Заходим в папку doc и открываем документацию.
Логично предположить что справочник по языку содержиться в файле ref.pdf (от англ. reference ) Открываем файл ref.pdf c помощью Adobe Acrobat Reader. Скачивается по ссылке: http://get.adobe.com/reader/
Нужно выяснить структуру исходного кода на языке паскаль. Для этого заходим в папку examples. Выбираем папку opengl и открываем файл morph3d.pp . Бегло просмотриваем.
Возвращаемся к файлу ref.pdf и открываем раздел types (англ. типы). Интересует Character types (англ. символьные типы), далее strings (по англ. string это строка, а нужен строковый тип данных)
С англ binary (двоичные исполняемые файлы) сокращается до bin. Заходим и директорюи bin, даее в i386-win32 . i386 это платформа, а win32 это операционная система.
Запускаем fp.exe
В меню выбираем File - New.
В начале должно быть
program название_программы ;
например,
Код: Выделить весь код
program a;
Тело программы заключается в
Код: Выделить весь код
begin
end.
begin( англ. начало), end (англ. конец)

Переменные объявляются перед телом программы в разделе var.

Заглядываем в пример в документации в файле ref.pdf и видим пример
Код: Выделить весь код
Type
NameString = String[10];
Type используется для объявления пользовательского типа данных.
NameString это название нового типа данных
String[10] это составляющие этого типа, массива из 10 строк.

Можно упростить до следующего объявления, так как достаточно одной строки:
Код: Выделить весь код
Type
NameString = String;
Можно проверить правильность компилирования с помощью функции writeln
Вбиваем простейшую программу:
Код: Выделить весь код
program a;
type
namestring = string;
var
bc : namestring;
begin
writeln('1');
end.
Программа скомпилировалась и выполнилась.
Для компилирования выбираем в меню Compile - пункт меню Compile
Для запуска выбираем в меню Run - пункт меню Run.
Результат выполнения можно посмотреть выбрав в меню Debug пункт Output (с англ. переводится как вывод)
Возвращаемся к окну программы. Меняем программу на следующую:
Код: Выделить весь код
program a;
type
namestring = string;
var
bc : namestring;
begin
bc := 'qweertyui';
writeln(bc);
end.
Здесь определяется строка следующим образом bc := 'qweertyui';
Оператором присваивания значения переменной является :=
Теперь нужно узнать как создается цикл. В файле ref.pdf открываем раздел Statements - Structured Statements - The For ..in.. do statement где можно посмотреть примеры кода. Раз тип строковый, то элементом строкового типа является символ (англ. char)
В разделе var вводим новую переменную
Код: Выделить весь код
var
i: char;
которая будет посимвольно выводить строку в цикле следующим образом
Код: Выделить весь код
for i  in bc do
begin
writeln(i);
end;
Для того, чтобы сравнить символы нужно узнать, каким будет условный оператор. В файле ref.pdf раздел Statements - Structured Statements - The if..then..else statement

Нужна еще одна переменная типа символ для того, чтобы в ней хранить значение смивола который является предыдущим.
Код: Выделить весь код
var
j:char;
Код: Выделить весь код
program a;
type
namestring = string;
var
i : char;
j : char;
bc : namestring;
begin
bc := 'qweertyui';
for i  in bc do
begin
writeln(i);
if i = 'a' then
writeln (': ' + j);
j:= i;
end;
end.
Для того, чтобы сообщить, что буквы «а» нет в предложении, вводим переменную k и переписываем программу следующим образом:

Код: Выделить весь код
program a;
type
namestring = string;
var
i : char;
j : char;
k : integer;
bc : namestring;
begin
bc := 'qweertyui';
k := 0;
for i  in bc do
begin
writeln(i);
if i = 'a' then
begin
writeln (': ' + j);
k : = 1;
end
j:= i;
end;
if k = 0 then
writeln ('no');
end.
Если a является первым символом в строке, то j неопределено, и это вызовет ошибку. Устраняем эту ошибку:

Код: Выделить весь код
program a;
type
namestring = string;
var
i : char;
j : char;
k : integer;
l : integer;
bc : namestring;
begin
bc := 'aqweertyui';
k := 0;
l : = 0;
for i  in bc do
begin
writeln(i);
if i = 'a' then
begin
if l <> 0 then
writeln (': ' + j);
k : = 1;
l := 1;
end
j:= i;
end;
if k = 0 then
writeln ('no');
end.
Оператором неравенства является <>.

Извините, если путано. Старался объяснить подробно, как умел.

-------
Ehhh.. what's up, doc?..

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:07, 07-05-2013 | #3


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


mrcnn, и не лень тебе было ...

Отправлено: 22:41, 07-05-2013 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата lxa85:
mrcnn, и не лень тебе было ... »
Коллеге mrcnn, наверное, было просто скучно .

Отправлено: 06:05, 08-05-2013 | #5


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Большое спасибо за помощь

Отправлено: 15:14, 08-05-2013 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Помогите решить программку на паскале

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Помогите решить задачу на Си friter Программирование и базы данных 16 21-01-2019 19:17
C/C++ - ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ НА С++ delfi Программирование и базы данных 1 12-05-2011 20:19
Assm - Помогите решить задание на ассемблере Wild_cat Программирование и базы данных 3 10-03-2009 09:49
Разное - помогите решить задачи на QBasic rockman90 Программирование и базы данных 1 28-12-2007 18:34




 
Переход