Перейти к содержимому
Kknewkles

Программирование на С++

Рекомендуемые сообщения

Так-с...прошло порядочно много времени, я смотрю на эти задачки и понимаю, какая же эта все была фигня...)) На подходе Метод Гаусса, Метод Зейделя... :nyam:

 

Тему поднимаю в силу возникновения новой проблемы. Я написал программу сложения и умножения матриц. Сложение пашет идеально. Умножение, несмотря на правильность всех формул, падло, косячед. Вот листинг:

#include<iostream.h>
#include<conio.h>
#include<math.h>
#include<dos.h>
#include<stdio.h>

#define stroka 13
#define stolbets 40
#define stroka1 25
#define stolbets1 80

class CMatrix
{
int m;
int n;
int *p;
public: CMatrix(int,int);
    CMatrix(){};
CMatrix add(CMatrix, CMatrix);
CMatrix multiply(CMatrix, CMatrix);
void input();
void print(int,int);
};

void main()
{
clrscr();
int m,n;
cout<<"input m,n"<<endl;

[indent] cin>>m>>n;
[/indent]
clrscr();
CMatrix A(m,n);
CMatrix B(m,n);
CMatrix C(m,n);
CMatrix D(m,n);
A.input();
clrscr();
B.input();
clrscr();
A.print(5,5);
cout<<endl;
B.print(10,10);
cout<<endl;
cout<<endl;
C=C.add(A,B);
D=D.multiply(A,B);
C.print(15,15);
cout<<endl;
cout<<endl;
D.print(30,15);
cout<<endl;
getch();
clrscr();
}

CMatrix::CMatrix(int x,int y)
{
m=x;
n=y;
p=new int[m*n];
}

void CMatrix::input()
{
int i,j;
for(i=0;i<m;i++)
{
 for(j=0;j<n;j++)
 {
  cout<<"["<<i<<"]["<<j<<"]= ";
  cin>>p[i*m+j];
 }
}
}

CMatrix CMatrix::add(CMatrix obj1,CMatrix obj2)
{
int i,j;
CMatrix temp(obj1.m, obj1.n);
for(i=0;i<obj1.m;i++)
for(j=0;j<obj1.n;j++)
temp.p[i*obj1.n+j]=obj1.p[i*obj1.n+j]+obj2.p[i*obj1.n+j];
return temp;
}

CMatrix CMatrix::multiply(CMatrix obj1, CMatrix obj2)
{
CMatrix result(obj1.m, obj2.n);
int i,j,k,temp_summ;
for(i=0;i<obj1.m;i++)
{
 for(j=0;j<obj2.n;j++)
 {
  temp_summ=0;
  for(k=0;k<obj1.n;k++);
  {
   temp_summ+=((*(obj1.p+i*obj1.n+k))*(*(obj2.p+k*obj2.n+j)));
  }
  *(result.p+i*result.n+j)=temp_summ;
 }
}
return result;
}

void CMatrix::print(int,int)
{
int i,j;
for(i=0;i<m;i++)
{
 cout<<endl;
 for(j=0;j<n;j++)
 {
  gotoxy(stroka, stolbets);
  printf(" %d ", p[i*n+j]);
 }
}
}

Изменено пользователем Kknewkles

Поделиться сообщением


Ссылка на сообщение

Я юзаю Borland C++ Builder 6.

 

Рисовать в Borland C++ Builder довольно просто. Там есть специальный класс - Canvas. Я обычно им пользуюсь.

Поделиться сообщением


Ссылка на сообщение

Черт побери, Эклипс, причем здесь юзаемый тобой компилятор и рисование в нем? Это все конечно хорошо, но поезд давно утюхал и идет обсуждение совершенно других вещей.

Поделиться сообщением


Ссылка на сообщение

Юзай Delphi 7 и будет тебе счастье, да С++ компактней в плане размера скомпилированного ехе файла, но зато делфя гораздо проще и понятней !

Поделиться сообщением


Ссылка на сообщение

В Delphi программирование на Паскале. Для Win32 ИМХО наилучший компилятор языка C++ - MS Visual C++.

 

да С++ компактней в плане размера скомпилированного ехе файла

 

зато скомпилированный в Borland C++ Builder exe-шник не будет работать на других компах, если там не установлен Borland C++ Builder. В этом случае вместе с EXE-шником нужно копировать также и библиотеки, которые использовались при написании программы. А в Delphi все необходимые библиотеки автоматически включаются в EXE-шник, поэтому проги написанные в ней спокойно работают на других компах без каких-либо дополнитетельных файлов.

Изменено пользователем Eclipse The Hedgehog

Поделиться сообщением


Ссылка на сообщение

Немезис, но обучают-то меня на данный момент С++ :nyam:

В самоволку уйти не могу))

Поделиться сообщением


Ссылка на сообщение

use for^Wbrain, Luke.

а дельфи вместе с багландом в кал, их поезд давно уехал, как и поезд фара с корелдро, которые нигде кроме России-матушки никому нафиг не сплющились.

По теме: попробуй переписать на человеческий c++, половина вопросов отпадёт сама собой.

Поделиться сообщением


Ссылка на сообщение

Человеческий? Не понял.

Поделиться сообщением


Ссылка на сообщение

С использованием стандартных, а не борландовских функций.

Поделиться сообщением


Ссылка на сообщение

Блин...чего там не стандартного...

Йа тупак, явно не втыкаю :)

Поделиться сообщением


Ссылка на сообщение

Просто Борланд первоначально создали Delphi, а уже потом C++. И все свои функции из Delphi они перекинули в свой C++ Builder. Я помню когда-то DLL писал в Borland C++ Builder'е, и эту DLL потом нельзя было использовать в MS Visual C++, VB и других компиляторах, а только в C++ Builder'е и Delphi. Там у DLL своя точка входа и т.п. Короче снёс Borland и поставил MS Visual C++.

Поделиться сообщением


Ссылка на сообщение

for(k=0;k<obj1.n;k++);

Вот это что?? Убрать не пробовал?

Одно слово - индусы-с...

Изменено пользователем [unix]

Поделиться сообщением


Ссылка на сообщение

А?! Черт...мда, это я могу... ;D А причем тут индусы??)

Призываю программистов к осторожности - ошибка, мною сотворенная и товарищем Юниксом справедливо обруганная - классическая.

 

В общем, с преподом программу исправили, работает. Спасибо за внимание ;D

 

 

Кстати, эта тема не для моего личного пользования. Любой пользователь может сюда написать, как вы уже наверное догадались)

Изменено пользователем Kknewkles

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×