Тема 8: Линейни алгоритми. Отделяне на цифрите на число, преобразуване на числа. Алгоритмично направление: Алгоритми от теория на числата



Дата22.07.2016
Размер57.92 Kb.
#343
ТипЗадача

Тема 8: Линейни алгоритми. Отделяне на цифрите на число, преобразуване на числа.

Алгоритмично направление: Алгоритми от теория на числата.

Брой часове: 1

Цели:


  1. Усъвършенстване уменията на учениците за писане на програми, въвеждането им чрез среда за програмиране и съхраняването им под определено име.

  2. Усъвършенстване на уменията за тестване и проследяване изпълнението на програма.

  3. Затвърждаване на знанията за основните аритметични операции, преди всичко операциите за целочислено деление.

  4. Усвояване на умения за отделяне на цифрите на число и конструиране на числа по дадени цифри.

Учебно съдържание:


Основни понятия: конструиране на числа.

Структура на учебното съдържание:

  1. Отделяне на цифрите на число.

Задача 19: Сума от цифри на число Дадено е трицифрено число к. Да се състави програма SUMCIF, която прочита от клавиатурата числото к и извежда на екрана сумата от цифрите му.

Пример:

Вход:

365


Изход:

14


  1. Конструиране на число по зададени цифри.

Задача 20: Намиране на обратното число на дадено

Да се състави програма OBRATNO, която прочита от клавиатурата цяло, трицифрено число к и извежда на екрана обърнатото му.

Пример:

Вход:

365


Изход:

563


Решение:

За да намерим обърнатото на числото, трябва да намерим поотделно всяка една от цифрите му – цифрата на единиците, на десетиците и на стотиците.



  1. Необходими величини:

  • освен цялото число к, се налага да заделим по едно цяло число за всяка една от цифрите:

int к,e,d,s,ок; //е – цифрата на единиците, d – на десетиците, s – на стотиците, ок - обърнатото на числото к.

  1. Първо трябва да се въведе числото к:

cin>>k;

  1. След това трябва да се изчислят съответните цифри, като използваме целочислените операции за деление по следния начин:

e=k%10;

d=k/10%10;

s=k/100%10;


  1. Когато знаем цифрите на числото, можем да намерим обърнатото му по следната формула:

ок=100*е+10*d+s;

  1. Накрая извеждаме намереното обърнато число.

Задача 21: Сума

Дадено е трицифрено число к. Да се напише програма SUMBACK, която намира огледалното число на к (числото, което се получава при прочитане на к от дясно на ляво) и извежда на екрана сумата на двете числа.

Пример:

Вход:

365


Изход:

938


Решение:

Можем да решим задачата, като е разделим на две под задачи – намиране на цифрите на число и получаване на число от няколко конретни цифри. Крайният резултат на решаваната задача е сумата на двете числа. Намирането на огледалното на даденото става по алгоринъма, описан в предходната задача.

Ето пълния текст на програмата:

//Sumback

#include

using namespace std;

int main()

{

int k,e,d,s,p;

cin>>k;


e=k%10;

d=k/10%10;

s=k/10/10%10;

p=100*e+10*d+s;

cout<
return 0;

}

Въпроси и задачи за контрол и самоконтрол:


Зад. 1. Число

Да се състави програма NUMBER, която прочита от клавиатурата цяло четирицифрено число k и отпечатва сумата от числата, които се получават като се задраскат съответно втората и третата цифра отляво надясно на числото.



Вход

От стандартния вход се въвежда едно четирицифрено число k.



Изход

На единствения ред на стандартния изход се извеждат едно цяло число – сумата на числото, което се получава като се задраска втората цифра на k от ляво надясно и числото, което се получава като се задраска третата цифра на k отляво надясно.



Примери

Вход

Изход

1234

258

Обяснение

Когато се задраска втората отляво надясно цифра на числото 1234, се получава числото 134, а когато се задраска третата отляво надясно цифра на числото 1234, се получава 124. 134+124=258



Зад.2. Задача 24. от Приложение 1. Тази задача изисква по-сериозно моделиране, но решението и се свежда до изпълнение на инструкциите, дадени в условието.

Ето и задачата:



Задача 24: Сейф

(Национален есенен турнир по информатика, Шумен, 2004 г.)

Програмистът Гошо Тарикатски съхранява сорсовете на своите програми в специален сейф. За да го обезопаси срещу крадци решил да създаде сложно система за отключване. Тя се задействала от два различни пулта, от които се въвеждали две трицифрени числа. След като се въведат числата, се стартира програма, която генерира кода за сейфа по следния начин:

Събира първата цифра на първото число с последната цифра на второто число. Ако резултатът е двуцифрено число, цифрите му се събират. Получената цифра се записва като първа за кода.

Втората цифра се получава, като по същият начин се обработят вторите цифри на двете числа.

След сумирането на последната цифра на първото число и първата цифра на второто по посочената схема, се получава третата цифра на кода.

Гошо е много добър програмист, но е затрупан от поръчки, затова възлага на вас написването на програмата за получаване на кода.

Програмата се нарича KASA и получава от клавиатурата две трицифрени числа, след което извежда на екрана получения по горната схема код, който също е трицифрено число.

Пример:

Вход:

492 851


Изход:

551
Зад. 3. Личното число на един човек се изчислява по следния начин: Взема се датата му на раждане- d - ден, m -месец, g - година – сумират се цифрите от всички числа едновременно, проверява се дали получения резултат е двуцифрено число и ако е – отново се сумират цифрите му. Да се състави програма HAPPY, която прочита от клавиатурата трите числа d, m и g и отпечатва личното число, на родения на тази дата.



Примерен вход:

2 2 2002


Примерен изход:

8

Да се отделят цифрите на числа е много често срещан алгоритъм в програмирането. Включването на алгоритмичното направление „Алгоритми от теория на числата” на това ниво на обучението по програмиране е подходящо, защото от една страна на тази възраст учениците лесно възприемат операциите за целочислено деление; а от друга страна фиксирания брой цифри на числата, които се предлагат за обработка, съшо улесняват решаването на задачи от този тип.



Най-важното, на което трябва да се обърне внимание при решаване на този тип задачи е да се осмисли факта, че при деление на 10 се получава като остатък последната цифра на числото, а като резултат – същото число, но без последната цифра.

Интересно наблюдение е, че това обяснение се възприема по-лесно от ученици от четвърти клас, отколкото от по-големите, тъй като в училище те са учили само целочислено деление. Все пак всички успешно разбират как да разделят числото на цифри.

Много по-трудно е да се усвои конструирането на число от дадени цифри. Това тряба да се обясни с много примери, тъй като малките ученици се затрудняват от параметризацията и трудно осмислят работата с променливи, а не с конкретни числа.

Усвояването на уменията за конструиране на числа се постига най-ефективно с множество задачи за упражнение. Всеки учител сам може да измисли, задачи подобни на посочените по-горе. Освен тях поставянето на допълнителни задачи от вида: „да се реши същата задача за четирицифрено или(и) петцифрено число”, води до още по-добро осмисляне на алгоритмите и подготвя учениците за далеч по-сложната задача за прилагането им към число с неопределен брой цифри.



Подходящи са и задачите за конструиране на числа от миналите състезания.


Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница