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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2013, 09:56   #1
xWoWx
Пользователь
 
Регистрация: 03.04.2012
Сообщений: 34
По умолчанию Работа с матрицами в с++

Код:
// zadacha.cpp : Defines the entry point for the console application.
//

#include <iostream.h>
#include <time.h>
#include <fstream.h>
#include <iomanip.h>
#include <math.h>
#include <stdio.h>

void main(void);
int _tmain(int argc, _TCHAR* argv[])
{

    const int n=8;
    char const* menu [ n ] ={

			     "1. Zadatj razmer obeih matric",
			     "2. Zadatj diapazon i minimalnoe chislo zapolnenija matric",
			     "3. Otobrazhenie sluchajnih matric",
			     "4. Vibor operacii slozhenija matric",
			     "5. Vibor operacii transponirovanija matric",
			     "0. Exit"
			  } ;
    unsigned int r;
    int *pmasC,*pmasA,*pmasB, diapazonA, minnumA, diapazonB, minnumB, def=0;
    int v, p, i, j, nrow, ncol,m;


    do
    {
	cout << "Menu\n" ;
	for (i=0;i<n;i++)
	    cout<<menu[i]<<endl ;
	    printf("\n");
	cout << "\nVash vibor - > ";
	cin >> v ;
	cin.get();
	printf("\n");
	switch ( v ){
	case 1 :
	    printf(menu[0]);
	    printf("\n");
	    int nrow,ncol,r,c;
	    printf("\n");
	    printf("Number strok?\n");
	    cin>>nrow;
	    cin.get();
	    printf("Number kolonok?\n");
	    cin>>ncol;
	    cin.get();
	    printf("\n");
	    if (def == 0)
		def=1;
	    break ;
	case 2 :
	    if (def != 0)
	    {    cout << "\n" << menu [ 1 ] << "\n\n" ;
	    r = time(NULL) % 32767;
	    srand(r);
	    printf("\t Diapazon A matrici = ");
	    cin >> diapazonA;
	    printf("\n");
	    printf( "\t Minimaljnoe chislo A matrici = ");
	    cin >> minnumA;
	    cin.get();
	    printf("\n");
	    printf("\n");
	    printf("\t Diapazon B matrici = ");
	    cin >> diapazonB;
	    printf("\n");
	    printf( "\t Minimaljnoe chislo B matrici = ");
	    cin >> minnumB;
	    printf("\n");
	    cin.get();
		def = 2;
	    }
	    else
	    {    printf("\tPrezhde zadajte razmer matrici\n");
		cin.get();
	    }
	    break ;
	case 3 :
	    if (def == 2)
		{
    printf(menu[2]);

    printf("\n");
    printf("\n");
    printf("Matrix A");
    printf("\n");
    int **pmasA;
    pmasA=new int *[nrow];
    for (r=0;r<nrow;r++)
	pmasA[r]=new int [ncol];

    for(r=0;r<nrow;r++)
    for(c=0;c<ncol;c++)
	*(*(pmasA+r)+c)=int(rand()/32767.*diapazonA)+minnumA;
    for(r=0;r<nrow;r++)
    {
	for(c=0;c<ncol;c++)
	    cout<<*(*(pmasA+r)+c)<<'\t';
	printf("\n");
    }
    printf("\n");
    printf("Matrix B");
    printf("\n");
    printf("\n");
    int **pmasB;
    pmasB=new int *[nrow];
    for (r=0;r<nrow;r++)
	pmasB[r]=new int [ncol];

    for(r=0;r<nrow;r++)
	for(c=0;c<ncol;c++)
	*(*(pmasB+r)+c)=int(rand()/32767.*diapazonB)+minnumB;

    for(r=0;r<nrow;r++)
    {
	for(c=0;c<ncol;c++)
	cout<<*(*(pmasB+r)+c)<<'\t';
	cout<<'\n';
    }
    cin.get();

	    }
	    else
	    {    cout<<"\t Vi dolzni vvesti diapazon i minimaljnoe chislo do etogo \n";
		cin.get();
	    }
	    break ;
	case 4 :
	    if (def == 2)
	    {

    int **pmasC;
    pmasC=new int*[nrow];

    for (r=0;r<nrow;r++)
	pmasC[r]=new int [ncol];

    for(r=0;r<nrow;r++)
	for(c=0;c<ncol;c++)
	*(*(pmasC+r)+c)=*(*(pmasA+r)+c)+*(*(pmasB+r)+c);

	    for(r=0;r<nrow;r++)
	    {
	for(c=0;c<ncol;c++)
	    cout<<*(*(pmasC+r)+c)<<'\t';
	cout<<'\n';
	    }
	    }
	    else
	    {    cout<<"\t Vi dolzni vvesti diapazon i minimaljnoe chislo do etogo \n";
		cin.get();
	    }

	    break;
	case 5 :  cout<<"Transponirovanie po glav diagonale"<<endl;
 for (i=0;i<n;i++)
 {
  for (j=0;j<n;j++)
  cout <<mas[j][i]<<" ";
  cout<<endl;
 }
 cout<<"Transponirovanir po pobo4noy diaganale"<<endl;
   for (i=0;i<n;i++)
 {
  for (j=0;j<n;j++)
  cout <<mas[n-1-j][n-1-i]<<" ";
  cout<<endl;
  }
cout<<endl;


	    break;

	case 0 :
	    if (pmasB != NULL)
	    {
	delete [] pmasA;
	delete [] pmasB;
	delete [] pmasC;
	    }
	    break ;
	default  :
	    cout << "\nMenu sostoit iz 8-mi punktov\n\n";
	    cin.get();
	}
    } while ( v != 0 ) ;
    return 0;    }
