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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 12.10.2009, 01:10   #11
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Опять же рекурсией)
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

int NOD(int x, int y)
{
	if( x == 0 )
		return y;
	else
		return NOD(y%x, x);
}

int NodOf10(int* arr, int n = 0)
{
	if( n == 10 )
		return 0;
	else
		return NOD(NodOf10(arr, n+1), arr[n]);
}

void main()
{
	int a[10];

	for(int i = 0; i < 10; i++) {
		scanf("%d", &a[i]);
		printf("%d ", a[i]);
	}
	
	printf("\nHOD = %d", NodOf10(a));

	
	getch();

	return;
}
Но всё же постарайтесь хоть какие-то наработки выдавать))
netrino вне форума
Старый 12.10.2009, 01:17   #12
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
По умолчанию

Цитата:
А вот такая задачка:
Даны 10 натуральных чисел. Найти наибольший общий делитель.
А вот такая программка))
Код:
#include <stdio.h>
#include <conio.h>

void main()
{
   clrscr();
	int mass[10], i, loop=0, min;
	printf("Vvedite chisla:\n");
	for(i=0; i<10; i++)
	{
		scanf("%d",&mass[i]);
	}
	for(i=0; i<10; i++)
	{
	        if(mass[i]<min) min=mass[i];
	}
	for(min--; min!=0, loop!=1; min--)
	{
	        if(mass[0]%min==0)
	        {
			for(i=0; i<10; i++)
			{
				if(mass[i]%min!=0) break;
			}
			printf("\nNaibolshi delitel': %d", min); loop=1;
	        }

	}
	getch();
}
Nitrino вне форума
Старый 12.10.2009, 01:21   #13
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Nitrino Посмотреть сообщение
А вот такая программка))
Код:
#include <stdio.h>
#include <conio.h>

void main()
{
   clrscr();
	int mass[10], i, loop=0, min;
	printf("Vvedite chisla:\n");
	for(i=0; i<10; i++)
	{
		scanf("%d",&mass[i]);
	}
	for(i=0; i<10; i++)
	{
	        if(mass[i]<min) min=mass[i];
	}
	for(min--; min!=0, loop!=1; min--)
	{
	        if(mass[0]%min==0)
	        {
			for(i=0; i<10; i++)
			{
				if(mass[i]%min!=0) break;
			}
			printf("\nNaibolshi delitel': %d", min); loop=1;
	        }

	}
	getch();
}
Нигде не вижу инициализации min )
netrino вне форума
Старый 12.10.2009, 01:22   #14
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
По умолчанию

а приглядитесь))))
Код:
int mass[10], i, loop=0, min;
Nitrino вне форума
Старый 12.10.2009, 01:22   #15
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
mass[i]<min
гы, а min=-365546 ?

я такое соорудил

Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

#define N 20
#define M 2000

int maximum(int *mas)
{
	int max=mas[0];
	for(int i=1;i<N;i++)
		if(mas[i]>max)
			max=mas[i];

	return max;
}

void main()
{
	int nod=1,i,j,*mas,max,flag=0;

	mas=(int*)malloc(N);

	printf("chisla\n");
	srand(time(0));
	for(i=0;i<N;i++)
	{
		mas[i]=rand()%M;
		printf("%d -e = %d\n",i+1,mas[i]);
	}


	max=maximum(mas);

	for(j=2;j<max;j++)
	{
		for(i=0;i<N;i++)
		{
			if(mas[i]%j==0)
				flag=1;
			flag=0;
		}
		if(flag)
			nod=j;
	}

	printf("\nnod = %d",nod);

	getch();
}
counter вне форума
Старый 12.10.2009, 01:24   #16
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Nitrino Посмотреть сообщение
а приглядитесь))))
Код:
int mass[10], i, loop=0, min;
Инициализация, а не объявление))
Тем более всё равно не правильно работает) поменял везде 10 на 3 и проверил с числами 18, 24, 36, ответ выдал 9 )
netrino вне форума
Старый 12.10.2009, 01:24   #17
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
По умолчанию

ой дурак да мин просто нужно инициализировать каким нибудь большим числом
Nitrino вне форума
Старый 12.10.2009, 01:29   #18
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

2Nitrino бывает)

Цитата:
Сообщение от counter Посмотреть сообщение
гы, а min=-365546 ?

я такое соорудил

Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

#define N 20
#define M 2000

int maximum(int *mas)
{
	int max=mas[0];
	for(int i=1;i<N;i++)
		if(mas[i]>max)
			max=mas[i];

	return max;
}

void main()
{
	int nod=1,i,j,*mas,max,flag=0;

	mas=(int*)malloc(N);

	printf("chisla\n");
	srand(time(0));
	for(i=0;i<N;i++)
	{
		mas[i]=rand()%M;
		printf("%d -e = %d\n",i+1,mas[i]);
	}


	max=maximum(mas);

	for(j=2;j<max;j++)
	{
		for(i=0;i<N;i++)
		{
			if(mas[i]%j==0)
				flag=1;
			flag=0;
		}
		if(flag)
			nod=j;
	}

	printf("\nnod = %d",nod);

	getch();
}
Не совсем верно... опять же, для того же набора 18, 24, 36 по этому алгоритму НОД будет 3... а должен быть 6

Последний раз редактировалось Stilet; 12.10.2009 в 09:34.
netrino вне форума
Старый 12.10.2009, 01:48   #19
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
По умолчанию

вот подправил свой код
Код:
#include <stdio.h>
#include <conio.h>

void main()
{
   clrscr();
	int mass[10], i, loop=0, min=1000, flag;
	printf("Vvedite chisla:\n");
	for(i=0; i<10; i++)
	{
		scanf("%d",&mass[i]);
	}
	for(i=0; i<10; i++)
	{
			  if(mass[i]<min) min=mass[i];
	}
	for(min--; min!=0, loop!=1; min--)
	{
		if(mass[0]%min==0)
		{
			for(i=0, flag=0; flag!=1, i<10; i++)
			{
				if(mass[i]%min!=0)
				{
					flag=1;
				}
			}
			if(flag!=1)
			{
				printf("\nNaibolshi delitel': %d", min); loop=1;
			}
		}

	}
	getch();
}
Nitrino вне форума
Старый 12.10.2009, 01:55   #20
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
Не совсем верно... опять же, для того же набора 18, 24, 36 по этому алгоритму НОД будет 3... а должен быть 6
да, есть такое
но причина вот тут

Код:
for(j=2;j<max;j++)
{
	for(i=0;i<N;i++)
	{
		if(mas[i]%j==0)
			flag=1;
		else
		{
			flag=0;
			break;  // нужно выйти из цикла при делении с остатком
		}
	}
	if(flag)
		nod=j;
}
да и в качестве max, думаю не стоит использовать максимальное значение, хватит и минимального
counter вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с задачкой.... Яков Repby Помощь студентам 0 17.06.2009 17:54
Помогите с задачкой Яков Repby Помощь студентам 0 08.06.2009 15:29
Помогите с задачкой на С++ pymba Помощь студентам 1 07.12.2008 15:07
Помогите с задачкой zzzzz JavaScript, Ajax 2 21.11.2008 14:17
Помогите с задачкой Saniok Помощь студентам 4 29.09.2007 20:34