Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
1

Программа глючит

19.12.2010, 18:51. Показов 1082. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал курсовую.
Программа глючит.
Дана матрица, элементы которой – случайные числа, находящийся в диапазоне [-15;88].
Найти максимальный элемент матрицы, и числа, которые делятся на максимальное число, записать в одномерный массив. Написать функцию, которая из массива передает в функцию main() адрес первого нечетного элемента, и присваивает его переменной в главной функции. Разработать функции для заполнения матрицы, а так же для ее вывода на экран.
Код
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
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
const int n=5;
void inp(int x[][n],int y[]);
int calc(int x[][n],int y[]);
void out(int x[][n],int y[],int k);
 
void main()
{
    srand(time(0));
    int k=0;
    int x[n][n];
    int y[n*n];
    inp(x,y);
    k=calc(x,y);
    out(x,y,k);
 
}
 
void inp(int x[][n],int y[])
{
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            x[i][j]=rand()%103-15;
 
    for(int i=0;i<n;i++)
        y[i]=0;
}
 
int calc(int x[][n],int y[])
{
    int max=x[0][0];
    int k=0;
    for(int i=0;i<n;i++)//MAX
        for(int j=0;j<n;j++)
            if(max<x[i][j])
                max=x[i][j];
    cout<<"Max="<<max<<endl;
    
    for(int i=0;i<n;i++)//Bajanararner
        for(int j=0;j<n;j++)
            if(max%x[i][j]==0)
                y[i]=x[i][j];
 
    for(int i=0;i<n;i++)
        if(y[i]%2!=0 && y[i]!=0)
        {
            k=i;
            break;
        }
                return k;
}
 
void out(int x[][n],int y[],int k)
{
 
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
            cout<<x[i][j]<<" ";
        cout<<endl;
    }
    
    cout<<endl<<endl;
    for(int i=0;i<n;i++)
        cout<<y[i]<<" ";
 
    cout<<endl<<"arajin kent tvi hascen Y zangvaci mej-"<<k<<endl;
 
}


Глюки
1.Иногда выскакивает во время запуска программы окно ошибки
Программа глючит

2.Хотел открыть программу чтобы сделать скрин что выше-комп завис...клава мышка-всё. Рестар, открыл прогу,нормально все без всяких окон. Закрыл-комп завис...Рестарт.Открываю ВС08,дебаг программы,окно что выше-скрин.
3.Последний глюк что "убило" меня-17%2=0.Что то нечто фантастическое...что такое.:????
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2010, 18:51
Ответы с готовыми решениями:

При вводе букв (переменных)глючит программа,а должно выбивать ошибку
Программа высчитывает определённую функцию (при вводе переменных стоят ограничения). Извините, в...

Программа глючит
Здравствуйте всем! Можете помочь с программой? Она у меня (на 2-х ядерном компьютере) как-то...

Глючит простенькая программа
Если кому не лень, посмотрите плз на мою прогу. Суть проблемы: есть простенькая, криво написанная...

Глючит программа. Как найти ошибку в коде?
Среда разработки VS 2012. Я написал программу. Пишу и дома и на работе. И там и там VS 2012,...

16
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
19.12.2010, 18:57 2
У меня вроде код работает, вот
Миниатюры
Программа глючит  
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
19.12.2010, 19:00  [ТС] 3
asics, пардон,это старый код,у меня там некоторые подправки...массив не 5 а 5*5...потому что может быть такое что все числа матрицы могут быть разделены на макс число без остатка..

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
//Trvac e matric,vori tarrer@ [-15:88] mijakayqin patkanox tveren.
//Haytnaberel matrici mecaguyn tarr@,ev nra bajanararnern artagrel mek ayl zangvaci mej.
//Veradarcnum e arajin kent tari hascen ev hxum parametrov arjeqavorum e main() funkciayi arachadrvac popoxakan@.
//Xndir@ lucel funkcianeri ognutyamb.
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
using namespace std;
const int n=5;
void inp(int x[][n],int y[]);
int calc(int x[][n],int y[]);
void out(int x[][n],int y[],int k);
 
