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

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

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

> Задачи по паскалю. Вопросы., Большая просьба.
TorBeattis
сообщение 17.10.2011 18:34
Сообщение #1





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

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


Цитата
Дело в том, что я перешла в другую школу, скажем так переехала из другого города, суть не в этом, я в 10 классе, начала учить информатику, но мне задали задачи, я их сделала с подругой, но она не смогла мне их объяснить. Такая просьба, ниже напишу задачу и решение, мне просто нужно объяснить что да как, чтобы понять как это все делать.




1) Составить программу вычисления для заданного трехзначного целого числа: суммы чисел.
(программа):
program num_3;
var
a, b, c, x, y:word;
begin
readln (x);
a:= x mod 10;
c:=( x div 10) mod 10;
y:=a+b+c;
writeln (y);
end.



2) Идет каждая секунда суток. Составить прогр. вычисл. количества полных часов (h) и минут (m) от начала суток.
(программа):
program num_5;
var
x; h; m:word;
begin
readln (x);
h:= x div 3600;
m:=(x - (3600*h)) div 60;
writeln (h);
writeln (m);
end.


Вот. Если можете, помогите разобраться, спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 17.10.2011 19:31
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


TorBeattis, пожалуйста, помещай код в теги code (нужно выбрать код мышкой, кликнуть в меню CODE над окном ввода и выбрать нужную строку - или же написать теги вручную).

program num_3;
var
a, b, c, x, y:word;
begin
readln (x);
a:= x mod 10;
b:=( x div 10) mod 10;
c:= x div 100;
y:=a+b+c;
writeln (y);
end.
Я для начала немного подправил программку..
Ты знаешь, что такое div и mod?
div - это деление нацело с отбрасыванием остатка. Например, 34 div 10 будет равно 3, а 25 div 11 = 2.
mod - это, наоборот, только остаток. Например, 34 mod 10 = 4, а 25 div 11 = 3.
Уверен, эти операции ты помнишь с первого класса и сможешь их применить. Вся сложность просто в том, что в Pascal они обозначаются так мудрено )).
Далее, := есть оператор присваивания. То, что получилось справа, присваивается той переменной, что стоит слева.
Теперь возьмем любое трехзначное число и попробуем с ним сделать то, что написано в программе:
x = 123
123 mod 10 = 3 (это самая правая цифра)
123 div 10 = 12 ; 12 mod 10 = 2 (это средняя цифра)
123 div 100 = 1 (это левая цифра)
Сложим их и получим искомое.
Теперь скажу, почему эти цифры пришлось вычислять, а нельзя было сразу взять (если число написано на листочке, они как бы уже ЕСТЬ). Дело в том, что в машине внутреннее представление числа не десятичное. Вообще-то, оно двоичное, но это тоже неважно. В программировании число - это абстрактное ЧИСЛО - и ничего больше (если нет конкретного указания на представление). Но ты можешь сказать - комп же печатает число цифрами! значит, он их знает smile.gif. Это правильно. Но дело в том, что печатанием (выводом) числа занимается специальная программа, которая как раз работает примерно так, как написано выше. Поскольку она уже готовая, то можно было не писать свой код, а воспользоваться ей. И это был бы другой способ решения этой задачи. Но в нем есть свои сложности. Если хочешь, я расскажу подробнее.

Попробуй со второй задачей разобраться сама (на основе того, что узнала выше). Я только приведу тут подправленный и улучшенный ее вариант, чтоб тебе было проще.
program num_5;
var
x, h, m: word;
begin
readln (x);
h:= x div 3600;
m:= x div 60;
writeln ('часов: ',h);
writeln ('минут: ',m);
end.

Пиши, как успехи.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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