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

статическая память и матрицы - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
Olk@
 Аватар для Olk@
0 / 0 / 0
Регистрация: 03.05.2009
Сообщений: 9
12.05.2009, 18:36     статическая память и матрицы #1
сижу задачку делаю! с динамической памятью все нормально получилось! а со статической ошибки выдает! может кто поможет!!!


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

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
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
const int c=20;
 
struct matr //
{
    int n;
    int a[c][c];
};
 
//чтение матрицы из файла 
bool readmtf(ifstream &f,matr &mt)
{matr mtr;
   if (f >>mtr.n)
   {
     int mt[c][c];
     for (int i=0;i<mtr.n;i++)
     {   for (int j=0;j<mtr.n;j++)
            f >>mt[i][j];
     }
     return true;
    }
    else return false;
}
 
//выдача матрицы и характеристик строк матрицы в файл
void writemtf(ofstream &f,matr mtr,int kp[])
{
    
    f <<mtr.n<<endl;
    int mt[c][c];
    for (int i=0;i<mtr.n;i++)
    {
        f<<kp[i]<<"   ";
        for (int j=0;j<mtr.n;j++)
            f <<mt[i][j]<<' ';
        f <<endl;
    }
}
//проверка числа к на простоту
bool prov(int k)
{
    bool fl=(k>1)&&((k==2)||(k>2)&&(k%2>0));
    int gr=int(sqrt(double(k))),d=3;
    while (fl &&(d<=gr))
    {
        fl=k%d>0;d+=2;
    }
    return fl;
}
 
int main()
{
    ifstream fin( "mtdan.txt");
    if (!fin)
    {
        cout <<"error\n";return 1;
    }
    ofstream fout("resmatr.txt");
    matr a;
    int i,j,s;
    while(readmtf(fin,a))
    {
// формирование массива характеристик строк матрицы
    int kp[c];
        for (i=0;i<a.n;i++)
      {
        s=0;
        for (j=0;j<a.n;j++)
        s+=int (prov(a.a[i][j]));
        kp[i]=s;
       }
       fout <<"do sortirovki:\n";
       writemtf(fout,a,kp[c]);
//сортировка строк матрицы по убыванию их характеристик
       for (i=a.n-1;i>0;i--)
        for (j=1;j<=i;j++)
         if (kp[j-1]<kp[j])
         {
            swap(kp[j-1],kp[j]);
            swap(a.a[j-1],a.a[j]);
         }
         fout <<"posle  sortirovki:\n";
       writemtf(fout,a,kp[c]);
    
    }
    fin.close();
    fout.close();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2009, 18:36     статическая память и матрицы
Посмотрите здесь:

C++ Динамически выделить память под верхний треугольник квадратной матрицы
C++ Поиск пол/отр элементов. Матрицы, динам. память.
C++ динамическая память под матрицы
Статическая память,Динамическая память. C++
Статическая линковка C++
C++ Статическая линковка
C++ Упорядочить столбцы матрицы по неубыванию характеристик. Динамическая память
C++ Передача матрицы через разделяемую память
C++ Статическая библиотека
C++ Статическая библиотека
Статическая память C++
C++ Матричный калькулятор, динамическая память для матрицы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Шерсть-На-Носу
 Аватар для Шерсть-На-Носу
40 / 40 / 1
Регистрация: 30.01.2009
Сообщений: 168
13.05.2009, 09:59     статическая память и матрицы #2
Во-первых

Код
writemtf(fout,a,kp);
Во-вторых в строке

Код
swap(a.a[j-1],a.a[j]);
ты задаешь только одну размерность массива а.
Olk@
 Аватар для Olk@
0 / 0 / 0
Регистрация: 03.05.2009
Сообщений: 9
13.05.2009, 20:10  [ТС]     статическая память и матрицы #3
это я исправила!!! теперь ошибок не выдает! но не получается сортировка!!!!


вот исходные данные:
4
2 -6 8 6
7 5 3 2
0 4 8 12
7 19 17 23

5
9 6 4 8 14
7 5 3 9 11
3 5 7 13 1
5 72 55 11 12
5 25 34 8 3

3
1 4 5
4 3 12
3 5 7

а вот что получается на выходе:
do sortirovki:
-858993460
posle sortirovki:
-858993460
do sortirovki:
-858993460
posle sortirovki:
-858993460
do sortirovki:
-858993460
posle sortirovki:
-858993460

а должно быть так:
do sortirovki:
4
1 2 -6 8 6
4 7 5 3 2
0 0 4 8 12
4 7 19 17 23
posle sortirovki:
4
4 7 5 3 2
4 7 19 17 23
1 2 -6 8 6
0 0 4 8 12
do sortirovki:
5
0 9 6 4 8 14
4 7 5 3 9 11
4 3 5 7 13 1
2 5 72 55 11 12
2 5 25 34 8 3
posle sortirovki:
5
4 7 5 3 9 11
4 3 5 7 13 1
2 5 72 55 11 12
2 5 25 34 8 3
0 9 6 4 8 14
do sortirovki:
3
1 1 4 5
1 4 3 12
3 3 5 7
posle sortirovki:
3
3 3 5 7
1 1 4 5
1 4 3 12



не пойму в чем ошибка! может кто подскажет
Yandex
Объявления
13.05.2009, 20:10     статическая память и матрицы
Ответ Создать тему
Опции темы

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