Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KURSach.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
88.06 Кб
Скачать

5.2.4. Руководство пользователя

Программа предназначена для нахождения совершенных чисел в предела меньше M

int i,j - параметры циклов. i - число приближающееся к M.

int m - входное значение.

int x - максимальное теоретическое количество делителей.

int k - сумма делителей.

Данные вводятся с клавиатуры.

Входные:

1000

Выходные:

6 28 496

5.2.5. Руководство программиста

Программа предназначена для нахождения совершенных чисел в предела меньше M.

main() - функция принимает начальные значения в виде M до которого проводятся поиски.

int i,j - параметры циклов. i - число приближающееся к M.

int m - входное значение.

int x - максимальное теоретическое количество делителей.

int k - сумма делителей.

Запуск программы в Windows, а именно файл 1-23.c можно выполнить при помощи:

- Среда разработки Dev-C++ 5.8.2 или выше.(компилятор TDM-GCC 4.8.1). Рекомендуемо проводить компиляцию и запуск именно из этой среды.

- Так же поддерживаются среды Вorland С++ 3.1, Borland C++ 5.5.

6. Заключение

Результаты курсовой работы демонстрируют возможности языка Си в решении олимпиадных задач в технологии операторного программирования.

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

7. Приложение к задаче №1

// Данная программа предназначена для нахождения наибольшей стоимости книги,

// при которой могло призойти то, что у продавца не найдется сдачи при приобретении покупателем книги, если у покупателя было M монет достоинтсвом

// P[1],...,P[M], а у продавца было N монет достоинством Q[1],...,Q[N],

// причем P[1]<=P[2]<=...<=P[M] и Q[1]<=Q[2]<=...<=Q[N].

#include<stdio.h>

#include<math.h>

#define M 5

#define N 6

int main(){

int P[M]={3,13,74,273,432};

int Q[N]={1,2,3,7,10,10};

int Psumm=0, i,j,k, CostBook, BackCost=0,Summ, CostP, BackCostNext;

printf(“\nEnter P[M]:\n”);

for(i=0;i<M;i++){

scanf("%d",&P[i]);

}

printf(“\nEnter Q[N]:\n”);

for(i=0;i<N;i++){

scanf("%d",&Q[i]);

}

for(i=0;i<M;i++){ //вычисление контрольной суммы массива покупателя

Psumm+=P[i];

}

for(CostBook=1;CostBook<=Psumm;CostBook++){ //цикл в котором находится удовлетворяющий условию элемент

CostP=Psumm;

for(i=0;i<pow(2,M);i++){ //через двоичное представление

k=i;

Summ=0;

for(j=0;j<M;j++){

Summ+=P[j]*((k>>j)%2);

}

if(CostBook<=Summ && CostP>Summ){

CostP=Summ;

}

}

CostP=CostP-CostBook;

if(CostP!=0){

BackCostNext=CostBook;

for(i=0;i<pow(2,N);i++){ //через двоичное представление

k=i;

Summ=0;

for(j=0;j<N;j++){

Summ+=Q[j]*((k>>j)%2);

}

if(CostP==Summ){

//есть сдача - продолжение цикла бессмысленно

BackCostNext=0;

break;

}

}

}

if(BackCostNext>0 && BackCostNext>BackCost){

BackCost=BackCostNext;

}

}

if(BackCost>0){

printf("Cost Book=%d, BackCost no ", BackCost);

}

else{

printf("BackCost yes ", BackCost);

}

return 0;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]