Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
CiLbBePMeH
1 / 1 / 0
Регистрация: 17.05.2012
Сообщений: 17
1

В бинарном файле содержатся числа. Сформировать квадратную матрицу...

17.05.2012, 18:05. Просмотров 543. Ответов 6
Метки нет (Все метки)

Всем доброго времени суток)Есть задача,решения которого я не могу найти(т.к саму задачу непонимаю).Если есть желание ,посмотрите пожалуйста.
"В бинарном файле содержатся числа. Сформировать квадратную матрицу из 25 последних чисел файла. Посчитать сумму элементов над главной диагональю полученной матрицы." на с++ естественно))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2012, 18:05
Ответы с готовыми решениями:

Сформировать матрицу размера M*N, у которого в каждом столбце содержатся все числа из исходного набора
Даны целые положительные числа М и N инабор из М чисел. Сформировать матрицу...

Сформировать матрицу размера M × N, у которой в каждом столбце содержатся все числа из исходного набора
Есть задача Даны целые положительные числа M, N и набор из M чисел....

Сформировать матрицу размера MхN, в каждом столбце которой содержатся все числа из исходного набора
Даны целые положительные числа M, N и набор из M чисел. Сформировать матрицу...

Сформировать квадратную матрицу; транспонировать матрицу и инвертировать порядок элементов каждой ее строки
Заданы два одномерных массива одинаковой длины: R и S.Сформировать квадратную...

Создать квадратную матрицу, сформировать новую матрицу такой же размерности путём транспонирования исходной
Создать квадратную матрицу размерности (30, 30). Заполнить её случайными целыми...

6
MrGluck
Модератор
Эксперт CЭксперт С++
8084 / 4941 / 1431
Регистрация: 29.11.2010
Сообщений: 13,392
17.05.2012, 18:16 2
1. Открываешь бинарный файл.
2. Пока не конец файла считаешь количество чисел (N).
3. Снова обходишь файл и начиная с N - 24 до N считываешь эти числа в двумерный массив, размерностью 5x5.
4. Как подсчитать сумму элементов над диагональю спрашивают на форуме каждый день по несколько раз. Посмотрите решения в прошлых темах.
1
CiLbBePMeH
1 / 1 / 0
Регистрация: 17.05.2012
Сообщений: 17
17.05.2012, 18:21  [ТС] 3
А можно продемонстрировать первые 3 пункта?
0
MrGluck
Модератор
Эксперт CЭксперт С++
8084 / 4941 / 1431
Регистрация: 29.11.2010
Сообщений: 13,392
17.05.2012, 18:45 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
#include <iostream>
#include <fstream>
 
int main()
{
    std::ifstream in("testbin.txt", std::ios::binary);
    if (!in) return 1;
    int count = 0, tmp, arr[25], matrix[5][5], index = 0;
    while(!in.eof() && in.read((char*)&tmp, sizeof(tmp)))
        count++;
    in.clear(); // Г±ГЎГ°Г*ñûâГ*ГҐГ¬ ГґГ«Г*ГЈГЁ
    in.seekg(0, std::ios::beg);
    for(int i=0; i < count && in.read((char*)&tmp, sizeof(tmp)); i++)
        if(i >= count - 25) arr[index++] = tmp;
    for (int i=0; i < 25; i++)
        matrix[i % 5][i / 5] = arr[i];
    // âûâîäèì Г¬Г*òðèöó Г*Г* ГЅГЄГ°Г*Г*
    for (int i=0; i < 5; i++)
    {
        for (int j=0; j < 5; j++)
            std::cout<< matrix[i][j]<< " ";
        std::cout<< std::endl;
    }
    return 0;
}
перед этим оформи простенькую запись чисел в бинарный файл в цикле
1
CiLbBePMeH
1 / 1 / 0
Регистрация: 17.05.2012
Сообщений: 17
17.05.2012, 18:48  [ТС] 5
Спасибо))Очень помогли
0
MrGluck
Модератор
Эксперт CЭксперт С++
8084 / 4941 / 1431
Регистрация: 29.11.2010
Сообщений: 13,392
17.05.2012, 18:51 6
вот фактически вся прога, что уж там, одну строчку дописать.
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
#include <iostream>
#include <fstream>
 
