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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
Olk@
0 / 0 / 0
Регистрация: 03.05.2009
Сообщений: 9
#1

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

12.05.2009, 18:36. Просмотров 1456. Ответов 2
Метки нет (Все метки)

сижу задачку делаю! с динамической памятью все нормально получилось! а со статической ошибки выдает! может кто поможет!!!


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

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++
a) Статическая память. Двумерный массив. Дан массив целых чисел. В массиве есть отрицательные числа. Определить координаты левого нижнего...

Статическая память - C++
Если я на этапе компиляции выделил слишком много памяти. Например зарезервировал память под огромный массив.Но в системе нет столько памяти...

На каком этапе выделяется статическая память - C++
Если я создаю синглтон Маейрса: class Singleton { public: static Singleton&amp; Instance() { static Singleton...

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

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

Матричный калькулятор, динамическая память для матрицы - C++
Всем доброго времени суток. Пишу программу в С++ Builder - матричный калькулятор, с использованием компонента StringGrid. #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Шерсть-На-Носу
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@
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



не пойму в чем ошибка! может кто подскажет
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2009, 20:10
Привет! Вот еще темы с ответами:

Упорядочить столбцы матрицы по неубыванию характеристик. Динамическая память - C++
Дана целочисленная матрица A(M,N). Характеристикой j –го столбца матрицы назовем значение элемента, который встречается максимальное число...

Поиск пол/отр элементов. Матрицы, динам. память. - C++
Не очень дружу с с++, для допуска :( надо написать программу (с использованием динамической памяти) В матрице как положительные,так и...

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

Статическая библиотека - C++
lib main.h namespace x { int __stdcall WindowCreate( ... ); } main.cpp


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

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

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