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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2007, 09:04   #1
Aero
 
Регистрация: 03.10.2007
Сообщений: 3
Сообщение Задача с вводом матрицы на С

Задачка на С
Нужно ввести матрицу чисел (размерность определяется пользователем)
затем найти в ней самое большое число и переписать матрицу без строки и столбца где содержится это число.
Например,если матрица имеет вид
2 5 10
9 100 1
2 7 9
То,так как 100 самое большое число,матрицу нужно вывести такую:
2 10
2 9

Помогите решить плиз!
Aero вне форума Ответить с цитированием
Старый 28.10.2007, 14:50   #2
studenth
Форумчанин
 
Регистрация: 10.09.2007
Сообщений: 105
По умолчанию

Цитата:
Сообщение от Aero Посмотреть сообщение
Помогите решить плиз!
Помогаем!
Я накидал несложный пример, думаю, этого хватит.
Матрица берется из txt файла, первые две строки - ширина и высота матрицы. Вот собственно сам код, я проверил, все работает...

содержимое моего txt:
//----------------------------------------
Код:
5
6
1 2 3 4 5
1 2 3 4 5 
6 7 8 9 10
3 2 100 5 3
5 5 5 5 5
6 5 4 3 2
//----------------------------------------
А вот и сам код:
Код:
//-------------------------------------------------------------------------
#include <windows.h>
#include <iostream>
#include <fstream>
using namespace std;
//-------------------------------------------------------------------------
char Filename[MAX_PATH] = "matrix.txt";
int sizeX = 0, sizeY = 0;
int main(int argc, char* argv[])
{
        SetConsoleOutputCP(1251);
        cout<<"Получаем из файла матрицу\n";
        cout<<"Первая и вторая строка файла содержат\n";
        cout<<"размер матрицы по X, по Y\n";
        ifstream Input("matrix.txt");
        if(!Input.is_open())
        {
                cout<<"\n\nОшибка открытия файла!\n\n";
                system("pause");
                return 1;
        }
        Input>>sizeX>>sizeY;
        //считываем элементы матрицы в последовательность
        //4-х байтовых значений, размещенных в куче
        int *matrix = new int[sizeX*sizeY];
        for(int i=0; i<sizeX*sizeY; i++) Input>>matrix[i];
        Input.close();
        //после этого мы имеем в памяти такую ситуацию
        //от *matrix до *matrix+sizeX - расположена первая строка
        //далее от *matrix + sizeX - до *matrix + sizeX*2 - вторая строка
        //и.т.д.
        int buffer = matrix[0];                 //наибольший элемент
        int position = 0;                       //позиция
        int line = 1;                           //строка в которой находится
                                                //наибольший элемент матрицы
        int IndexLine = 1;                      //текущая строка
        int step = 0;                           //для вычисления строк
        for(int i=0; i<sizeX*sizeY; i++)
        {
        step++;
        if(step == sizeX){line++; step = 0;}

                if(buffer<matrix[i])
                {
                        buffer = matrix[i];
                        position = line;
                }
        }

        cout<<"\nБыла введена матрица:\n";
        cout<<"Размерность "<<sizeX<<" x "<<sizeY<<endl<<endl;
        //производим вывод матрицы в консоль
        //НЕОБХОДИМО ВОЗДЕРЖАТЬСЯ ОТ ВЫВОДА СТРОКИ position
        //тут я буду использовать ранее объявленные переменные,
        //которые уже не нужны, и содержат ненужные данные
        line = 0;
        buffer = 1;
        bool need_cout = true;
        for(int i=0; i<sizeX*sizeY; i++)
        {

              if(line == sizeX)
              {
                        cout<<"\n";
                        line = 0;
                        buffer++;
              }

              if(buffer != position)
              cout<<matrix[i]<<" ";

              line++;
        }

        cout<<"\n\n\n\n";
        system("pause");
        return 0;
}
//-------------------------------------------------------------------------
Пиши, если что...
буду рад помоч!
мы сиПлюсПлюстЫ должны держаться вместе....
Бог сделал людей разными, а генерал Кольт уравнял шансы
studenth вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на матрицы щдуп Паскаль, Turbo Pascal, PascalABC.NET 3 26.06.2008 08:52
Задача на матрицы и массивы kaliha Помощь студентам 3 17.01.2008 23:46
Задача на матрицы Integral Паскаль, Turbo Pascal, PascalABC.NET 1 12.12.2007 13:32
Задача про седловую точку матрицы (С++) Fuckin_Princess Помощь студентам 3 28.11.2007 16:39