Выдает ошибку в int _tmain(int argc, _TCHAR* argv[]) просит поставить скобку )когда ставишь вроде правильно а программа не идет
xWoWx вне форума Ответить с цитированием
Старый 24.06.2013, 10:23   #2
xWoWx
Пользователь
 
Регистрация: 03.04.2012
Сообщений: 34
По умолчанию

Код:
// zadacha.cpp : Defines the entry point for the console application.
//

#include <iostream.h>
#include <time.h>
#include <fstream.h>
#include <iomanip.h>
#include <math.h>
#include <stdio.h>

void main(void);
int _tmain(int argc, _TCHAR* argv[])
{

    const int n=8;
    char const* menu [ n ] ={

			     "1. Zadatj razmer obeih matric",
			     "2. Zadatj diapazon i minimalnoe chislo zapolnenija matric",
			     "3. Otobrazhenie sluchajnih matric",
			     "4. Vibor operacii slozhenija matric",
			     "5. Vibor operacii transponirovanija matric",
			     "0. Exit"
			  } ;
    unsigned int r;
    int *pmasC,*pmasA,*pmasB, diapazonA, minnumA, diapazonB, minnumB, def=0;
    int v, p, i, j, nrow, ncol,m;


    do
    {
	cout << "Menu\n" ;
	for (i=0;i<n;i++)
	    cout<<menu[i]<<endl ;
	    printf("\n");
	cout << "\nVash vibor - > ";
	cin >> v ;
	cin.get();
	printf("\n");
	switch ( v ){
	case 1 :
	    printf(menu[0]);
	    printf("\n");
	    int nrow,ncol,r,c;
	    printf("\n");
	    printf("Number strok?\n");
	    cin>>nrow;
	    cin.get();
	    printf("Number kolonok?\n");
	    cin>>ncol;
	    cin.get();
	    printf("\n");
	    if (def == 0)
		def=1;
	    break ;
	case 2 :
	    if (def != 0)
	    {    cout << "\n" << menu [ 1 ] << "\n\n" ;
	    r = time(NULL) % 32767;
	    srand(r);
	    printf("\t Diapazon A matrici = ");
	    cin >> diapazonA;
	    printf("\n");
	    printf( "\t Minimaljnoe chislo A matrici = ");
	    cin >> minnumA;
	    cin.get();
	    printf("\n");
	    printf("\n");
	    printf("\t Diapazon B matrici = ");
	    cin >> diapazonB;
	    printf("\n");
	    printf( "\t Minimaljnoe chislo B matrici = ");
	    cin >> minnumB;
	    printf("\n");
	    cin.get();
		def = 2;
	    }
	    else
	    {    printf("\tPrezhde zadajte razmer matrici\n");
		cin.get();
	    }
	    break ;
	case 3 :
	    if (def == 2)
		{
    printf(menu[2]);

    printf("\n");
    printf("\n");
    printf("Matrix A");
    printf("\n");
    int **pmasA;
    pmasA=new int *[nrow];
    for (r=0;r<nrow;r++)
	pmasA[r]=new int [ncol];

    for(r=0;r<nrow;r++)
    for(c=0;c<ncol;c++)
	*(*(pmasA+r)+c)=int(rand()/32767.*diapazonA)+minnumA;
    for(r=0;r<nrow;r++)
    {
	for(c=0;c<ncol;c++)
	    cout<<*(*(pmasA+r)+c)<<'\t';
	printf("\n");
    }
    printf("\n");
    printf("Matrix B");
    printf("\n");
    printf("\n");
    int **pmasB;
    pmasB=new int *[nrow];
    for (r=0;r<nrow;r++)
	pmasB[r]=new int [ncol];

    for(r=0;r<nrow;r++)
	for(c=0;c<ncol;c++)
	*(*(pmasB+r)+c)=int(rand()/32767.*diapazonB)+minnumB;

    for(r=0;r<nrow;r++)
    {
	for(c=0;c<ncol;c++)
	cout<<*(*(pmasB+r)+c)<<'\t';
	cout<<'\n';
    }
    cin.get();

	    }
	    else
	    {    cout<<"\t Vi dolzni vvesti diapazon i minimaljnoe chislo do etogo \n";
		cin.get();
	    }
	    break ;
	case 4 :
	    if (def == 2)
	    {

    int **pmasC;
    pmasC=new int*[nrow];

    for (r=0;r<nrow;r++)
	pmasC[r]=new int [ncol];

    for(r=0;r<nrow;r++)
	for(c=0;c<ncol;c++)
	*(*(pmasC+r)+c)=*(*(pmasA+r)+c)+*(*(pmasB+r)+c);

	    for(r=0;r<nrow;r++)
	    {
	for(c=0;c<ncol;c++)
	    cout<<*(*(pmasC+r)+c)<<'\t';
	cout<<'\n';
	    }
	    }
	    else
	    {    cout<<"\t Vi dolzni vvesti diapazon i minimaljnoe chislo do etogo \n";
		cin.get();
	    }

	    break;
	case 5 :  cout<<"Transponirovanie po glav diagonale"<<endl;
 for (r=0;r<nrow;r++)
 {
  for (c=0;c<ncol;j++)
  cout <<pmasA[c][r]<<" ";
  cout<<endl;
 }
 cout<<"Transponirovanir po pobo4noy diaganale"<<endl;
   for (r=0;r<nrow;r++)
 {
  for (c=0;c<ncol;c++)
  cout <<pmasA[r-1-c][r-1-c]<<" ";
  cout<<endl;
  }
cout<<endl;


	    break;

	case 0 :
	    if (pmasB != NULL)
	    {
	delete [] pmasA;
	delete [] pmasB;
	delete [] pmasC;
	    }
	    break ;
	default  :
	    cout << "\nMenu sostoit iz 8-mi punktov\n\n";
	    cin.get();
	}
    } while ( v != 0 ) ;
    return 0;    }