void main()
{
    srand(time(0));
    int k=0;
    int x[n][n];
    int y[n*n];
    inp(x,y);
    k=calc(x,y);
    out(x,y,k);
    system("pause");
}
 
void inp(int x[][n],int y[])
{
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            x[i][j]=rand()%103-15;
 
    for(int i=0;i<n*n;i++)
        y[i]=0;
}
 
int calc(int x[][n],int y[])
{
    int max=x[0][0];
    int k=0;
    for(int i=0;i<n;i++)//MAX
        for(int j=0;j<n;j++)
            if(max<x[i][j])
                max=x[i][j];
    cout<<"Max="<<max<<endl;
    
    for(int i=0;i<n;i++)//Bajanararner
        for(int j=0;j<n;j++)
            if(max%x[i][j]==0)
                y[i]=x[i][j];
 
    for(int i=0;i<n;i++)
        if(y[i]%2!=0 && y[i]!=0)
        {
            k=i;
            break;
        }
                return k;
}
 
void out(int x[][n],int y[],int k)
{
 
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
            cout<<x[i][j]<<" ";
        cout<<endl;
    }
    
    cout<<endl<<endl;
    for(int i=0;i<n*n;i++)
        cout<<y[i]<<" ";
 
    cout<<endl<<"The addres of the first odd number in the Y array is "<<k+1<<endl;
 
}
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
19.12.2010, 19:03 4
C++
1
2
3
4
        for(int i=0;i<n;i++)//Bajanararner
                for(int j=0;j<n;j++)
                        if(max%x[i][j]==0)
                                y[i]=x[i][j];
В y больше 5 элементов никаким раком не будет. Советую завести дополнительный индекс.
C++
1
2
3
4
5
6
7
8
int z=0;
for(int i=0;i<n;i++)//Bajanararner
                for(int j=0;j<n;j++)
                        if(max%x[i][j]==0)
                        {
                                y[z]=x[i][j];
                                ++z;
                        }
Ну и размер итогового массива y неплохо бы записать куда-то... Иначе будет выводиться все 25 (и я думаю там будет большинство нулей)

C++
1
2
3
4
5
6
7
        for(int i=0;i<n;i++)
                if(y[i]%2!=0 && y[i]!=0)
                {
                        k=i;
                        break;
                }
                                return k;
Ну и тут поменять вместо n - z
1
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
19.12.2010, 19:10  [ТС] 5
ForEveR, скопилировал код,сразу же вышла ошибка та..
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
19.12.2010, 19:23 6
^Tecktonik_KiLLeR, Проверил) Все просто. Деление на ноль.

Добавлено через 5 минут
Я бы сделал так.

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
//Trvac e matric,vori tarrer@ [-15:88] mijakayqin patkanox tveren.
//Haytnaberel matrici mecaguyn tarr@,ev nra bajanararnern artagrel mek ayl zangvaci mej.
//Veradarcnum e arajin kent tari hascen ev hxum parametrov arjeqavorum e main() funkciayi arachadrvac popoxakan@.
//Xndir@ lucel funkcianeri ognutyamb.
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
using namespace std;
const int n=5;
 
struct result
{
    int size;
    int k;
};
 
void inp(int x[][n],int y[]);
result calc(int x[][n],int y[]);
void out(int x[][n],int y[],const result& res);
 
void main()
{
        srand(time(0));
        int x[n][n];
        int y[n*n];
        inp(x,y);
        result res=calc(x, y);
        out(x,y,res);
        system("pause");
}
 
void inp(int x[][n],int y[])
{
        for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                        x[i][j]=1+rand()%(103-15);
 
        for(int i=0;i<n*n;i++)
                y[i]=0;
}
 
result calc(int x[][n],int y[])
{
        result res;
        res.size=0;
        res.k=0;
        int max=x[0][0];
        for(int i=0;i<n;i++)//MAX
                for(int j=0;j<n;j++)
                        if(max<x[i][j])
                                max=x[i][j];
        cout<<"Max="<<max<<endl;
        
        for(int i=0;i<n;i++)//Bajanararner
                for(int j=0;j<n;j++)
                        if(max%x[i][j]==0)
                        {
                                y[res.size]=x[i][j];
                                res.size++;
                        }
 
        for(int i=0;i<n;i++)
                if(y[i]%2!=0 && y[i]!=0)
                {
                        res.k=i;
                        break;
                }
                return res;
}
 
