E.Açıkgöz Ответов: 2

C основные математические операции


Напишите программу, которая считывает там целые числа с пользователя (клавиатуры), а именно n, a и b. ваша программа sohuld напечатает все положительные числа, удовлетворяющие следующему условию:

* Число меньше n и отношение числа и суммы его положительных делителей равно a/b.

Вы должны напечатать числа в порядке возрастания и вывести их положительные делители на той же линии, что и числа.

Пример
Если пользователь ввел n: 10, a: 1 и b:2, то, поскольку только 6 удовлетворяет условию, выход должен быть 6, и это положительные делители следующим образом :
6 1 2 3 6

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

Что я уже пробовал:

<pre>int a,b,n;

int main()
{
	printf("please enter a number for n");
	scanf("%d",n);
	printf("please enter a number for a");
	scanf("%d",a);
	printf("please enter a number for b");
	scanf("%d",b);
	
	int i = 1;
	for(i = 1; i<n; i++)
	
	return 0;
}

int sumofdivisors(int a)
{
	int i;
	int sum = 0;
	for(i=1;i<=a;i++)
	{
		if(a%i==0)
		sum += i;
	}
	return sum;
}

ZurdoDev

Тогда Задай вопрос. Это грубо и лениво-выкладывать домашнее задание и даже не задавать вопросов.

E.Açıkgöz

Я не делаю домашнее задание непосредственно здесь. Я попробовал, но не смог.

jeron1

Можете ли вы сделать это с помощью бумаги и карандаша?

2 Ответов

Рейтинг:
2

KarstenK

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

Вы можете определить такой массив, но вам также нужно освободить память:

int *arr = 0;// define pointer

int count = fillArrayFunc( arr, a, b, n );

for( int i = 0; i <count; i++ ) {
  int number = arr[i];//access
  printf("The number is: %d", number);
}
free( arr );//release the memory

//somewhere else do math and calc the stuff
int count fillArrayFunc( int *arr, int n, int a, int b) 
{
   arr = malloc( sizeof(int) * count );// alloc on input pointer

  return count;// needed for the output
}

Вы пропустили спросить раньше, так что у вас есть СЕЙЧАС проблема.


Рейтинг:
1

Richard MacCutchan

Следующий код не имеет смысла. Первая итерация цикла завершит вашу программу.

for(i = 1; i<n; i++)

return 0;


KarstenK

Массив начинается с 0. Рассматривайте его как смещение от начальной точки. Посмотрите или прочитайте какой-нибудь учебник, чтобы понять эту базовую концепцию программирования. Вы должны это понять!!!