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

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

Войти
Регистрация
Восстановить пароль
 
CiLbBePMeH
1 / 1 / 0
Регистрация: 17.05.2012
Сообщений: 17
#1

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

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

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

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
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Эксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
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Эксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2012, 20:02
Привет! Вот еще темы с ответами:

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

Сформировать квадратную матрицу - C++
Люди, очень надеюсь на вас. Спасибо Сформировать квадратную матрицу порядка n по заданному образцу

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

Сформировать квадратную матрицу по образцу - C++
Здравствуйте..Помогите реализовать программу. Сформировать и распечатать квадратную матрицу A(15,15) следующего вида:


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

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

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