Код изменил в транспонирование матрицы, она была из другой моей программы. Соровно так же ругается на скопку. как в предыдущей программе.
xWoWx вне форума Ответить с цитированием
Старый 24.06.2013, 11:04   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Вообще уберите эту строку
Код:
void main(void);
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 24.06.2013, 11:09   #4
xWoWx
Пользователь
 
Регистрация: 03.04.2012
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Bugrimov Посмотреть сообщение
Вообще уберите эту строку
Код:
void main(void);
Таже ошибка, что и была раньше.
xWoWx вне форума Ответить с цитированием
Старый 24.06.2013, 11:26   #5
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Код:
#include <cstdlib>

using namespace std;
добавляйте Еще совет, пройдите отладчиком....
Кстати, а в чем вы компилируете код?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 24.06.2013, 11:30   #6
xWoWx
Пользователь
 
Регистрация: 03.04.2012
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Bugrimov Посмотреть сообщение
Код:
#include <cstdlib>

using namespace std;
добавляйте Еще совет, пройдите отладчиком....
Кстати, а в чем вы компилируете код?
досбокс. в нем встроенный борландс
xWoWx вне форума Ответить с цитированием
Старый 24.06.2013, 11:41   #7
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Откровенно говоря не сталкивался, не подскажу. Скажите, вы сами понимаете, что Ваш код должен делать....???
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 24.06.2013, 11:55   #8
xWoWx
Пользователь
 
