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

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

Войти
Регистрация
Восстановить пароль
 
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,341
Завершенные тесты: 1
#1

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

11.03.2011, 19:52. Просмотров 347. Ответов 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
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 секунд
Если нужны коментарии-сделаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2011, 19:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не работает правильно счетчик (C++):

Как правильно написать счетчик для нахождения самой длинной строки? - C++
Ввести массив строк и найти в нем максимальную по длине строку. Не учитывать случай, когда таких строк несколько. #include &quot;stdafx.h&quot; ...

Не работает счетчик операций - C++
Всем доброго вечера,может кто помочь? Изначально было задание переписать программу из паскалая в с++ включая процедуру findsum строки...

Почему не работает счетчик в функции? - C++
я написал вот такую не хитрую функцию , в ней все работает как надо,кроме переменной &quot;V&quot; - в чем проблема?(rm и lm это сокращенный код...

Не работает счетчик в методе определения различающихся элементов массива - C++
#include &quot;stdio.h&quot; int main() { const int n=29; double massiv; int i,j; int proverka=0; int d=0; for (i=0; i&lt;=n; i++) ...

Не могу понять почему не работает (или правильно не работает) - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #define N 5 #define M 3 void main() { int a; int i,j; cout&lt;&lt;&quot;nachalnya...

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

2
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
11.03.2011, 19:57 #2
iIndex и jIndex остаются в функции без изменений... Разве так и задумано?
1
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,341
Завершенные тесты: 1
11.03.2011, 20:30  [ТС] #3
ForEveR, нет. Они должны поменяться в MaxInMatrix
Это место максимума

Добавлено через 28 минут
ну кто же ответьте на завтра нужно. Утром проверять будет препод
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2011, 20:30
Привет! Вот еще темы с ответами:

Не правильно работает! - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;stdio.h&gt; using namespace std; double...

C++ Не правильно работает if - C++
Ребята, привет. Возник такой вопрос..В программе выполняю следующую вещь: f1= Have_Point(p1); ...

Не правильно работает. s = (a/(b*(c/(d*(e/(f*h)))))); - C++
2. На входе имеются вещественные числа a, b, c, d, e, f, h. Напишите программу для вычисления значения выражения В программе...

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


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

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

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