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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2012, 17:16   #1
Immoralist
Подтвердите свой е-майл
 
Регистрация: 14.04.2012
Сообщений: 38
Вопрос СИ, матрица, поменять max и min элементы во всех строках...

Дана матрица размера M x N. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке.

PHP код:
#include "stdafx.h"
#include <stdlib.h>
#include <time.h>
#include <stdio.h>

void main()
{
    const 
long m=7n=5;
    
long a[m][n], ijminmaxxlr;
    
srand(time(0));
    
//формируем и выводим матрицу
    
for (i=0i<mi++)
    {
        
printf("\n\n");
        for (
j=0j<nj++) 
           {
            
a[i][j]=25+rand()%56;
            
printf("%d\t",a[i][j]);
           }
    }
    
//ищем min и max, меняем местами
    
for (i=0i<mi++)
    {
       
min=999999;
       
max=0;
       for (
j=0j<nj++) 
       {
        if (
j==n) {x=a[i][l]; a[i][l]=a[i][r]; a[i][r]=x;}
        if (
min>a[i][j]) {min=a[i][j]; l=j;}
        if (
max<a[i][j]) {max=a[i][j]; r=j;}
       }
    }
    
printf("\n\n");
    
//выводим то что получилось
    
for (i=0i<mi++)
    {
        
printf("\n\n");
        for (
j=0j<nj++) 
           {
            
printf("%d\t",a[i][j]);
           }
    }
    
printf("\n\n");

Выводятся две абсолютно одинаковые матрицы. В чем проблема? Ошибок в алгоритме не вижу...помогите...
Immoralist вне форума Ответить с цитированием
Старый 24.04.2012, 17:25   #2
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

А если так?

Код:
//ищем min и max, меняем местами 
    for (i=0; i<m; i++) 
    { 
       min=999999; 
       max=0; 
       for (j=0; j<n; j++)  
	   {
		if (a[i][j]<min) {min=a[i][j]; l=j;}
		if (a[i][j]>max) {max=a[i][j]; r=j;}
	   }
	   a[i][l] = max;
	   a[i][r] = min;
	}
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 24.04.2012, 17:36   #3
Immoralist
Подтвердите свой е-майл
 
Регистрация: 14.04.2012
Сообщений: 38
По умолчанию

Спасибо, работает...
Immoralist вне форума Ответить с цитированием
Старый 24.04.2012, 17:42   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Сообщение от Helloween Посмотреть сообщение
А если так?

Код:
//ищем min и max, меняем местами 
    for (i=0; i<m; i++) 
    { 
       min=999999; 
       max=0;  // и что это?
       for (j=0; j<n; j++)  
	   {
		if (a[i][j]<min) {min=a[i][j]; l=j;}
		if (a[i][j]>max) {max=a[i][j]; r=j;}
	   }
	   a[i][l] = max;
	   a[i][r] = min;
	}
так не проще?
Код:
for (i = 0; i < n; i++)
{
  min = 0;
  max = 0;
  for (j = 1; j < m; j++)
  {
     if (a[i][j] < a[i][min]) min = j;
     if (a[i][j] > a[i][max]) max = j;
  }
  if (max != min)
  {
    a[i][max] = a[i][max]^a[i][min];
    a[i][min] = a[i][max]^a[i][min];
    a[i][max] = a[i][max]^a[i][min];
  }
}
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 24.04.2012, 17:50   #5
Helloween
Форумчанин
 
Регистрация: 24.04.2012
Сообщений: 300
По умолчанию

Я исправил текущий вариант как бы =) Вообще по-нормальному нужно брать max и min - первым элементом массива. Понятно что я сам так не стал бы писать, но так хоть человек понял в чем была его ошибка.
Помог? Оставляем отзыв =)
Helloween вне форума Ответить с цитированием
Старый 17.09.2014, 13:43   #6
Эля856
Новичок
Джуниор
 
Регистрация: 17.09.2014
Сообщений: 1
По умолчанию Дана матрица размером М x N. Преобразовать матрицу, поменяв местами минимальные и максимальные элемент в каждой строке

Я сделала вот так но он почему то выводит матрицу в одну строчку... Помогите :conf used:


{ // Дана матрица размером М x N. Преобразовать матрицу, поменяв местами минимальные и максимальные элемент в каждой строке.

class Program
{
static void Main(string[] args)
{
int r=(0), min, max, n=(4), m=(4), l=(0);
int M = 4; // Число строк
int N = 4; // Число столбцов
int[,] Z = {{1,3,8,0},
{4,6,2,5},
{3,7,0,6},
{3,9,11,2}};
int i, j;
Console.WriteLine("Исходная матрица");
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
Console.Write(Z[i, j] + "\t");
Console.WriteLine();
}
//ищем min и max, меняем местами
for (i = 0; i < m; i++)
{
min = 999999;
max = 0; // и что это?
for (j = 0; j < n; j++)
{
if (Z[i, j] < min) { min = Z[i, j]; l = j; }
if (Z[i, j] > max) { max = Z[i, j]; r = j; }
}
Z[i, l] = max;
Z[i, r] = min;
// Вывод преобразованной матрицы
Console.WriteLine("Преобразованная матрица");
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
Console.Write(Z[i, j] + "\t");
}

}
Console.ReadKey();
}
}
}

Последний раз редактировалось Эля856; 17.09.2014 в 13:57.
Эля856 вне форума Ответить с цитированием
Старый 17.09.2014, 14:39   #7
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Нужно вставить Console.WriteLine(); так же, как и в первом цикле
Son Of Pain вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив(найти max и min и поменять их местами в массиве) Monry Паскаль, Turbo Pascal, PascalABC.NET 1 09.04.2012 18:28
Матрица Min-Max и Max-Min boog Помощь студентам 3 23.12.2010 13:19
поменять min на max бургер Паскаль, Turbo Pascal, PascalABC.NET 17 27.04.2010 19:33
Как поменять местами в массиве max и min элемент. Stager Общие вопросы C/C++ 2 13.01.2009 02:03
Как найти max и min элементы матрицы????? ЕвгениуS Помощь студентам 19 02.03.2008 19:47