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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2008, 15:32   #1
Boevik
 
Аватар для Boevik
 
Регистрация: 14.09.2008
Сообщений: 7
По умолчанию Двумерные массивы

Помогите программу написать по двумерным массивам:
"задана целочисленная квадратная матрица A размерностью N:
поменять местами элементы матрицы ,расположенные на одной стороке и пренадлежащие главной и побочной диагонали"
Boevik вне форума Ответить с цитированием
Старый 30.09.2008, 16:26   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Код:
const
  N = 6;
var
  i, j: integer;
  mas: array[1..N, 1..N] of integer;
begin
  randomize;
  for i := 1 to N do
  begin
    for j := 1 to N do
    begin
      mas[i, j] := random(10);
      write(mas[i, j]:3)
    end;
    writeln
  end;      
  for i := 1 to N do
  begin
    j := mas[i, i];
    mas[i, i] := mas[i, N-i+1];
    mas[i, N-i+1] := j
  end;
  writeln;
  for i := 1 to N do
  begin
    for j := 1 to N do write(mas[i, j]:3);
    writeln
  end;
  readln
end.
eoln вне форума Ответить с цитированием
Старый 22.10.2008, 16:52   #3
Boevik
 
Аватар для Boevik
 
Регистрация: 14.09.2008
Сообщений: 7
По умолчанию

а как эту же задачу решить только с использованием функции?
Boevik вне форума Ответить с цитированием
Старый 22.10.2008, 19:54   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Долго же ты думал. Вот это место переделай в процедуру, функция здесь не пойдет, ибо нужен не результат, а действие.
[CODE begin
j := mas[i, i];
mas[i, i] := mas[i, N-i+1];
mas[i, N-i+1] := j
end;
][/CODE]
puporev вне форума Ответить с цитированием
Старый 01.05.2009, 23:06   #5
Нataша
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 10
По умолчанию

Помогите пожалуйста решить задачу
В целочисленном массиве A[10][10] поменять местами элементы главной и побочной диагонали, сохраняя номер строки
Нataша вне форума Ответить с цитированием
Старый 01.05.2009, 23:14   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Нataша Прочитайте правила и не пишите в чужие темы.
Основная часть:
Код:
for i:=1 to N do
 begin
 tmp := matr[i,i];
 matr[i,i] := matr[i,N-i+1];
 matr[i,N-i+1] := tmp;
 end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.05.2009, 09:39   #7
MAKEDON
The First Person!
Форумчанин
 
Аватар для MAKEDON
 
Регистрация: 07.08.2007
Сообщений: 228
По умолчанию

Цитата:
Сообщение от Нataша Посмотреть сообщение
Помогите пожалуйста решить задачу
В целочисленном массиве A[10][10] поменять местами элементы главной и побочной диагонали, сохраняя номер строки
Это как-то так?

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

int main(){
	int a[10][10],b[10][10],i,j;
	srand(time(0));
	for(i=0;i<10;i++){
		for(j=0;j<10;j++){
			a[i][j]=rand()%101;
		}
	}
	for(i=0;i<10;i++){
		for(j=0;j<10;j++){
			printf("%6d",a[i][j]);
		}
		printf("\n");
	}
	for(i=0;i<10;i++){
		for(j=0;j<10;j++){
			b[i][j]=a[i][j];
		}
	}
	/*Вот это основная часть замены. Остальное просто подготовка и вывод на экран.*/
	/*--------------------------------*/
	for(i=0;i<10;i++){
		b[i][i]=a[i][9-i];
	}
	for(i=0;i<10;i++){
		b[i][9-i]=a[i][i];
	}
	/*--------------------------------*/
	printf("\n");
	for(i=0;i<10;i++){
		for(j=0;j<10;j++){
			printf("%6d",b[i][j]);
		}
		printf("\n");
	}
	return 0;
}
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.
MAKEDON вне форума Ответить с цитированием
Старый 17.05.2009, 19:03   #8
depo111
Пользователь
 
Регистрация: 13.04.2009
Сообщений: 10
По умолчанию

Помите доделать програмку дана матрица размера А(5*5) нужно заменить в строке элементы нулями которые лежат левее наибольшего(максимального) в строке к примеру вводим первую строку(на примере первой строки) 1 3 7 2 7
а результат должен быть такой 0 0 7 2 7 я так думаю тут нужно найти минимальный индекс j - столбца и присвоить ему max но почемуто не получается
#include <stdio.h>
#include <conio.h>
#define N 5
void main()
{clrscr();
int A[N][N],i,j,max,m,h,l=0;
FILE *fp;
fp=fopen("lab3.txt", "w");
for (i=0;i<N;i++)
for (j=0;j<N;j++)
{
printf ("Vvedite A[%d][%d]",i+1,j+1);
scanf ("%d", &A[i][j]);
}
clrscr();
printf ("icxodnaya matrica\n");
fprintf (fp,"icxodnaya matrica\n");
for (i=0;i<N;i++)
{
for (j=0;j<N;j++)
{
printf ("%d ",A[i][j]);
fprintf(fp,"%5d", A[i][j]);
}

printf("\n");
fprintf(fp,"\n");
}
printf("\n");
for (i=0;i<N;i++)
{ max=A[i][0];
for (j=0;j<N;j++)
if (A[i][j]>=max) max=A[i][j];
printf("Max %d ctroki %d\n",i+1,max);
fprintf(fp,"Max %d ctroki %d\n",i+1,max);
for (h=0;h<N;h++)
if (A[i][h]==max) l=h;
for (m=0;m<l;m++)
if (A[i][m]!=max) A[i][m]=0;
}
printf("\n");
printf ("Rezultat raboti programmi\n");
fprintf (fp,"Rezultat raboti programmi\n");
for (i=0;i<N;i++)
{
for (j=0;j<N;j++)
{ printf ("%d ",A[i][j]);
fprintf (fp,"%5d ",A[i][j]);
}
printf("\n");
fprintf(fp,"\n");
}
fclose(fp);
getch();
}
depo111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные массивы katia230990 Помощь студентам 2 10.05.2008 00:58
Двумерные массивы Lioness Помощь студентам 2 06.01.2008 12:39
Двумерные массивы Nata!!!@ Помощь студентам 15 05.12.2007 16:15