Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Не понимаю Паскаль, покажите пожалуйста ещё раз как решать. (http://www.tehnari.ru/f41/t35937/)

Машуня 11.05.2010 20:50

Не понимаю Паскаль, покажите пожалуйста ещё раз как решать.
 
1.С клавиатуры вводится строка длиной N, 2<N<100. Удалить в строке все латинские прописные символы. Результат вывести на экран.
2.Дан целочисленный массив размера N, 2<N<100. Размер массива и его элементы вводятся с клавиатуры. Найти количество элементов массива, которые без остатка делятся на 3. Результат вывести на экран.

MrSTEP 11.05.2010 22:04

Прям так уж не понимаете? Если вы не понимаете Паскаль, то вы не понимаете программирование. На кого вы учитесь, позвольте поинтересоваться?
Сначала составляете алгоритм, то есть представляете, каким образом данные будут вводиться, обрабатываться и выводиться (второе самое сложное). Можете записать, но с опытом необходимость в этом отпадает. Обдумайте все, и приступайте к реализации. Мы готовы помочь вам на любом этапе, но писать готовые программы такой легкости - это медвежья услуга.

Вторая задача очень простая. Вот вам пример словесного алгоритма:
1. Вводим размер массива;
2. Вводим сам массив;
3. Поэлементно проверяем остаток от деления каждого элемента на 3;
4. Если остаток равен 0, то выводим элемент.
Пробуйте, у вас получится. С любыми вопросами - милости просим

Vladimir_S 11.05.2010 22:56

Цитата:

Сообщение от Машуня (Сообщение 333214)
1.С клавиатуры вводится строка длиной N, 2<N<100. Удалить в строке все латинские прописные символы. Результат вывести на экран.

Беда в том, что Вы и не пытаетесь ничего понять! И зачем тогда учиться? Ведь не далее, как 5 дней назад я выложил Вам решение аналогичной задачи: http://www.tehnari.ru/f41/t35786/ , но Вы, очевидно, не пожелали даже разобраться в этой программе. Ну хорошо, ну дам я Вам решение этой:
Код:

VAR
 i:INTEGER;
 S:STRING;
BEGIN
 WriteLn('Enter the string:');
 ReadLn(S);
 For i:=1 to Length(S) do
  If (Ord(S[i])<65) or (Ord(S[i])>90) then Write (S[i]);
 WriteLn;
 ReadLn;
END.

А дальше что? Завтра Вам дадут задачу "заменить вопросительные знаки в строке восклицательными" и Вы опять прибежите сюда? Ну-ну... Грустно это всё...

Артём 11.05.2010 23:32

Володь, чувствую ты от авторши даже элементарного "спасибо" не дождесси.

Машуня 11.05.2010 23:34

Я учюсь совсем по другой специальности!!!!Просто хочу научится задачи на паскале решать, но пока я плохо понимаю!!

MrSTEP 11.05.2010 23:40

Артем, чтд.. Машуня, что бы научиться, надо пробовать. Не понимаете - спрашивайте, что не понимаете. Все не понимать невозможно, но если так, то берите учебник, и начинайте вдумчиво читать с самого начала

Артём 11.05.2010 23:44

Цитата:

Артем, чтд..
что это значит?

Машуня 11.05.2010 23:54

С клавиатуры вводится строка длиной N, 2<N<100. Удалить в строке все латинские прописные символы. Результат вывести на экран.
Вот в задаче я не понимаю, как записать вот это предложение(Удалить в строке все латинские прописные символы.)
А в решённой задаче откуда берутся вот эти числа( If (Ord(S[i])<65) or (Ord(S[i])>90) then Write (S[i]))

Eli 12.05.2010 00:05

Цитата:

Артем, чтд..
Цитата:

Артем, что делать..
Вероятно

MrSTEP 12.05.2010 00:13

Артем, что и требовалось доказать.
Удалить латинские прописные символы - это значит удалить заглавные буквы английского (латинского) алфавита.
У каждого символа, введенного с клавиатуры, есть свой порядковый номер по таблице кодов ASCII. Например, символы переноса строки и возврат катерки (клавиша Enter) - #10 и #13; у пробела - #32 (если я ничего не путаю).
В языке паскаль есть операторы, позволяющие получать символ по номеру в кодовой таблице и номер по символу - chr(n) и ord(c), где н-число, а с - символ. То есть, если мы напишем а:=chr(32), то а станет равно пробелу, или a:=ord(' '), и в а запишется 32.
Владимир решил эту задачу с использованием этой самой кодовой таблицы. Все заглавные символы латинского алфавита (то, что нам нужно удалить), находятся в диапазоне от #65 до #90. Суть оператора такова:
если символ не лежит в диапазоне [65..90], то он не является заглавным латинским символом, следовательно, его не надо удалять из строки (надо вывести на экран).
Надеюсь, все понятно и подробно изложил?


Часовой пояс GMT +4, время: 10:11.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.