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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2009, 13:26   #1
leny_like
Новичок
Джуниор
 
Аватар для leny_like
 
Регистрация: 22.12.2009
Сообщений: 2
Сообщение Прошу помощь. С++. Обработка двумерного массива.

Собственно последняя лабораторная для сдачи.
Необходимо создать динамический двумерный массив(матрицу) размерности n, а также произвести некоторые вычисления.
Первое простое: перемножить элементы строки не содержащей отрицательных чисел.
Второе: сравнить суммы элементов диагоналей, параллельной главной.
вот с этим почему-то вышли траблы.
препод ничего внятно не объяснил, но согласился принять так.(я реализовал только подсчёт сумм выше главной диагонали.)
мне лишь интересен предполагаемый механизм реализации.
буду благодарен за любые идеи по поводу.

привожу текст программы.
после коммента //down идёт участок кода, который по идее должен реализовывать подсчёт сумм ниже диагонали. там криво работающий код...по сути не работающий.

Код:
#include <conio.h>
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>

void error(void)
{
   cout<<"\n idiot...";
   getch();
   exit(1);

}


main()
{

   int n;
   int ms;
   int max;
   int i,j,k,v,w;
   int ts;
   int x,y,p;
   int obn;
   int h;
   int x1,y1,p1;

   clrscr();

// head

   cout<<"Practical work #5.\nMade: Zabrodko Sergey.\nGroup: R-11d.\nVariant: 4\n\n";

// making array
  // size

   cout<<"Please enter n:",cin>>n;
   if (n<=0) error();

  // making matrix nxn

  int **a=new int *[n];
      for (i=0;i<n;i++)
      a[i]=new int[n];

    // making additional arrays

    int *m=new int[n];
    int *s=new int[2*n-2];
	 for (obn=0;obn<2*n-2;obn++)
	     s[obn]=0;

// input

   cout<<"Enter elements of the matrix a:"<<endl;

   for (j=0;j<n;j++)
      for (k=0;k<n;k++)
	 cout<<"a["<<j<<"]["<<k<<"] ",cin>>a[j][k];


// task #1

   ms=0;

   // check strings for negative elements

   for (j=0;j<n;j++)
      for (k=0;k<n;k++)
	 if (a[j][k]<0) break; else
	    if (k==n-1)
   // multiplication elements of the string and writting them into array b
	       {
		ms++;
		ts=1;
		for (w=0;w<=k;w++)
		   {
		   ts*=a[j][w];
		   m[ms-1]=ts;
		   }
	       }
		   else continue;

// task #2
   //if n=1 there are no diagonals

   if (n==1) cout<<"There no diagonals"<<endl<<endl; else
    {

   // counting sums for diagonals that parallel to the main one
   // up

    for (p=0;p<n-1;p++)
     {
      for (x=0,y=p;y<n-1;x++,y++)
	 {
	  s[p]+=a[x][y+1];
	 }
     }

   // down

    for (p=n-1;p<2*n-2;p++)
     {
      for (x=1,y=p-n+1;y<n;x++,y++)
	 {
	  if (x==n) break; else

	  s[p]+=a[x][y+1];
	 }
     }

   // max element

    max=0;
    for (p=0;p<n;p++)
       if (s[p]>max) max=s[p]; else continue;

    }

// output
  // array

   cout<<"Array:";
   for (j=0;j<n;j++)
      {
      cout<<endl<<endl;
      for (k=0;k<n;k++)
	 cout<<setw(4)<<a[j][k];
      }
   cout<<endl<<endl;

  // task #1.result

   if (ms==0) cout<<"Every string has a negative number."<<endl;
      else {
	   cout<<"There are "<<ms<<" strings without negative elements.\n"<<endl;
	   for (v=0;v<ms;v++)
	       cout<<m[v]<<endl;
	   }

  // task #2.result

      cout<<endl;
      if (n==1) cout<<"There no diagonals.\n"<<endl;
	else
	{
	 cout<<"Sums:";
	 for (h=0;h<2*n-2;h++)
	    cout<<" "<<s[h]<<" ";
	    cout<<endl<<"The max element: "<<max<<endl<<endl;
	}
// the end ^_^...

cout<<"Press any key to exit...";

getch();

return 0;

}
leny_like вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод двумерного массива Kocapb Общие вопросы C/C++ 4 11.10.2012 11:05
Обработка двумерного массива (Pascal) VertU Помощь студентам 9 27.06.2009 08:02
Delphi - обработка двумерного массива dm.os. Помощь студентам 1 30.09.2008 23:32
[Delphi] создание и обработка двумерного массива screep Помощь студентам 5 16.06.2008 19:27