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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2011, 23:58   #11
Sauruk
 
Регистрация: 06.05.2011
Сообщений: 5
По умолчанию

Каюсь, так и не смог переварить код, что находится по ссылке

разработал свою тормозную версию программы
Код:
#include <stdio.h> 
#include <math.h>
#include <conio.h> 

int kup[14]={1,2,5,10,20,50,100,200,500,1000,5000,10000,50000,100000}; 
int mnozhitel[14];
int tmp[100][14]; 
int k=0,kolkupmin=100;

int NumLen(int x)
{
	int len=0;
	while (x)
	{
		x/=10;
		len++;
	}
	return len;
}

void Zapolnenie(int razmen, int z)
{int j,sum=0,kolkup=0;
	for (j=0;j<z;j++)
	{
		sum+=kup[j]*mnozhitel[j];
		kolkup+=abs(mnozhitel[j]);
	}
	if (sum==razmen&&kolkup<kolkupmin) {kolkupmin=kolkup; k=0;}
	if (sum==razmen&&kolkup==kolkupmin) 
	{
		for (j=0;j<z;j++)
		tmp[k][j]=mnozhitel[j];
		k++;
	}
}

int main()
{
	int i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,razmen,len,j,znk=0;
	FILE *kurs=fopen("result.txt","a");
	printf("Vvedite summu dlya razmena ");
	scanf("%d",&razmen); 
	len=NumLen(razmen);
	for (i1=-1;i1<=1;i1++) 
	{
		mnozhitel[0]=i1;
		for (i2=-1;i2<=2;i2++)
		{
			mnozhitel[1]=i2;
			for (i3=-1;i3<=1;i3++)
			{
				mnozhitel[2]=i3;
				for (i4=-1;i4<=1;i4++)
				{
					mnozhitel[3]=i4;
					if (len==1)
					{
						Zapolnenie(razmen,4);
						continue;
					}
					else 
					for (i5=-1;i5<=2;i5++)
					{
						mnozhitel[4]=i5;
						for (i6=-1;i6<=1;i6++)
						{
							mnozhitel[5]=i6;
							for (i7=-1;i7<=1;i7++)
							{
							mnozhitel[6]=i7;
							if (len==2)
							{
								Zapolnenie(razmen,7);
								continue;
							}
							else 
								for (i8=-1;i8<=2;i8++)
								{
									mnozhitel[7]=i8;
									for (i9=-1;i9<=1;i9++)
									{
										mnozhitel[8]=i9;
										for (i10=-2;i10<=3;i10++)
										{
											mnozhitel[9]=i10;
											if (len==3)
											{
												Zapolnenie(razmen,10);
												continue;
											}
											else 
											for (i11=-1;i11<=1;i11++)
											{
												mnozhitel[10]=i11;
												for (i12=-2;i12<=3;i12++)
												{
													mnozhitel[11]=i12;
													if (len==4)
													{
														Zapolnenie(razmen,12);
														continue;
													}
													else 
													for (i13=-1;i13<=1;i13++)
													{
														mnozhitel[12]=i13;
														for (i14=0;i14<=9;i14++)
														{
															mnozhitel[13]=i14;
															Zapolnenie(razmen,14);;
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
	for(int i=0;i<k;i++)
	{
		printf("%d = ",razmen);
		fprintf(kurs,"\n%d = ",razmen);
		for (j=13;j>=0;j--)
		{  
			if (tmp[i][j]!=0) znk++;
			for (int l=0;l<abs(tmp[i][j]);l++)
			{
				if (tmp[i][j]<0)
				{
					printf("- %d ", tmp[i][j]/tmp[i][j]*kup[j]);
					fprintf(kurs,"- %d ", tmp[i][j]/tmp[i][j]*kup[j]);
				}
				else if (tmp[i][j]>0)
				{
					if (znk>1) {printf("+ %d ", tmp[i][j]/tmp[i][j]*kup[j]);fprintf(kurs,"+ %d ", tmp[i][j]/tmp[i][j]*kup[j]);}
					else  {printf("%d ", tmp[i][j]/tmp[i][j]*kup[j]); fprintf(kurs,"%d ", tmp[i][j]/tmp[i][j]*kup[j]);}
				}
			}
		}
		printf("\n");
		fprintf(kurs,"\n");
		znk=0;
	}
	fclose(kurs);
	getch();
	return 0;	
	
}
жду критики)
Sauruk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для подсчета полного и эффективного кол-ва информации wandering Помощь студентам 5 04.04.2010 19:56
макрос - подсчитать для каждой строки кол-во ячеек с «+», кол-во ячеек с «-» Vadim_abs Microsoft Office Excel 36 14.07.2009 12:08
Найти кол-во целых чисел в первой последовательности и кол-во нечетных во второй. DjDeniels-61 Помощь студентам 7 28.06.2009 13:04
Для вещественного массива А(20)вычислить наибольшее и наименьшее значения модуля раз-ти между сосед.эл-ми faix Помощь студентам 2 14.11.2007 13:25