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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2010, 19:24   #1
fort-_-minor
46KSS
Пользователь
 
Аватар для fort-_-minor
 
Регистрация: 26.07.2010
Сообщений: 58
По умолчанию Cортировка матрицы

Здраствуйте! Задание такое: отсортировать по возрастанию 1 рядок и 2 столбец матрицы. Так понимаю сначала программа выполняет 1 действие потом второе. Пока пробовал писать код смотрел на 4 других фрагмента. Понимаю как все должно происходить, но в программной реализации к сожалению не приуспел Вот то что придумал
Код:
#include <iostream>
#include <stdafx.h>
#include <iostream>
#include <ctime>
int main (void)
{
    const size_t ROW=4;
    const size_t COLUMN=4;
    int MAS[ROW][COLUMN];
	srand (time (NULL));
    std::cout << "Start matrix:\n";
    for (size_t i=0; i<ROW; i++)
	{
        for (size_t j=0; j<COLUMN; j++) 
		{
            MAS[i][j]=rand()%50;
            std::cout << MAS[i][j] << " "; 
		}
        std::cout << std::endl; 
	}
    std::cout << std::endl;
	size_t;
	for (size_t i=0; i<ROW; i++)
	{
		for (size_t j=0; j>COLUMN; j--)
		{
			if (MAS[i][j-1]>MAS[i][j])
			{
				x=MAS[i][j-1]; MAS[i][j-1]=MAS[i][j]; MAS[i][j]=x;
			}
				std::cout << "REZULT: " << REZULT;
    std::cout << std::endl;
	return 0;
		}
	}
}
Тут программа только пытается отсортировать 1 строку просто похоже сортирует все подряд а как обратиться к самой 1 строке не знаю.. Дальше по заданию в самом коде ничего не писал... Помогите разобраться пожалуйста:rolleye
Чтоб не плодить темы есть еще 2 задача :
Определить сколько элементов матрицы в рядках с парными номерами превышают отношение максимального эемента к минимальному. Алгоритм думаю такой:
1. Программа проходит матрицу от 0 до n
2. Ищет максимальный и минимальный элемент и запоминает их.
3. Ищет отношение максимального элемента к минимальному и запоминает его.
4. Берет только 2 и 4 строки (если матрица размером 4х4) и все элементы из них сравнивает с отношением макс/мин.
5. Выводит результат работы программы на экран..
С кодом кроме рандомного заполнения матрицы элементами ничего не скажу(
Спасибо.

Последний раз редактировалось fort-_-minor; 04.08.2010 в 19:35.
fort-_-minor вне форума Ответить с цитированием
Старый 04.08.2010, 20:11   #2
fort-_-minor
46KSS
Пользователь
 
Аватар для fort-_-minor
 
Регистрация: 26.07.2010
Сообщений: 58
По умолчанию

на счет 1 задачи вот:
Код:
#include <stdafx.h>
#include <iostream>
#include <ctime>
 
int main ()
{
    const size_t ROW=4;
    const size_t COLUMN=4;
    int MAS[ROW][COLUMN];
        srand (time (NULL));
    std::cout << "Start matrix:\n";
    for (size_t i=0; i<ROW; i++)
        {
        for (size_t j=0; j<COLUMN; j++) 
                {
            MAS[i][j]=rand()%50;
            std::cout << MAS[i][j] <<' '; 
                }
        std::cout << std::endl; 
        }
    std::cout << std::endl;
    for (size_t i=0; i<COLUMN-1; i++)
        {
                for (size_t j=0;j<COLUMN-1-i; j++)
                {
                       if(MAS[0][j]>MAS[0][j+1])
                                           {
                                                   int temp=MAS[0][j];
                                                   MAS[0][j]=MAS[0][j+1];
                                                   MAS[0][j+1]=temp;
                                           }
                }
        }
        std::cout<<"After sort 1 row:\n";
        for(size_t i=0;i<ROW;++i)
        {
                for(size_t j=0;j<COLUMN;++j)
                {
                        std::cout<< MAS[i][j] <<' ';
                }
                std::cout<<std::endl;
        }
        std::cout<<"After sort 2 column:\n";
        for (size_t i=0; i<ROW-1; i++)
        {
                for (size_t j=0;j<ROW-1-i; j++)
        {
             if(MAS[j][1]>MAS[j+1][1])
                         {
                                 int temp=MAS[j][1];
                                 MAS[j][1]=MAS[j+1][1];
                                 MAS[j+1][1]=temp;
                         }
                }
        }
        for(size_t i=0;i<ROW;++i)
        {
                for(size_t j=0;j<COLUMN;++j)
                {
                        std::cout<< MAS[i][j] <<' ';
                }
                std::cout<<std::endl;
        }
        return 0;
}
а что на счет 2 хз пока...
fort-_-minor вне форума Ответить с цитированием
Старый 04.08.2010, 20:11   #3
sever-42
Пользователь
 
Регистрация: 22.04.2010
Сообщений: 96
По умолчанию

Код:
#include <iostream>
#include <stdafx.h>
#include <ctime>
int main (void)
{
    const size_t ROW=4;
    const size_t COLUMN=4;
    int MAS[ROW][COLUMN];
	srand (time (NULL));
    std::cout << "Start matrix:\n";
    for (size_t i=0; i<ROW; i++)
	{
        for (size_t j=0; j<COLUMN; j++)
		{
            MAS[i][j]=rand()%50;
            std::cout << MAS[i][j] << " ";
		}
        std::cout << std::endl;
	}
    std::cout << std::endl;
    int x;
    for (size_t i = 0; i < ROW; ++i)
    	for (size_t j = 0; j < COLUMN; ++j) {
    		for (size_t k = 0; k < COLUMN; ++k)
    			if (MAS[i][j] < MAS[i][k]) {
    				x=MAS[i][k]; MAS[i][k]=MAS[i][j]; MAS[i][j]=x;
    			}
    }
    std::cout << "RESULT:" << std::endl;
    for (size_t i = 0; i < ROW; ++i) {
    	for (size_t j = 0; j < COLUMN; ++j)
    		std::cout << MAS[i][j] << ' ';
    std::cout << std::endl;
    }
    return 0;
}
Ко второй, попробуй так: найди максимальный элемент, минимальный элемент, их отношение и при в обходе матрицы, если парные элементы меньше отношения, счетчик++.
include <Qt>

Последний раз редактировалось sever-42; 04.08.2010 в 20:22.
sever-42 вне форума Ответить с цитированием
Старый 05.08.2010, 13:45   #4
fort-_-minor
46KSS
Пользователь
 
Аватар для fort-_-minor
 
Регистрация: 26.07.2010
Сообщений: 58
По умолчанию

Спасибо, 2 тоже работает:
Код:
#include <iostream>
#include <ctime>
 
int main()
{
        srand(time(NULL));
        const int ROW=4;
        const int COLUMN=4;
        int Arr[ROW][COLUMN];
        for(int i=0;i<ROW;++i)
        {
                for(int j=0;j<COLUMN;++j)
                {
                        Arr[i][j]=1+rand()%50;
                }
        }
        int max=Arr[ROW-1][COLUMN-1];
        int min=Arr[0][0];
        for(int i=0;i<ROW;++i)
        {
                for(int j=0;j<COLUMN;++j)
                        std::cout<<Arr[i][j]<<' ';
                std::cout<<std::endl;
        }
        for(int i=0;i<ROW;++i)
        {
                for(int j=0;j<COLUMN;++j)
                {
                        if(Arr[i][j]>max)
                                max=Arr[i][j];
                        if(Arr[i][j]<min)
                                min=Arr[i][j];
                }
        }
        std::cout<< max <<' ' << min <<'\n';
        int fract=max/min;
        int cnt=0;
        std::cout<<fract<<'\n';
        for(int i=0;i<ROW;++i)
        {
                for(int j=0;j<COLUMN;++j)
                {
                        if(((i+1)%2)==0)
                        {
                                if(Arr[i][j]>fract)
                                        cnt++;
                        }
                }
        }
        std::cout<<cnt<<'\n';
        return 0;
}
fort-_-minor вне форума Ответить с цитированием
Старый 05.08.2010, 13:47   #5
fort-_-minor
46KSS
Пользователь
 
Аватар для fort-_-minor
 
Регистрация: 26.07.2010
Сообщений: 58
По умолчанию

Цитата:
Сообщение от sever-42 Посмотреть сообщение
Ко второй, попробуй так: найди максимальный элемент, минимальный элемент, их отношение и при в обходе матрицы, если парные элементы меньше отношения, счетчик++.
Спасибо, но вроде я же писал алгоритм чуть выше.. Уже разобрался спс
fort-_-minor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ Cортировка savva Помощь студентам 3 12.07.2010 04:05
Cортировка C++ Sonny01 Помощь студентам 0 08.04.2010 20:38
Cортировка по алфавиту со стеками skiffter Помощь студентам 0 30.03.2010 21:11
Cортировка типизированного файла по 3м признакам Dremgor Помощь студентам 3 05.06.2009 14:10
Cортировка односвязного списка alesfoss Общие вопросы C/C++ 3 30.03.2009 19:46