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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить скалярное произведение S http://www.cyberforum.ru/cpp-beginners/thread948384.html
Вычислить скалярное произведение S s=(A(p+r+q),p на С++
C++ Передача аргументов через консоль Подскажи пожалуйста, вот такой код: #include <iostream> #include <vector> using namespace std; int main (int argc, char *argv) { int i; vector<int>vi; vector<char>vc; for(i=1;i<argc;++i) http://www.cyberforum.ru/cpp-beginners/thread948371.html
C++ Необходимо рассчитать выражение, используя ООП по максимуму, применить инкапсуляцию и тд
Доброго времени суток, уважаемы пользователи CyberForum! Нуждаюсь в Вашей помощи. Прочитал уже много информации по ООП, но что-то никак оно мне не поддаётся... Необходимо рассчитать выражение, используя ООП по максимуму, применить инкапсуляцию и тд. С классами ранее не работал. У меня есть общее представление по реализации, что переменные мы приватим, а потом создаём ещё 4 и присваиваем им...
функции getchar() и putchar() C++
Здравствуйте всем. Такая вот задачка: Есть вот такой код: #include <iostream> #include <conio.h> using namespace std; void main() {
C++ Графическое отображение полинома http://www.cyberforum.ru/cpp-beginners/thread948360.html
Доброго времени суток форумчане. Сложилась проблема, встала задача которую я не могу воплотить в жизнь. Задача такова. Разработать программу для графического отображения полинома an*x^n+a(n-1)*x^(n-1)+…+a0, где ai, x – целые числа. Степень n и коэффициенты ai задаются с клавиатуры. График формируется в .txt файле.
C++ Книга Шилдта Г Для чего нужен массив обведённый красным цветом? Либо я что-то упустил либо очепяточка в книге. Склоняюсь к первому варианту , рассудите пожалуйста. #include<iostream> using namespace std; char name ; //Имя служащих char phone; //Телефон служащих подробнее

Показать сообщение отдельно
Oman
4 / 4 / 0
Регистрация: 07.11.2010
Сообщений: 29
05.09.2013, 17:46     дана матрица a(n/m) которая вводиться из файла
Цитата Сообщение от 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. Строка заканчивалась цифрой.
 
Текущее время: 22:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru