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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2012, 07:36   #1
Monax7
 
Регистрация: 10.07.2011
Сообщений: 5
По умолчанию Написать программу на Си

Добрый день, задача состоит в следующую задачу.

Написать и протестировать функцию для решения след.задачу:
Квадратную матрицу m*n переписать в одномерный массив по след. правилу: сначала в вектор записать положительные элементы матрицы в соответствии с их положением по строкам матрицы, а затем отрицательные элементы в том же порядке.

Буду очень благодарен, помогите;-)
Monax7 вне форума Ответить с цитированием
Старый 26.10.2012, 10:32   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Что делать с нулевыми элементами?

Код:
1. Создать одномерный массив достаточного размера.
2. Организовать цикл по элементам матрицы в нужном порядке.
3. Внутри этого цикла переписать встречаемые положительные элементы матрицы в массив.
4. Повторить пункты 2 и 3 для отрицательных значений.
Какой из пунктов Вы не можете воплотить в коде?
Abstraction вне форума Ответить с цитированием
Старый 26.10.2012, 13:59   #3
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

Код:
#include "stdio.h"
#include "stdlib.h"
#include "memory.h"

int main(int argc, char* argv[])
{
  int m = 10;
  int n = 10;
  int** arr = new int*[m];
  int* pos = new int[m*n];
  int* negativ = new int[m*n];
  int sizeofpos = 0,sizeofneg = 0;
  for(int i = 0; i < m; i++)
  {
	arr[i] = new int[n];
	for(int j = 0; j < n; j++)
	  arr[i][j] = rand() % 18 - 9;
  }
  //можно все в предыдущем цикле сделать, но для наглядности
  for(int i = 0; i < m; i++)
  {
	for(int j = 0; j < n; j++)
	{
	  if(arr[i][j] >= 0)
		 pos[sizeofpos++] = arr[i][j];
	  else
		 negativ[sizeofneg++] = arr[i][j];
	}
  }
  memmove(pos + sizeofpos,negativ,sizeofneg*sizeof(negativ));
  delete [] negativ;
  for(int i = 0; i < m*n; i++)
	 printf("%d ",pos[i]);
  delete [] pos;
  for(int i = 0; i < m; i++)
	delete [] arr[i];
  delete [] arr;	
  return 0;
}
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 26.10.2012, 16:04   #4
Monax7
 
Регистрация: 10.07.2011
Сообщений: 5
По умолчанию

спасибо,помогли)
Monax7 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу на C++ Amerikano Помощь студентам 0 03.10.2012 18:51
написать программу на с++ Новичок 111 Помощь студентам 1 05.06.2012 12:32
Написать программу для перевода из 16-ричной системы счисления в 10-тичную, использовать процедурую(написать Delphi) BLADIMIR Помощь студентам 3 07.09.2011 16:35
написать программу hudson Паскаль, Turbo Pascal, PascalABC.NET 7 16.04.2010 16:58
Написать программу Марго Фриланс 6 15.10.2007 23:37