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

не работает правильно счетчик - C++

Восстановить пароль Регистрация
 
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
11.03.2011, 19:52     не работает правильно счетчик #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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include <iostream>
#include <stdlib.h>
#include <time.h>
 
 
using namespace std;
 
void MatrixInp(int** x,int n);
void MatrixOut(int** x,int n);
void ArraysInp(int** x,int n,int* a,int* b);
void ArrayOut(int* x,int n);
int MaxInMatrix(int** x,int n,int& iIndex,int& jIndex);
int Summa(int** x,int n,int iIndex,int jIndex);
bool CheckForPrime(int a);
 
 
void main()
{
    int n;
    cout<<"n=";
    cin>>n;
    int iIndex,jIndex;
    iIndex=jIndex=0;
 
    int** x=new int*[n];
    int* a=new int[n];
    int* b=new int[n];
 
    for(int i=0;i<n;i++)
        x[i]=new int[n];
 
    cout<<"X MATRIX"<<endl;
    MatrixInp(x,n);
    MatrixOut(x,n);
    ArraysInp(x,n,a,b);
    cout<<endl<<"A ARRAY"<<endl;
    ArrayOut(a,n);
 
    cout<<endl<<"B ARRAY"<<endl;
    ArrayOut(b,n);
 
    int max=MaxInMatrix(x,n,iIndex,jIndex);
    int s=Summa(x,n,iIndex,jIndex);
 
    cout<<"Max in Matrix is: "<<max<<endl<<"S: "<<s<<endl;
 
    for(int i=0;i<n;i++)
        delete[] x[i];
 
    delete []x;
}
 
void MatrixInp(int** x,int n)
{
    srand(time(0));
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            *(*(x+i)+j)=rand()%10;
}
 
void MatrixOut(int** x,int n)
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
            cout<<*(*(x+i)+j)<<" ";
        cout<<endl;
    }
}
 
void ArrayOut(int* x,int n)
{
    for(int i=0;i<n;i++)
        cout<<*(x+i)<<" ";
    cout<<endl;
}
 
void ArraysInp(int** x,int n,int* a,int* b)
{
    for(int i=0;i<n;i++)
        *(a+i)=*(*(x+i)+i);
 
    for(int i=n-1;i>=0;i--)
        *(b+i)=*(*(x+i)+(n-1-i));
}
 
 
int MaxInMatrix(int** x,int n,int& iIndex,int& jIndex)
{
    int max=*(*(x));
    for(int i=0;i<n;i++)
        for(int j=1;j<n;j++)
            if(*(*(x+i)+j)>max)
            {
                max=*(*(x+i)+j);
                iIndex=i;
                jIndex=j;
            }
 
    return max;
}
 
 
 
int Summa(int** x,int n,int iIndex,int jIndex)
{
    int s=0;
    
    for(int i=0;i<n;i++)
        if(CheckForPrime(*(*(x+iIndex)+i)==1))
            s+=*(*(x+iIndex)+i);
 
    for(int i=0;i<n;i++)
        if(CheckForPrime(*(*(x+i)+jIndex)==1))
            s+=*(*(x+i)+jIndex);
    
    return s;
}
 
bool CheckForPrime(int a)
{
    bool t=1;
    for(int i=0;i<a;i++)
        if(i!=0)
        if(a%i==0)
        {
            t=0;
            break;
        }
    return t;
}
Расскажу не весь код, а тот отрезок где проблемы: так вот есть матрица динмачиеская. Надо найти максимум. Запомнить номера столбика и строки где максимум находится.. Потом пройтись над строкой и столбом, и найти простые числа,их сумму то есть.

Функция Summa возвращает сумму. Она вызывает функцию типа bool, который проверяет является ли число простым. Если нет возвращается 0, если да 1.Функция Summa получает ответ от CheckForPrime, и в зависимости от 0 и 1 делает прибавление...Проблема в том что Сумма выводится на столько большая, что все элементы матрицы при суммировке не дали бы такое число...Сумму может быть 50, когда матрица 2*2 и диапазон чисел [0;10)
Где ошибка?

Добавлено через 19 секунд
Если нужны коментарии-сделаю
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2011, 19:52     не работает правильно счетчик
Посмотрите здесь:

Не могу понять почему не работает (или правильно не работает) C++
C++ прога не правильно работает
C++ Не правильно работает. s = (a/(b*(c/(d*(e/(f*h))))));
C++ Не правильно работает if C++
Почему не работает счетчик в функции? C++
Не правильно работает! C++
C++ Не правильно работает!
C++ Не работает счетчик операций

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
11.03.2011, 19:57     не работает правильно счетчик #2
iIndex и jIndex остаются в функции без изменений... Разве так и задумано?
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
11.03.2011, 20:30  [ТС]     не работает правильно счетчик #3
ForEveR, нет. Они должны поменяться в MaxInMatrix
Это место максимума

Добавлено через 28 минут
ну кто же ответьте на завтра нужно. Утром проверять будет препод
Yandex
Объявления
11.03.2011, 20:30     не работает правильно счетчик
Ответ Создать тему
Опции темы

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