int main()
{
    std::ifstream in("testbin.txt", std::ios::binary);
    std::ifstream iz("testbin.txt", std::ios::binary);
    if (!in) return 1;
    int count = 0, tmp, arr[25], matrix[5][5], index = 0, sum = 0;
    while(!in.eof() && in.read((char*)&tmp, sizeof(tmp)))
        count++;
    in.clear(); // Г±ГЎГ°Г*ñûâГ*ГҐГ¬ ГґГ«Г*ГЈГЁ
    in.seekg(0, std::ios::beg);
    for(int i=0; i < count && in.read((char*)&tmp, sizeof(tmp)); i++)
        if(i >= count - 25) arr[index++] = tmp;
    for (int i=0; i < 25; i++)
        matrix[i % 5][i / 5] = arr[i];
    // âûâîäèì Г¬Г*òðèöó Г*Г* ГЅГЄГ°Г*Г*
    for (int i=0; i < 5; i++)
    {
        for (int j=0; j < 5; j++)
        {
            std::cout<< matrix[i][j]<< " ";
            if (i + j > 2 * i) sum+= matrix[i][j];
        }
        std::cout<< std::endl;
    }
    std::cout<< sum;
    return 0;
}
0
CiLbBePMeH
1 / 1 / 0
Регистрация: 17.05.2012
Сообщений: 17
17.05.2012, 20:02  [ТС] 7
Я сделал ввод в бинарный файл,но он забивает массив другими(левыми числами) похоже из памяти.
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
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <windows.h>
 
int main()
{ FILE *f;
 int k=1, i=0;
 float a, A[5][5];
 srand((unsigned)time(NULL));
 SetConsoleOutputCP(1251);
 SetConsoleCP(1251);
 
 f=fopen("matrix.bin", "wb");
 while(k!=0)
      {
      a=rand()%5+25;
      fwrite(&a, sizeof(float), 1, f);
      i++;
      printf("ÄîáГ*âëåГ*Г® Г§Г*Г*Г·ГҐГ*ГЁГҐ %.1f\n", a);
      printf("Г‚ ГґГ*éëå Г*Г*õîäèòüñÿ %d Г§Г*Г*Г·ГҐГ*ГЁГ©. ÄîáГ*ГўГЁГІГј ГҐГ№Вё Г§Г*Г*Г·ГҐГ*ГЁГї? 1 - Г¤Г*, 0 - Г*ГҐГІ\n", i);    
      scanf("%d", &k);
      }
 fclose(f);
    std::ifstream in("matrix.txt", std::ios::binary);
    std::ifstream iz("matrix.txt", std::ios::binary);
    //if (!in) return 1;
    int count = 0, tmp, arr[25],  index = 0, sum = 0;
    while(!in.eof() && in.read((char*)&tmp, sizeof(tmp)))
        count++;
    in.clear(); // Г±ГЎГ°Г*ñûâГ*ГҐГ¬ ГґГ«Г*ГЈГЁ
    in.seekg(0, std::ios::beg);
    for(int i=0; i < count && in.read((char*)&tmp, sizeof(tmp)); i++)
        if(i >= count - 25) arr[index++] = tmp;
    for (int i=0; i < 25; i++)
        A[i % 5][i / 5] = arr[i];
    // âûâîäèì Г¬Г*òðèöó Г*Г* ГЅГЄГ°Г*Г*
    for (int i=0; i < 5; i++)
    {
        for (int j=0; j < 5; j++)
        {
            std::cout<< A[i][j]<< " ";
            if (i + j > 2 * i) sum+= A[i][j];
        }
        std::cout<< std::endl;
    }
    std::cout<< sum;
    
     system("pause");
}
0
17.05.2012, 20:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2012, 20:02

Сформировать квадратную матрицу
Сформировать квадратную матрицу порядка n по заданному образцу: 1 2 3 ...

Сформировать квадратную матрицу
помогите пожалуйста разобраться с задачей не совсем понимаю как ее делать, знаю...

Сформировать квадратную матрицу
помогите пожалуйста написать программу на С++, очень сложно, не могу...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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