void out(int x[][n],int y[],const result& res)
{
 
        for(int i=0;i<n;i++)
        {
                for(int j=0;j<n;j++)
                        cout<<x[i][j]<<" ";
                cout<<endl;
        }
        
        cout<<endl<<endl;
        for(int i=0;i<res.size;i++)
                cout<<y[i]<<" ";
 
        cout<<endl<<"The addres of the first odd number in the Y array is "<<res.k+1<<endl;
 
}
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
19.12.2010, 19:25  [ТС] 7
ForEveR, деление на ноль?О_О ну и где

Добавлено через 41 секунду
ForEveR, не не,там структуры есть...у нас не прошли еще
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
19.12.2010, 19:27 8
^Tecktonik_KiLLeR, Я тебе говорю как лучше сделать... Можно и по ссылке передать. А на ноль деление происходило здесь.
C++
1
 if(max%x[i][j]==0)
Деление с остатком на ноль как бэ тоже плохо.
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
19.12.2010, 19:29  [ТС] 9
Цитата Сообщение от ForEveR Посмотреть сообщение
Можно и по ссылке передать
это тоже не прошли)
Цитата Сообщение от ForEveR Посмотреть сообщение
Деление с остатком на ноль как бэ тоже плохо.


Ну и что можно поменять в условии?можно так?
если неровно 0 то если делится на макс число то...?
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
19.12.2010, 19:31 10
Без структуры. С указателем. Ноль не сгенерируется никак. Правда не под условие
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
//Trvac e matric,vori tarrer@ [-15:88] mijakayqin patkanox tveren.
//Haytnaberel matrici mecaguyn tarr@,ev nra bajanararnern artagrel mek ayl zangvaci mej.
//Veradarcnum e arajin kent tari hascen ev hxum parametrov arjeqavorum e main() funkciayi arachadrvac popoxakan@.
//Xndir@ lucel funkcianeri ognutyamb.
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
using namespace std;
const int n=5;
 
void inp(int x[][n],int y[]);
int calc(int x[][n],int y[], int* z);
void out(int x[][n],int y[], int k, int z);
 
void main()
{
        srand(time(0));
        int x[n][n];
        int y[n*n];
        inp(x,y);
        int z=0;
        int k=calc(x, y, &z);
        out(x,y,k, z);
        system("pause");
}
 
void inp(int x[][n],int y[])
{
        for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                        x[i][j]=1+rand()%(103-15);
 
        for(int i=0;i<n*n;i++)
                y[i]=0;
}
 
int calc(int x[][n],int y[], int* z)
{
        int max=x[0][0];
        for(int i=0;i<n;i++)//MAX
                for(int j=0;j<n;j++)
                        if(max<x[i][j])
                                max=x[i][j];
        cout<<"Max="<<max<<endl;
        
        for(int i=0;i<n;i++)//Bajanararner
                for(int j=0;j<n;j++)
                        if(max%x[i][j]==0)
                        {
                                y[*z]=x[i][j];
                                (*z)++;
                        }
        int k=0;
        for(int i=0;i<n;i++)
                if(y[i]%2!=0 && y[i]!=0)
                {
                        k=i;
                        break;
                }
                return k;
}
 
void out(int x[][n],int y[],int k, int z)
{
 
        for(int i=0;i<n;i++)
        {
                for(int j=0;j<n;j++)
                        cout<<x[i][j]<<" ";
                cout<<endl;
        }
        
        cout<<endl<<endl;
        for(int i=0;i<z;i++)
                cout<<y[i]<<" ";
 
        cout<<endl<<"The addres of the first odd number in the Y array is "<<k+1<<endl;
 
}
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
19.12.2010, 19:58  [ТС] 11
Цитата Сообщение от ForEveR Посмотреть сообщение
y[*z]=x[i][j]; (*z)++;
уфф что это такое?..

