Форум программистов, компьютерный форум CyberForum.ru

Пояснения условия - C++

Восстановить пароль Регистрация
 
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
12.07.2011, 12:37     Пояснения условия #1
Пожалуйста поясните следующую задачу. (Прошу решения не предлагать, мне нужно самому решить)

http://www.cyberforum.ru/attachment....1&d=1310459683

Я не понимаю как эта таблица получается.
Если я могу предположить, что нижняя таблица (после пунктира) получилась в результате перемножения верхней, то как получилась верхняя догадок нет. В условие въехать не могу.
Миниатюры
Пояснения условия  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2011, 12:37     Пояснения условия
Посмотрите здесь:

Необходимы пояснения по коду C++
C++ Системы счисления(пояснения)
Условия if C++
C++ Пояснения кода
Пишем рогалик: пояснения по коду и его критика C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
12.07.2011, 13:08     Пояснения условия #2
Там видимо пробелы пропущены.
С ними, первая строка выглядит так -
1/6 1/3 1/2 2/3 5/6 =>
1/6 2/6 3/6 4/6 5/6 - как и говорится в задании, все числители от 1 до n-1, где n равно 6.

Это имелось в виду, не?)
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
12.07.2011, 14:41     Пояснения условия #3
однако... так хотя бы сходится ))
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
13.07.2011, 12:23  [ТС]     Пояснения условия #4
Второй день сижу над этой задачей. Вот что придумал

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include<iostream>
using namespace std;
class a
{private:
int b,d[10000],c,f[1000],m[1000],k,i[1000],p[1000],o[10000];
public:
void fc0(a& a1)
{cout<<"Введите знаменатель --> ";
cin>>a1.b;
}
void fc1(a& a1)
{for(int q=0;q<a1.b-1;q++)
{a1.d[q]=q+1;
 a1.o[q]=a1.b;
a1.c=a1.d[q];
a1.k=a1.o[q];
do{
   a1.c = a1.c % a1.k;
  if (a1.c == 0)
  {a1.c=a1.k;
break;}
a1.k = a1.k % a1.c;
if (a1.k == 0)
{a1.c=a1.c;
break;}
 }while (true);
a1.f[q]=a1.d[q]/a1.c;
a1.m[q]=a1.o[q]/a1.c;
cout<<a1.f[q]<<"/"<<a1.m[q]<<endl<<endl;
}int j=0,h=0,s;
for(s=0;s<a1.b;)
{
a1.f[h]=a1.f[j]*a1.f[s];
a1.m[h]=a1.m[j]*a1.m[s];
if(s==a1.b-2)
{s=0;
j=j+1;}
if(j>=a1.b)
{break;}
cout<<a1.f[h]<<"/"<<a1.m[h]<<endl;
s=s+1,h=h+1;
}
}
 
};
int main ()
{setlocale(LC_ALL,"Rus");
a a1;
a1.fc0(a1);
a1.fc1(a1);
cin.get();
cin.get();
return 0;
}
Этот код выполняется так же как и должен в задаче, но что-то он мудрит с конечными знаменателями. Увеличивает их в 6 раз. Все проблемы начинаются в этом цикле


C++
1
2
3
4
5
6
7
8
9
10
11
12
for(int j=0,h=0,s=0;s<a1.b;)
{
a1.f[h]=a1.f[j]*a1.f[s];
a1.m[h]=a1.m[j]*a1.m[s];
if(s==a1.b-2)
{s=0;
j=j+1;}
if(j>=a1.b)
{break;}
cout<<a1.f[h]<<"/"<<a1.m[h]<<endl;
s=s+1,h=h+1;
}
Вроде даже вот в этой строчке

C++
1
a1.m[h]=a1.m[j]*a1.m[s];


Подскажите в чем ошибка.
Yandex
Объявления
13.07.2011, 12:23     Пояснения условия
Ответ Создать тему
Опции темы

Текущее время: 00:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru