Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
arsenij726
2 / 2 / 0
Регистрация: 16.08.2013
Сообщений: 23
#1

дана матрица a(n/m) которая вводиться из файла - C++

04.09.2013, 19:01. Просмотров 769. Ответов 3
Метки нет (Все метки)

дана матрица a(n/m) которая вводиться из файла и число k вводиться с клавиатуры. В k-ой строке найти максимальный элемент.В том столбце где этот элемент находиться найти сумму модулей элементов. Каждый этап решать при помощи программы работающей с вектором ( На С++)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2013, 19:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос дана матрица a(n/m) которая вводиться из файла (C++):

дана квадратичная матрица z[n][n]. составить программу, которая если матрица симметричная(транспонированная матрица равна исходной), сделает ее не сим - C++
помогите пожалуйста. условие: дана квадратичная матрица z. составить программу, которая если матрица симметричная(транспонированная...

Дана квадратная матрица А порядка n. Составить программу которая все элементы расположенные на главных и побочных диагоналях заменяет на минимальное. - C++
Дана квадратная матрица А порядка n. Составить программу которая все элементы расположенные на главной и побочных диагоналях заменяет на...

Дана прямоугольная матрица А размером N × M. Составить программу, которая преобразует матрицу следующим образом: поэлементно вычитает первый столбец - C++
Дана прямоугольная матрица А размером N × M. Составить программу, которая преобразует матрицу следующим образом: поэлементно вычитает...

Всю голову сломала этими матрицами! Дана матрица.Написать программу, которая упорядочивает элементы каждой строки этой матрицы по возрастанию - C++
Дана матрица А(nxn). Написать программу, которая упорядочивает элементы каждой строки этой матрицы по возрастанию. помогите пожалуйста,...

дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа. Строка должна вводиться с клавиатуры. - C++
Будьте добры,помогите с решением задачи: дана строка, изображающая целое положительное число. Вывести сумму цифр этого числа. Строка...

Нужно что бы если в текстбокс не вводиться текст, то срабатывала исключительная ситуация, которая просила бы юзера заполнить его. - C++
Нужно что бы если в текстбокс не вводиться текст, то срабатывала исключительная ситуация, которая просила бы юзера заполнить его. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Oman
4 / 4 / 0
Регистрация: 07.11.2010
Сообщений: 29
04.09.2013, 20:26 #2
Цитата Сообщение от arsenij726 Посмотреть сообщение
дана матрица a(n/m) которая вводиться из файла и число k вводиться с клавиатуры. В k-ой строке найти максимальный элемент.В том столбце где этот элемент находиться найти сумму модулей элементов. Каждый этап решать при помощи программы работающей с вектором ( На С++)
Это задание такое дали тебе? n/m - любыми могут быть? размер матрицы.
0
arsenij726
2 / 2 / 0
Регистрация: 16.08.2013
Сообщений: 23
04.09.2013, 20:54  [ТС] #3
да мне дали задание с n и m, но препод сказал , что не меньше 4х4
0
Oman
4 / 4 / 0
Регистрация: 07.11.2010
Сообщений: 29
05.09.2013, 17:46 #4
Цитата Сообщение от arsenij726 Посмотреть сообщение
да мне дали задание с n и m, но препод сказал , что не меньше 4х4
вот на что я способен:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <iostream>
using namespace std;
#include <fstream>
#include <vector>
 
int main()
{
    system("chcp 1251 > nul");
 
    vector<int> v;              // создаем вектор
    vector<int>::iterator inter;    // итератор для вектора
    char ch[400];               // строка, в которую буден введен текст из файла
    int x = 0,y = 0;            // количество строк и колнок
 
    ifstream file;              
    file.open("matrix.txt");        // открываем сам файл
    cout << "\nStart read file...\n";
 
    file.seekg(0,ios::end);
    int filesize = file.tellg();    // узнаем размер
 
    cout << "\nFile size: " << filesize << endl << "File:\n";
 
     file.seekg(0);
    file.read(ch,filesize);
    ch[filesize-4] = '\0';  // почему -4 хз, но на этом месте кончается файл, но 
                        //продолжает читать его дальше вручную ствлю знак конца
 
    int numb;               // переменная, в которую складываются числа
    numb = atoi(ch);        // с помощью atoi переделываем из строки в цифру
    v.push_back(numb);      // кладем получившуюся цифру в вектор
    y++;                    // увеличиваем счетчик цифр (y пока что считает общие кол-во чисел)
    for (int i = 0; ch[i] != '\0'; i++) // цикл заполнения вектора.
    {   
        if (ch[i] == ' ' || ch[i] == 10)    // если считан пробел ии переход на след строку
        {                           // значит за ним следует цифра
            numb = atoi(ch+i);          // считываем ее 
            v.push_back(numb);          // и записываем
            y++;                        // +1 к счетчику
        }
        if (ch[i] == 10)                // если новая строка, то
            x++;                        // +1 к числу строк
    }
    x++;                                // +1, т.к. в после последнего числа идет конец файла, а не новая строка
    y /= x;                         // теперь y хранит количество столбцов( все числа делить на количество срок)
    cout << "Размер матрицы " << y << " на " <<  x << endl;
    
    inter = v.begin();  // возвращаем итератор в начало вектора
    i = 0;          // счетчик чисел
    while (inter != v.end())        // пока итератор не указывает на конец вектора
    {
        i++;                    // прибавляем +1 к количеству выведеных на экран чисел
        cout << *inter++ << " ";    
        if (i % y == 0)         // если количество выведеных чисел кратно количеству столбцов
            cout << endl;       // новая строка
    }
 
    cout << "\nEnd reading...\n";
 
    cout << "Введите k: ";
    int k;
    cin >> k;
 
    inter = v.begin();          // возвращаем итератор в начало вектора
    for (i = 0; i < y*(k-1); i++)   // интерратор перемещаем на нужную строку
        inter++;
 
    int z;                  // переменная, которая будет хранить позицию в строке(номер столба)
    int temp = 0;               // переменная, которая будет хранить самое большое число на данный момент
    for (int j = 0; j < y; j++)     // ищем в этой строке наибольший элемент
    {
        int tmp = *inter++;
        if (tmp > temp)
        {
            temp = tmp;
            z = j ;             // запоминаем его столбик
        }
    }
 
    cout << "Мы запомнили " << z << " столбик" << endl;
 
    inter = v.begin();              // возвращаем итератор в начало вектора
    int summ = 0;
    for (i = 0; i < x * y; i++)     // перебераем все(x * y) числа
    {
        temp = *inter++;            // берем число
        if ( (i % y) == z)          // если его "порядковый номер" при делении на кол-во чисел в строке
        {                       // дает остаток раный номеру нужного столба
            int mod = (temp < 0) ? - temp : temp;       // если число отрицательное, берем (0-число)
            summ += mod;                        // суммируем модули
        }
    }
 
    cout << "Сумма равна: " << summ << endl;
 
    return 0;
}
Не смог прямо считать int переменные с файла, пришлось применять itoa.
Файл для тестов был такой:
Кликните здесь для просмотра всего текста
21 21 43 42 53
33 43 53 64 73
35 53 61 74 83
23 43 62 73 82
21 44 53 63 71


Именно важно что бы:
1. После последнего числа не было больше никаких символов.
2. Файл сразу начинался с цифры.
3. Цифры отделялись пробелами.
4. Строка заканчивалась цифрой.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2013, 17:46
Привет! Вот еще темы с ответами:

Организация работы с данными (входные данные должны вводиться из файла, а выходные выводиться в файл) - C++
входные данные должны вводиться из файла, а выходные выводиться в файл. #include &lt;iostream&gt; #include &lt;string&gt; using...

Дана матрица целых чисел, из n строк и n столбцов (n < = 100).Определить является ли матрица нулевой (состоит из одних нулей) - C++
#include &lt;iostream.h&gt; #include &lt;iomanip.h&gt; #include &lt;stdlib.h&gt; int main(int argc, char* argv) { srand(time(NULL)); int mas; ...

Дана матрица целых чисел, из n строк и n столбцов (n < = 100).Определить является ли матрица нулевой (состоит из одних нулей) - C++
#include &lt;iostream.h&gt; #include &lt;iomanip.h&gt; #include&lt;conio.h&gt; void main() { int mas; int N; int max_element; int...

Дана матрица - C++
Помогите пожалуйста написать прогу на Си! Дана матрица размера SxS S-четное. Составить программу, которая выполняет обмен между...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.09.2013, 17:46
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru