Доброго времени суток,начал изучение Pascal неделю назад,были кое-где вопросы,где непонятки,где-то решал сам,где помогали соседи,интернет.
Но тут все гораздо сложнее*
(!) смотрите вложение
Урок 3.2. по задаче мы должны написать программу которая из 3 строчек,выберет несколько,определенно запрограммированных букв,затем по алфавиту поменять их на N количество в лево/право,НО^
!)нам надо ввести 3 строчки
FINISHED
OR
PENDING?
а уже в каждой из строчек выбрать первую букву,в другой строчке вторую букву,и ее уже редактировать(менять на 1-2 пункта влево/право по алфавиту)
И в итоге таких манипуляций на выводе должно быть слово DONE
2) Пока что из книги,я могу менять только символы занесенные в переменную(Char),т.е. 1 символ,а тут целое слово,алгоритма деления слова на буквы,занесения каждой буквы в ячейку(это вроде дальше-массивы),и уже из массивов выдирать те символы что нам необходимы.
Вопрос
Так все таки как написать такую программу?
Или все эти 3 строчки я не должен вводить в программу?(Readln(x1)) ?
Не думаю что тут дойдет до массивов,т.к. я прошел только переменные,константы,умножение,деление,ост
атки,и даже до условия(If else ) еще не дошёл ,как быть?Буду благодарен за ответы,надеюсь я не такой "непробиваемый"
спасибо
_______________________________________________________
* - возможно я немного не понял поставленной задачи
Прикрепленные файлы
3.3.pdf ( 194.8 килобайт )
Кол-во скачиваний: 299
Я так понимаю, что если просят ввести СТРОКИ, то нужно вводить СТРОКИ, а не массивы символов!
Это ответ?Я ВСЕ описал,а вы мне говорите про строки,да я же говорю что не знаю как записать эти строки а потом выбрать из них несколько букв отдельных! Читайте внимательно
И так....
Раз ответа я так и не получил,решил сделать все сам,но получилось довольно "Грубо"...
задача была такая
1) Т.к. Отделять Буквы от слова программным методом я не умею еще,я сам записал эти буквы.и присвоих их к переменным типа char.
2) Узнал коды иэтих символов.с помощью команды a1:= Ord(a);
3) Мне необходимо были возвратить предществующий элемент(по 2 раза) относительно значений 1 и 3 буквы,а 2 и 4 оставить без изменения
4)певерести номера символов обратно в соответствующие символам в таблице слова,и
5) собственно вывести эти 4 буквы в порядке 1,2,3,4 что бы получилось слово и оно получилось
Done
Теперь код...Простите
program n_3.3;
uses crt;
var a,b,c,d,e:integer;
a_1,b_2,c_3,d_4,a_a,b_b,c_c,d_d:integer;
a1,a2,a3,a4:Char;
begin
a1:='F';
a2:='O';
a3:='P';
a4:='E';
a:=Ord(a1);
b:=ord(a2);
c:=Ord(a3);
d:=Ord(a4);
a_1:=Pred(a);a:=Pred(A_1);
b_2:=b;
c_3:=Pred©; c:= Pred(c_3);
d_4:=(d);
a1:=chr(a);a2:=chr(b_2); a3:=chr©; a4:= chr(d_4);
writeln('Слово', a1 ,a2 , a3, a4, 'Нажмите ENTER' );
readln();
writeln('Вроде получилось =) ');
readln()
end.
_____________________________________
* смотрите вложение (PascalABC)
Прикрепленные файлы
3.3.pas ( 480 байт )
Кол-во скачиваний: 256
Работает, работает! Но где вы вводили строки? Несоблюдено условие задачи!
Просто вам надо бы написать более мене доходчиво ваше задание.
varМассивы есть? Нет. Операторы условия? Ни в коем виде. Строки вводятся? Вводятся. Результат получаем? Получаем. Где подвох?
lett1 : char;
lett2 : char;
lett3 : char;
lett4 : char;
begin
readln(lett1);
readln(lett2);
readln(lett3, lett4);
lett1 := pred(pred(lett1));
lett3 := pred(pred(lett3));
writeln(lett1, lett2, lett3, lett4);
end.
Уважаемые форумчане,я письменно привел кратко,обрано что нам необходимо сделать,в каждом сообщении есть приписка(смотрите вложение*),в 1 вложении в ПДФ файле текст задачи,а точнее ксерокопия страницы учебника с ней,я не знаю куда вы смотрели,все материалы по задаче я выложил,включая свой вариант решения(хоть и просто букв
P.s.. Kjuger смотри вложение с пдф файлом в конце моего сообщения(1-вого).
p.p.s сейчас проверю ваш код
*спустя 30 секунд ,вау,честно сказать я не ожидал что все так просто....
А можете рассказать как так получилось что из всего слова(введенного),мы как то выбрали определенные буквы?
просто в учебнике написано как менять символы,отдельно,про манипуляции со словом- нет ни заметки,поэтому я не могу так сделать,можете объяснить?
readln(lett1);
readln(lett2);
readln(lett3, lett4);
ок,вот еще пара вопросов
1)А если мне нужно 6 символ от слова?6тую букву из слова,мне придется прописывать
a,b,c,d,e,f6:char;
Readln(a,b,c,d,e,f6); и только потом использовать мой f6 символ?
2) эту тему я понял,перешел к булевым выражениям,встал на задаче 4.1
вот собственно задача
Задание 4.1. Определите в программе 4 логических переменных, которые содержат следующую информацию о людях:
Married — «истина», если человек женат (замужем),
Blond — «истина», если у человека светлые волосы,
Male — «истина», если человек — мужчина,
Employed — «истина», если человек работает.
Составьте логические выражения, с помощью которых можно определить, является ли человек:
1) замужней женщиной;
2) неженатым мужчиной;
3) незамужней блондинкой;
4) безработной незамужней женщиной;
5) либо неженатым, либо безработным, либо и тем и другим.
у меня получается только два первых действия,а код занимает уже весь экран
ЭМ вообще то для этого надо создавать новые темы,а не делать свалку из одной, затем, чем можно пользоваться? Условиями можно?Во вторых, у вас неправильный принцип построения программы, сначала вы должны получить все 4 параметра о человеке, а уж потом начать проверять.
program qu_1;
uses crt;
var
Married,Blond,Male,Employed:boolean;
a1,a2,a3,a4,a5:boolean;
a,b,c,d:char;
begin
Married:=True;
Blond:=True;
Male:=True;
Employed:=True;
writeln('Married?я ?[y/n]');
Readln(a);
Married:= a = 'y';
writeln(Married);
Writeln('Blond?[y/n]');
readln(b);
Blond:= b = 'y';
writeln('Male?[y/n]');
readln©;
Male:= c = 'y';
writeln('Employed?[y/n]');
readln(d);
Employed:=d='y';
a1:= Married and not male;
Writeln('Married women: ',a1);
a2:= not Married and male;
Writeln('Not married men: ',a2);
a3:= not Married and Blond;
Writeln('Not Married Blond: ',a3);
a4:= Not Employed and not Married and not male;
Writeln('Not Work Not Married women: ',a4);
a5:= (Not Married and not Employed) or Not Married or not Employed;
Writeln('Number 5: ',a5);
readln;
end.
Krjuger
a3:= not Married and Blond;
кажется я понял
1) мы должны спросить у пользователя несколько вопросов(Мужчина ли он,Блондин ли он,работает/неработает)\
2)получив ответы на вопросы,мы заносим их в переменные
3)оперируя(всмысле используя) полученные ответы мы с помощью логических операций выводим правильные ответы в порядке 1) 2) 3) 4) 5) ?(а я вообще делал по 1 вопросу...)
Прошу прощенья за "свалку тем",просто если я каждый раз буду создавать тему,то.....ни к чему хорошему это не приведет,а тут в заголовке написано- "Помогите решить зачаду (Учебник Ушаков и Юрьева)"
Надеюсь на понимание и спасибо за код,сейчас буду разбирать.
Чорт, да чето я опростоволосился.
a3:= not Married and Blond and not Male;
Writeln('Not Married Blond women: ',a3);
Все равно,булеан и условия If для меня(для понимания) сложноваты,может есть какой нибудь вариант где можно потренероваться,поднатянуться для понимания?Буду благодарен
Для понимания нет,просто решай задачи,пробуй, просто не надо спешить, если уж совсем не способен осознать, принимай на веру,в последствии с опытом переосмыслиш(но осоно не злоупотребляй этим)
Если пояснить то булеан хранит либо True,либо False, так же в некоторых источниках может быть правда,ложь или 0 , 1. Этот тип собственно отображает результат любых логических операций.А теперь на примере.
Married:= a = 'y';
a3:= not Married and Blond and not Male;
как раз вот это я и понимаю )) Married:= a = 'y';
а вот a3:= not Married and Blond and not Male;
это уже сложно,плюс я не понимаю зачем изначально в программе прописывать 4 переменные которые имеют ответ=True,если в последствии мы можем повлиять на их значение
Male:= True
writeln('Мужчина?');readln(a);
Потом мы сравниваем переменную(которая зараннее уже положительна,т.е. True), male:= a = 'y';
вот этого не пойму ( перерыскал YouTube там только основы,т.е. элементарные уравнения типа X>3,а задачек с решениями нет,из одноклассников,или хотя бы паралели никто не учит паскаль,дельфи,с.
Да и думаю что Boolean Во всех языках есть,так что пропускать его,это очень плохо в будушем,хотя может со временем мозги "встанут" на нужное место,при дальнейшей учебе паскаля
Это одно из правил нормального программирования,все переменные инициализируются(создаются если попроще) с начальным значением.Дело в том,что некоторые языки требуют обязательно инициализировать,некоторые нет.Паскаль среди вторых.По сути если самому не инициализировать,то паскаль по дефолту чаще всего ставит нуль,но это не может нам гарантировать,что на 100500ом запуске программы он не запишет вместо нуля какую нибудь другую информацию.Поэтому признаком грамотной программы,пусть даже этого не требует среда, все равно будет их инициализация.
а вот a3:= not Married and Blond and not Male;
(not Married or not Employed).
На сколько я знаю not - имеет наивысший приорите,and - средний , Or и xor(отрицание)-наименьший,ведь так?
Исходя из этого ,мы получаем по действиям
1)Не замужем
2) не рабочий
3) или
4 не замужем ИЛИ НЕ РАБОТАЕТ,причем логическое ИЛИ будет зависеть от операндов 1 и 2
True + true = True
True +false = TRUE
FALSE + TRUE = TRUE
FALSE +FALSE = FALSE
Получается Если МЫ Замужем и работаем то выводится ...FALSE + FALSE = FAlse?
вот тут я и путаюсь)
А так спасибо) расжевали)