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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2011, 20:04   #1
zoom711
 
Регистрация: 24.02.2011
Сообщений: 9
По умолчанию Работа с массивами, в которых матрица

Построить матрицу такого вида:


Чистый Си
zoom711 вне форума Ответить с цитированием
Старый 23.03.2011, 21:20   #2
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Ни наработок, ни "пожалуйста"... Ну, построил. Что дальше?
Vago вне форума Ответить с цитированием
Старый 23.03.2011, 21:42   #3
zoom711
 
Регистрация: 24.02.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
Ни наработок, ни "пожалуйста"... Ну, построил. Что дальше?
Дай код, просто не знаю как тут благодарить, разве что ++ в репу))

Заранее спасибо.
zoom711 вне форума Ответить с цитированием
Старый 23.03.2011, 21:48   #4
zoom711
 
Регистрация: 24.02.2011
Сообщений: 9
По умолчанию

Код начал делать, но не смог найти алгоритма:

Код:
int mass2[50][50],x,y,z;
		printf("Введiть pозмiрнiть матрицi XxY через кому\n");
		scanf("%d,%d",&x,&y);
		mass2[x][y]=0;
		
		d=1;
		for (i=1;i<=5;i++);
		{
			for(j=d;j<=y-d+1;j++)
			mass2[i][j]=1;
			d=d+1;
		}
		/*for (j=1;j<=y;j++)
			if (j>i)		
			mass2[x][y]=0;
			else 
			mass2[x][y]=1;*/
		
			for (i=1; i<=x; i++){
						printf("\n%d ",x);
				for (j=1; j<=y; j++){
					
					printf("%d\t",mass2[i][j]);}}
zoom711 вне форума Ответить с цитированием
Старый 23.03.2011, 22:34   #5
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Код:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main() {

   int   col, colLeft, colRight, 
         row, rowBottom, rowTop ,
         nRows, nCols ;
   unsigned char* a ;

   printf( "Number of rows ? " );
   scanf( "%d", &nRows ) ;
   printf( "Number of columns ? " );
   scanf( "%d", &nCols ) ;

   a = malloc( nRows * nCols ) ;
   memset( a, '\0', nRows * nCols ) ;

   colLeft = 0 ;
   colRight = nCols - 1;
   rowTop = 0 ;
   rowBottom = nRows - 1 ;
   while ( rowTop <= rowBottom ) {
      for ( col = colLeft; col <= colRight; col++ ) {
         *(a + rowTop*nCols + col) = 1 ;
         *(a + rowBottom*nCols + col) = 1 ;
      }
      ++rowTop ;
      --rowBottom ;
      ++colLeft ;
      --colRight ;
   }

   for ( row = 0; row < nRows; row++ ) {
      for ( col = 0; col < nCols; col++ )
         printf("%2d", *(a + row*nCols + col ) ) ;
      printf( "\n" ) ;
   }

   free( a ) ;

   return 0 ;

}
Vago вне форума Ответить с цитированием
Старый 23.03.2011, 22:49   #6
zoom711
 
Регистрация: 24.02.2011
Сообщений: 9
По умолчанию

Vago, чем создавали код, у меня ошибка при компиляции:
Код:
1>c:\users\zoom711\documents\visual studio 2008\projects\111\111\111.cpp(20) : error C2440: =: невозможно преобразовать 'void *' в 'unsigned char *'
1>        Для преобразования 'void*' к указателю на тип, не являющемуся 'void', требуется явное приведение
zoom711 вне форума Ответить с цитированием
Старый 23.03.2011, 22:56   #7
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Ну так сделайте это самое явное приведение:
Код:
   a = (unsigned char*) malloc( nRows * nCols ) ;
...
В 6-й Студии создавалось.

Added 21:09 CET
Занятно, что Студия 2008 EE никакого приведения не требует. Только файл должен быть .c, а не .cpp .

Последний раз редактировалось Vago; 23.03.2011 в 23:08.
Vago вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с массивами (pascal) Квадратная матрица vova287 Помощь студентам 9 08.11.2010 22:29
Работа с массивами driver05 Паскаль, Turbo Pascal, PascalABC.NET 2 24.05.2010 17:27
работа с массивами Андрей.12 Помощь студентам 0 19.10.2009 14:18
Дана прямоугольная матрица. Определить количество столбцов, произведение элементов которых меньше 5 Sweeney Паскаль, Turbo Pascal, PascalABC.NET 0 10.12.2008 01:41