Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Вопрос про множества.

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Вопрос про множества.
Имя
Сообщение << Старые топики   Новые топики >>
Вопрос про множества. - 2007-09-17 02:02:58.226666   
Antigen

Сообщений: 92
Оценки: 0
Присоединился: 2007-04-02 11:41:48.606666

Код котороый ты видишь ниже делает не много не мало - прямое произведение двух множеств. Так вот, если первое множество 3, 5, 2, а второе 2, 1, 4 то результат этого декартова произведения должен быть 3*2, 3*1, 3*4; 5*2, 5*1, 5*4 и т.д.
Почему Этот код перебирает все значения i (т.е. 3 5 и 2),но умножает только на
последний элемент (j) т.е. на 4???;(
По задумке код должен перемножать каждый на каждого.
Где допущена ошибка???
Заранее благодарен за ответ.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>

int main()
{
int dim,i,j;
double* a;
double* b;
double c;
cout<<"Input dimention:";
cin>>dim;

a=(double*)malloc(dim*sizeof(double));
b=(double*)malloc(dim*sizeof(double));

if(!a)
{
printf("Not enough memory!");
return 1;
}

if(!b)
{
printf("Not enough memory!");
return 1;
}

cout<<"Input elements of the first array:";
for(i=0;i<dim;++i)
cin>>a;

cout&lt;&lt;"Input elements of the second array:";
for(j=0;j&lt;dim;++j)
cin&gt;&gt;b[j];

cout&lt;&lt;"The result is:";
cout&lt;&lt;' ';
for(i=0;i&lt;dim;++i)
{
for(j=0;j&lt;dim;++j)
c=a*b[j];
cout&lt;&lt;c;
}

cin&gt;&gt;dim;
free(a);
free(b);
return 0;
}


Post #: 1
RE: Вопрос про множества. - 2007-09-17 03:09:42.846666   
sergzone

Сообщений: 33
Оценки: 0
Присоединился: 2007-08-28 19:41:52.666666
int main() { int _mArray[4] = {3,2,1}; int _lArray[4] = {5,4,2}; for (int i=0;i&lt;sizeof(_mArray)/sizeof(*_mArray);i++) { for (int j=0;i&lt;sizeof(_lArray)/sizeof(*_lArray);j++) { cout &lt;&lt; _mArray[i]*_lArray[j]; } } return 0; }
Не тестировал, но вроде должно пaхать.
Post #: 2
RE: Вопрос про множества. - 2007-09-17 10:26:23.013333   
Antigen

Сообщений: 92
Оценки: 0
Присоединился: 2007-04-02 11:41:48.606666
Спасиб за вариант, но ошибко кроется в оригинальном коде и её желательно исправить там же…
Кто знает - прошу не молчите.
Post #: 3
RE: Вопрос про множества. - 2007-09-17 10:47:29.500000   
nixo

Сообщений: 213
Оценки: 0
Присоединился: 2006-06-25 20:22:26
привет
вот эту вещь я не понял

for(i=0;i<dim;++i)
cin>>a;

что происходит здесь? а -это указатель все таки
может надо так
for(i=0;i<dim;++i)
cin>>a;
Post #: 4
RE: Вопрос про множества. - 2007-09-17 11:01:39.913333   
FireLess

Сообщений: 3
Оценки: 0
Присоединился: 2007-09-09 03:18:58.103333
Блин… ты определись ты либо на С++ пиши либо на С.

А вообще ошибка вот тут
for(i=0;i<dim;++i)
cin>>a;

а - это указатель. то бишь адрес а ты его вводишь вручную
я полагаю имелось ввиду что-то типа *(a+i)
Post #: 5
RE: Вопрос про множества. - 2007-09-17 14:06:10.290000   
Antigen

Сообщений: 92
Оценки: 0
Присоединился: 2007-04-02 11:41:48.606666
Ответ был прост. сам удивляюсь…

Вот правильный код!

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>

int main()
{
int dim,i,j;
double* a;
double* b;
double c;
cout<<"Input dimention:";
cin>>dim;

a=(double*)malloc(dim*sizeof(double));
b=(double*)malloc(dim*sizeof(double));

if(!a)
{
printf("Not enough memory!");
return 1;
}

if(!b)
{
printf("Not enough memory!");
return 1;
}

cout<<"Input elements of the first array:";
for(i=0;i<dim;++i)
cin>>a;

cout&lt;&lt;"Input elements of the second array:";
for(j=0;j&lt;dim;++j)
cin&gt;&gt;b[j];

cout&lt;&lt;"The result is:";
cout&lt;&lt;' ';
for(i=0;i&lt;dim;++i)

for(j=0;j&lt;dim;++j)
{
c=a*b[j];
cout&lt;&lt;c;
}

cin&gt;&gt;dim;
free(a);
free(b);
return 0;
}

Всё дело в фиг скобках!
Post #: 6
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Вопрос про множества.







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.