Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2012, 17:08   #1
Fructis
Новичок
Джуниор
 
Регистрация: 30.03.2012
Сообщений: 6
По умолчанию Задача в паскале ABC

Помогите пожалуйста. Нужно сделать эти задания в паскале, а я никак не разберусь. Первый год изучаю.
1. Дано трёхзначное число. Определить:
a) сумму и произведение цифр числа;
b) число, образованное перестановкой цифр исходного числа;
c) число, полученное перестановкой цифр сотен и десятков;
d) число, полученное перестановкой цифр десятков и единиц.
2. Дано четырёхзначное число. Получите двузначное число, удалив из исходного четырёхзначного числа цифры:
a) тысяч и десятков (например: 2783 → 73);
b) сотен и единиц (например: 2783 → 28);
c) десятков и единиц (например: 2783 → 27);
d) получите другие двухзначные числа удалением цифр из исходного четырёхзначного числа.

Хотя бы по одному из двух номеров, чтобы я принцип поняла.
Спасибо!!!
Fructis вне форума Ответить с цитированием
Старый 30.03.2012, 17:34   #2
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

принцип прост:
A div 10 = число десятков в числе А (1125 div 10 = 112)
(A div 10) mod 10 = десятичная часть числа A ( (1125 div 10) mod 10 = 2)
по такому принципу вы получите число единиц/десятков/сотен/тысяч и сами решите задачи за пару минут
например, 2.а будет работать где-то так:
1) в переменные _1, _10, _100 и _1000 сохраняем соответствующие разряды
2) ответ = (_100 * 10) + _1 (умножение нужно т.к. сотни станут десятками)

остальное просто вариации на тему
а 2.d чуть сложнее, я бы решал хитропопым перебором, но вы студент и можно тупо все варианты тупо запрограммировать
GreenWizard вне форума Ответить с цитированием
Старый 30.03.2012, 18:15   #3
Fructis
Новичок
Джуниор
 
Регистрация: 30.03.2012
Сообщений: 6
По умолчанию

Вот что получилось. Но что-то мне подсказывает, что нифига не правильно.

Код:
program zadacha_1a;
var a,x,y,z,b,c:integer;
Begin
readln(a);
x:=a div 100;
y:=(a div 10) mod 10;
z:=a mod 10;
b:=x+y+z;
writeln(b);
c:=x*y*z;
writeln(c)
End.

Последний раз редактировалось ACE Valery; 30.03.2012 в 18:45.
Fructis вне форума Ответить с цитированием
Старый 30.03.2012, 18:16   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Ну вот вам пример! Раз уж вы начинающий программер!
Начинающим надо помогать!
Цитата:
1. Дано трёхзначное число. Определить:
a) сумму и произведение цифр числа;
Код:
ReadLn (num);
_MUL := 1;
_SUM := 0;
while num <> 0 do
begin
    _MUL := _MUL*(num mod 10);
    _SUM := _SUM + (num mod 10);
    num := num div 10;
end;
WriteLn ('произведение = ', _MUL, ' СУММА = ', _SUM);
Работает для чисел любой разрядности!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 30.03.2012, 18:20   #5
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

нам нужно число каждого разряда т.е. так:
Код:
program zadacha_2a;
var a,x,y,z,b,c:integer;
Begin
readln(a);
// единицы
x:= a mod 10; // (a div 1) mod 10;
// десятки
y:=(a div 10) mod 10;
// сотни
z:=(a mod 100) mod 10;
b:=x+y+z;
writeln(b);
c:=x*y*z;
writeln(c)
End.
Hacker19_90 приводит более общий подход, но вы хоть освойте наивный подход нет нужды вводить массивы, а для применения подхода Hacker19_90 он будет нужен (разбиваем число на массив чисел и уже по индексам обращаемся к сотням/десяткам/др)

Последний раз редактировалось GreenWizard; 30.03.2012 в 18:25.
GreenWizard вне форума Ответить с цитированием
Старый 30.03.2012, 18:23   #6
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
нам нужно число каждого разряда т.е. так:
А чем вам код ТС не угодил?
Всё вполне рабочее!
ой ёй ёй! Стоп СТОП
Цитата:
Код:
z:=(a mod 100) mod 10;
Какие сотни? Вы что? Те же единицы!
Не верите? смотрим
Код:
число 123
123 Mod 100 = 23
23 mod 10 = 3
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303

Последний раз редактировалось Hacker19_90; 30.03.2012 в 18:26.
Hacker19_90 вне форума Ответить с цитированием
Старый 30.03.2012, 18:29   #7
Fructis
Новичок
Джуниор
 
Регистрация: 30.03.2012
Сообщений: 6
По умолчанию

Да, да, я смотрю вот эти массивы мы совсем не изучали.
В любом случае спасибо за помощь!)
Fructis вне форума Ответить с цитированием
Старый 30.03.2012, 18:31   #8
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
А чем вам код ТС не угодил?
Всё вполне рабочее!
....
спокойнее) я отвечал на пост автора темы, а Ваш код верный полностью, НО пусть автор хоть наивный подход освоит) а то мы тут нагородим и массивы, и деревья, и ООП ещё, не дай Бог, пристроим)))
GreenWizard вне форума Ответить с цитированием
Старый 30.03.2012, 18:32   #9
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
я смотрю вот эти массивы мы совсем не изучали.
пффф! Ребят! О каких массивах идёт речь?
Цитата:
спокойнее) я отвечал на пост автора темы,
Так! Вы меня не поняли!
1) я Абсолютно спокоен!
2) Я и имел ввиду код Автора темы
ТС = ТОПИК СТАРТЕР, тот же автор темы! Но не как не свой! Если вы об этом!
Цитата:
а то мы тут нагородим и массивы, и деревья, и ООП ещё, не дай Бог, пристроим)))
Вы щас о чём простите?
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303

Последний раз редактировалось Hacker19_90; 30.03.2012 в 18:34.
Hacker19_90 вне форума Ответить с цитированием
Старый 30.03.2012, 18:36   #10
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Цитата:
Сообщение от Hacker19_90 Посмотреть сообщение
пффф! Ребят! О каких массивах идёт речь?
окей, тогда задачу 2.а реши без массивов и отличным от предложенного мною кода ещё и так же просто) а по факту, вопрос решён и автор доволен
GreenWizard вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с файлами в паскале (abc) brus1k Помощь студентам 3 20.03.2012 00:01
решить задачи в Паскале ABC Нина2012 Паскаль, Turbo Pascal, PascalABC.NET 3 23.10.2011 12:08
решить задачи в Паскале ABC Нина2012 Помощь студентам 0 22.10.2011 16:18
Анимация костра (графика на Паскале ABC ) eka1155 Помощь студентам 1 04.05.2011 09:42
Игра в ABC Паскале Homeros Помощь студентам 1 26.01.2011 11:05