Регистрация: 03.04.2012
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Bugrimov Посмотреть сообщение
Откровенно говоря не сталкивался, не подскажу. Скажите, вы сами понимаете, что Ваш код должен делать....???
Теритически да. По заданию требовалось сложить две матрицы. И сделать транспонирование, хотя бы одной из них.

Изначально код транспонирование сделал, а сумму не смог. Программа начальная была вот такой
Код:

#include <iostream.h>
#include <math.h>
#include <windows.h>
#include <time.h>
#include <>
int main()

{ int **mas, n,i,j,m,k,q,w;

cout<<"‚ўҐ¤ЁвҐ Є®«-ў® бва®Є Ё бв®«Ўж®ў ¬*ваЁж1:="<< endl;
cin>>n;
mas=new int*[n];
for (i=0; i<n; i++)
 mas[i]=new int[n];
cout<<"‚ўҐ¤ЁвҐ н«Ґ¬Ґ*вл ¬*ваЁжл1:="<<endl;
for(i=0;i<n;i++)
for (j=0; j<n; j++)
{
 cout <<"["<<i<<"]["<<j<<"]=";
 cin>>mas[i][j];
 }
 cout<<"€б室**п ¬*ваЁж*1"<<endl;
 for (i=0; i<n; i++)
 { for(j=0; j<n; j++)
 cout<<mas[i][j];
 cout<<endl;
   }
 cout<<"’а**бЇ®*Ёа®ў****п ¬*ваЁж* Ї® Ј«**®© ¤ЁЈ***«Ґ:="<<endl;
 for (i=0;i<n;i++)
 {
  for (j=0;j<n;j++)
  cout <<mas[j][i]<<" ";
  cout<<endl;
 }
 cout<<"’а**бЇ®*Ёа®ў****п ¬*ваЁж* Ї® Ї®Ў®з*®© ¤ЁЈ***«Ґ:="<<endl;
   for (i=0;i<n;i++)
 {
  for (j=0;j<n;j++)
  cout <<mas[n-1-j][n-1-i]<<" ";
  cout<<endl;
  }
cout<<endl;
cout<<endl;

cout<<"‚ўҐ¤ЁвҐ Є®«-ў® бва®Є Ё бв®«Ўж®ў ¬*ваЁж2:="<< endl;
cin>>m;
mas=new int*[m];
for (q=0; q<m; q++)
 mas[q]=new int[m];
cout<<"‚ўҐ¤ЁвҐ н«Ґ¬Ґ*вл ¬*ваЁжл2:="<<endl;
for(q=0;q<m;q++)
for (w=0; w<m; w++)
{
 cout <<"["<<q<<"]["<<w<<"]=";
 cin>>mas[q][w];
 }
 cout<<"€б室**п ¬*ваЁж*2"<<endl;
 for (q=0; q<m; q++)
 { for(w=0; w<m; w++)
 cout<<mas[q][w];
 cout<<endl;
   }

mas=new int*[k];
mas[k] = mas[n];
mas[n]=mas[m];
mas[m]=mas[k];

cout<<mas[k];
getch();

return 0;
}

Последний раз редактировалось Stilet; 24.06.2013 в 13:20.
xWoWx вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си - работа с матрицами. airman23 Помощь студентам 2 23.05.2012 12:18
Работа с матрицами(VC++ v.6) SunGlow Помощь студентам 0 28.11.2011 19:37
С++ работа с матрицами w0lf16 Помощь студентам 2 28.11.2010 14:43
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
C++ работа с матрицами. Farsait Общие вопросы C/C++ 2 19.01.2010 02:57