Помощь - Поиск - Пользователи - Календарь
Полная версия: Задачи по паскалю. Вопросы.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
TorBeattis
Цитата
Дело в том, что я перешла в другую школу, скажем так переехала из другого города, суть не в этом, я в 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.


Вот. Если можете, помогите разобраться, спасибо.
Lapp
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.

Пиши, как успехи.
гость
ПОЖАЛУЙСТА ПОМОГИТЕ С ЗАДАЧЕЙ!!!
****
Не следует использовать чужие темы для решения своих задач - создайте свою тему и задавайте вопросы.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.