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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2017, 16:10   #1
Onyx1
 
Регистрация: 05.01.2017
Сообщений: 7
По умолчанию Найти ошибку в коде. (С++)

Помогите найти ошибку, пожалуйста.
Буду благодарен!

Код:
#include <iostream>
#include <conio.h>
#include <clocale>
using namespace std;
int main()
{
	setlocale(LC_ALL, "rus");
	unsigned int a, b, a1, b1;
	long int S1=0, S2=0;
	cout<<"a=";
	cin>>a;
	cout<<"b=";
	cin>>b;
	for(int i=1; i<a; i++)
	{
		a1=a;
		while(a1>=i) a1-=i;
		if(a1==0) S1+=i;
	}
	for(int j=1; j<b; j++)
	{
		b1=b;
		while(b1>=j) b1-=j;
		if(b1==0) S2+=j;
	}
	cout<<"Сумма делителей первого числа: " << S2 << endl;
	cout<<"Сумма делителей второго числа: " << S1 << endl;
	if(S1 == a && S2 == b)
		cout<<"Числа - дружные!";
	system("pause");
	return 0;
}
Изображения
Тип файла: png 14С++.PNG (20.0 Кб, 115 просмотров)
Onyx1 вне форума Ответить с цитированием
Старый 08.01.2017, 12:10   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Если Вы хотите разобраться, то я Вам помогу, делать за Вас не буду.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 08.01.2017, 15:28   #3
Onyx1
 
Регистрация: 05.01.2017
Сообщений: 7
По умолчанию

Мне нужно только понять в чем ошибка. Я ее не могу найти. Я не прошу делать все за меня вас. Просто помогите понять в чем я ошибся. Пожалуйста.
Onyx1 вне форума Ответить с цитированием
Старый 08.01.2017, 17:06   #4
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Ну, сначала переведите задание на русский, форум русскоязычный. Мне непонятен Ваш алгоритм нахождения делителя. Обычно делитель находят при помощи операции %, количество делителей равно корню квадратному из заданного числа. Используя вышесказанное скорректируйте программу.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 08.01.2017, 20:28   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,722
По умолчанию

Цитата:
Сообщение от Sweta Посмотреть сообщение
количество делителей равно корню квадратному из заданного числа
сомнительное утверждение. 97 - найдите хотя бы один делитель, не считая 1 и самого числа.
Onyx1 - алгоритм нахождения числа действительно бредовый. По нахождению делителей тут тьма тем, надо не полениться просмотреть.

Последний раз редактировалось digitalis; 08.01.2017 в 20:46.
digitalis вне форума Ответить с цитированием
Старый 08.01.2017, 21:33   #6
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Цитата:
Сообщение от digitalis
сомнительное утверждение. 97 - найдите хотя бы один делитель, не считая 1 и самого числа.
Согласна, не корректно выразилась.
Первоначальное количество делителей равно 2: 1 и само число ;
потенциальные делители находятся в промежутке от 2 до Sqrt ( Q ) включительно.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 08.01.2017, 21:54   #7
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,722
По умолчанию

Цитата:
Сообщение от Sweta Посмотреть сообщение
Согласна, не корректно выразилась.
Первоначальное количество делителей равно 2: 1 и само число ;
потенциальные делители находятся в промежутке от 2 до Sqrt ( Q ) включительно.
Опять "некорректно" Если на отрезке 2..Sqrt ( Q ) найден делитель k, то "по ту сторону Sqrt ( Q )" есть симметричный ему Q/k .
18 -> 2,3,[Sqrt ( 18 )], 6,9
digitalis вне форума Ответить с цитированием
Старый 09.01.2017, 10:03   #8
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Да, есть. Но он вычисляется в этом промежутке.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 09.01.2017, 11:42   #9
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,722
По умолчанию

Цитата:
Сообщение от Sweta Посмотреть сообщение
Да, есть. Но он вычисляется в этом промежутке.
Это понятно. Но и в свете изложенного выражение
Цитата:
потенциальные делители находятся в промежутке от 2 до Sqrt ( Q ) включительно.
может быть неверно истолковано. "Тщательнее надо"
Onyx1 Я был неправ. Алгоритм не лучшего пошиба, есть короче (быстрее), но работает, проверил в Дельфи. Тогда непонятно - в чем проблема? Нахождение суммы делителей верное (я бы оформил его подпрограммой - одной для обоих чисел пары ) . Запутался во вводе-выводе ?
digitalis вне форума Ответить с цитированием
Старый 09.01.2017, 14:01   #10
Onyx1
 
Регистрация: 05.01.2017
Сообщений: 7
По умолчанию

Надеюсь картинки скажут все за меня.)
На Дельфи мы не работаем. 1 курс. изучаем только С и С++.
Нужно чтобы сума делителей не равнялось на введенное число.
Изображения
Тип файла: png Снимок1.PNG (2.9 Кб, 82 просмотров)
Тип файла: png Снимок2.PNG (29.3 Кб, 101 просмотров)

Последний раз редактировалось Onyx1; 09.01.2017 в 16:04.
Onyx1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти ошибку в коде (Для данной целочисленной матрицы размером n*m найти матрицу из 0 и 1...) код на C camel5 Помощь студентам 1 26.11.2013 06:11
найти ошибку в коде anghela БД в Delphi 6 28.05.2013 16:12
Найти ошибку в коде Oksik_ Помощь студентам 9 05.11.2012 23:59
Найти ошибку в коде,С++ ! Aaaaaa111 Помощь студентам 1 16.02.2012 11:10