Добавлено через 9 минут
C++
1
2
3
4
5
6
7
 for(int j=0;j<n;j++)
                    if(x[i][j]!=0)
                        if(max%x[i][j]==0)
                        {
                                y[z]=x[i][j];
                                ++z;
                        }
если так?

Добавлено через 53 секунды
да,сработало,в матрице увидел ноль и без всяких окон
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
19.12.2010, 20:32 12
^Tecktonik_KiLLeR, А ты z прости как передаешь? Если как указатель то -
C++
1
2
                                y[z]=x[i][j];
                                ++z;
Не должно работать.
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
19.12.2010, 21:50  [ТС] 13
ForEveR, ну нет,не указатель,как обычный индекс
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
19.12.2010, 21:53 14
^Tecktonik_KiLLeR, Если как обычный индекс и не по ссылке - вывод не будет верно работать. Ибо размер получится нулевой. Ну или делать по-плохому, т.е. не использовать z в функции out а печатать все 25 элементов массива y.
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
19.12.2010, 22:02  [ТС] 15
ForEveR, Тогда лучше второй вариант
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
19.12.2010, 22:09 16
^Tecktonik_KiLLeR,
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
 //Trvac e matric,vori tarrer@ [-15:88] mijakayqin patkanox tveren.
//Haytnaberel matrici mecaguyn tarr@,ev nra bajanararnern artagrel mek ayl zangvaci mej.
//Veradarcnum e arajin kent tari hascen ev hxum parametrov arjeqavorum e main() funkciayi arachadrvac popoxakan@.
//Xndir@ lucel funkcianeri ognutyamb.
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
using namespace std;
const int n=5;
 
void inp(int x[][n],int y[]);
int calc(int x[][n],int y[]);
void out(int x[][n],int y[], int k);
 
void main()
{
        srand(time(0));
        int x[n][n];
        int y[n*n];
        inp(x,y);
                int z=0;
                int k=calc(x, y);
        out(x,y,k);
        system("pause");
}
 
void inp(int x[][n],int y[])
{
        for(int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                        x[i][j]=1+rand()%(103-15);
 
        for(int i=0;i<n*n;i++)
                y[i]=0;
}
 
int calc(int x[][n],int y[])
{
        int z=0;
        int max=x[0][0];
        for(int i=0;i<n;i++)//MAX
                for(int j=0;j<n;j++)
                        if(max<x[i][j])
                                max=x[i][j];
        cout<<"Max="<<max<<endl;
        
        for(int i=0;i<n;i++)//Bajanararner
                for(int j=0;j<n;j++)
                        if(max%x[i][j]==0)
                                                {
                                y[z]=x[i][j];
                                z++;
                                                }
                int k=0;
        for(int i=0;i<z;i++)
                if(y[i]%2!=0 && y[i]!=0)
                {
                        k=i;
                        break;
                }
                                return k;
}
 
void out(int x[][n],int y[],int k)
{
 
        for(int i=0;i<n;i++)
        {
                for(int j=0;j<n;j++)
                        cout<<x[i][j]<<" ";
                cout<<endl;
        }
        
        cout<<endl<<endl;
        for(int i=0;i<n*n;i++)
                cout<<y[i]<<" ";
 
        cout<<endl<<"The addres of the first odd number in the Y array is "<<k+1<<endl;
 
}
С рандомом сделаешь как тебе самому нужно. Но вот впринципе так будет работать
0
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
20.12.2010, 19:14  [ТС] 17
ForEveR, Большое спасибо
0
20.12.2010, 19:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2010, 19:14
Помогаю со студенческими работами здесь

АДДурл-ку опять глючит или глючит Яндекс?
Сегодня добавлял четыри своих сайта, греха таить не буду сателиты, так вот при добавлении каждого...

Глючит ПК!
Друзья, подскажите, глючат игры на 4х ядерном ПК! Характеристики: Процессор: AMD Phenom X4 9500...

Глючит ПК
Здравствуйте! В общем сколько ни пытался установить Винду, постоянно после пару перезагрузок...

Глючит пк
В последнее время жутко глючит комп и лагает интернет.


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru