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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2009, 20:35   #1
cshero
 
Регистрация: 29.11.2009
Сообщений: 7
Радость Задача на двумерный массив[Visual C++]

Здравствуйте. Помогите решить задачу.

Для заданной матрицы размером 8*8 найти такие k при которых k-я строка матрицы совпадает с k-м столбцом.
Найти сумму элементов в тех строках которые содержат хотя бы один отрицательный элемент
cshero вне форума Ответить с цитированием
Старый 08.12.2009, 16:05   #2
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 525
По умолчанию

и что не получается?

Цитата:
Найти сумму элементов в тех строках которые содержат хотя бы один отрицательный элемент
можно например вот так сделать

Код:
#include <iostream>
#include <ctime>
#include <malloc.h>
#include <stdlib.h>

using namespace std;

int main()
{
	srand((unsigned)time(NULL));

	const int n = 8 ;
	const int m = 8 ;
	int arr[n][m] ;
	
	for (int i=0;i<n;++i)	
		for (int j=0;j<m;++j)
			arr[i][j] = -5+rand()%40 ;

	int k = 0;
	int *nArr = NULL;
	bool strCheck = false;

	for(int i=n-1; i>=0; --i)
	{
		for(int j=m-1; j>=0; --j)
		{
			cout << arr[i][j] << "\t" ;

			if(arr[i][j] < 0 && strCheck==false ) 
			{
				strCheck = true; 

				if(nArr == NULL) 
					nArr = (int*)calloc( 1, sizeof(*nArr) ) ;
				else 
				{
					if ( (nArr = (int*)realloc(nArr, _msize(nArr) + sizeof(*nArr) ))==NULL)
					{free(nArr); exit(1); }

					nArr[k] = 0 ;
				}

				for(int g=m-1; g>=0; --g)
					nArr[k] += arr[i][g] ; 
				++k;	
			}
		}
		strCheck = false;
		cout << endl ;
	}

	cout << endl << endl;

	if (nArr!=NULL)
	{
		cout << "summa elementov v strokax: " << endl;
		for (int i=0;i<k; ++i)
			cout << nArr[i] << "\t" ;
	}

	free(nArr);
	nArr = NULL ;

	cout << endl ;
	cin.get();
}
но преподу это может не понравится

Последний раз редактировалось Stilet; 08.12.2009 в 16:29.
m0nax вне форума Ответить с цитированием
Старый 08.12.2009, 16:29   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но преподу это может не понравится
Да уж... Препод подумает что перед ним Билл Гейтс и отомстит ему колом за Виндовс...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.12.2009, 19:35   #4
cshero
 
Регистрация: 29.11.2009
Сообщений: 7
По умолчанию

Ого. Спасибо. Только проще никак нельзя? А то с моими познаниями в программировании(а их просто нет, не моя специальность), сдать ЭТО будет нереально. Спасибо еще раз!

к тому же ваш код не работает

Цитата:
к тому же ваш код не работает
к тому же ваш код не работает

Народ хелп!.!!

Последний раз редактировалось Stilet; 11.12.2009 в 08:39.
cshero вне форума Ответить с цитированием
Старый 10.12.2009, 21:33   #5
osichev
Форумчанин
 
Регистрация: 18.05.2009
Сообщений: 180
По умолчанию

к строка и к столбец совпадают


Код:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define max_x  10
#define max_y  7
void gen(int k,int kk,int a,int b,int x[max_x][max_y]);
void out(int k,int kk,int x[max_x][max_y]);
void ou (int k,int kk,int x[max_x][max_y]);
void main() {
int x[max_x][max_y];
int n,m;
int aa,bb; 

printf("Введите кол-во элементов массива n m (n<=10,m<=7): ");
scanf("%d%d", &n,&m);      

printf("Введите промежуток: ");
scanf("%d%d",&aa,&bb);
 gen(n,m,aa,bb,x);
 out(n,m,x);   
 printf("\nk-строка и k-столбец совпадают: \n");
 ou(n,m,x);
}
void gen(int k,int kk,int a,int b,int x[max_x][max_y]) {
int i,j;
srand(time(NULL)*1000);
for(i=0;i<k;i++)
for(j=0;j<kk;j++)
x[i][j]=(rand()*1.0/(RAND_MAX)*(b-a)+a);
}
void out (int k,int kk,int x[max_x][max_y]) {
int i,j;
for (i=0;i<k;i++){
for(j=0;j<kk;j++)
printf("%4d", x[i][j]);
printf("\n");
}

   }   
   void ou (int k,int kk,int x[max_x][max_y]){
   int i,j;
   for(i=0;i<k;i++){
    for(j=kk-1;j>=0;j--)
    if(i==j){
    printf("%d\t",x[i][j]); }
    }
    }
Программист без пива, как спирт без пробки - выдохнется___________-

Последний раз редактировалось Stilet; 11.12.2009 в 08:39.
osichev вне форума Ответить с цитированием
Старый 11.12.2009, 09:18   #6
cshero
 
Регистрация: 29.11.2009
Сообщений: 7
По умолчанию

Спасибо Большое. Только правильно ли,
#define max_x 10
#define max_y 7

ведь матрица 8*8?
И не совсем ясно как вычисляется сумма
Ещё раз спасибо

Последний раз редактировалось cshero; 11.12.2009 в 09:28.
cshero вне форума Ответить с цитированием
Старый 11.12.2009, 21:56   #7
cshero
 
Регистрация: 29.11.2009
Сообщений: 7
По умолчанию

ВВерх!!!!!!!
cshero вне форума Ответить с цитированием
Старый 11.12.2009, 22:09   #8
osichev
Форумчанин
 
Регистрация: 18.05.2009
Сообщений: 180
По умолчанию

здесь сумма не вычисляется.
Программист без пива, как спирт без пробки - выдохнется___________-
osichev вне форума Ответить с цитированием
Старый 11.12.2009, 23:00   #9
cshero
 
Регистрация: 29.11.2009
Сообщений: 7
По умолчанию

А не подскажете как вычислить?
cshero вне форума Ответить с цитированием
Старый 11.12.2009, 23:16   #10
osichev
Форумчанин
 
Регистрация: 18.05.2009
Сообщений: 180
По умолчанию

int suma(int k,int kk,int mm,int x[max_x][max_y]) {
int i,j,sum=0;
for(i=0;i<k;i++)
for(j=0;j<kk;j++)
if(i==mm-0)
sum+=x[i][j];
return sum;
}



вот функция,которая вычисляет сумму всех строк!
может додумаешься сам,как только с отрицательными
Программист без пива, как спирт без пробки - выдохнется___________-
osichev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на двумерный массив. Паскаль Nubas Помощь студентам 5 12.10.2009 22:40
Задача на двумерный массив DELPHI 7 Max0306 Помощь студентам 1 22.09.2009 11:09
Двумерный массив(1 задача) MyaSnIKs Помощь студентам 4 28.03.2009 15:32
Задача на двумерный массив maliyusha Паскаль, Turbo Pascal, PascalABC.NET 5 30.12.2008 07:42