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

лабораторная с дин. матрицами - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Заданы два натуральных числа в десятичной системе счисления, состоящие из единиц. http://www.cyberforum.ru/cpp-beginners/thread289217.html
Единичный НОД (Время: 1 сек. Память: 16 Мб Сложность: 23%) Заданы два натуральных числа в десятичной системе счисления, состоящие из единиц. В первом числе ровно N единиц, а во втором их ровно M. Требуется найти НОД этих чисел. Напомним, что НОД (наибольший общий делитель) двух чисел a и b — это такое максимальное число c, что b делится на c и a делится на c. Входные данные В...
C (СИ) Как запретить ввод букв с клавиатуры Уважаемые форумчане,помогите,пожалуйста новичку,как сделать так чтобы нельзя было ввести с клавиатуры ничего , кроме цифр,и ограничить ввод до 4 символов,заранее спасибо. Добавлено через 1 минуту Забыл сказать,в си ,не си++,работаю в dev c++ http://www.cyberforum.ru/cpp-beginners/thread289216.html
В файл результатов напечатать исходный текст (эхо-печать), состояние сформированного линейного списка и найденные слова C++
Обработка екстовых файлов Задан исходный текст на русском языке. Длина текста - не более NL строк, длина строки - не более NS символов, длина слова не более NW символов. После обработки исходного текста полученные слова хранить в однонаправленном линейном не кольцевом списке. В полученном линейном списке найти слова, начинающиеся и заканчивающиеся заданной буквой. В качестве заданной буквы...
Как объединить два двумерных массива? C++
есть массивы А и B как их зделать в C, проста смотрел про одномерные массивы там все както проста но не пордходит к двухмерному даже функцию нашел как объединить одномерные массивы а про двух тишина какои та :( помогите вообщем
C++ Не понятное действие в классе http://www.cyberforum.ru/cpp-beginners/thread289178.html
зачем в 30 и 36 строке идет +1 к n и j //объект employee, использующий строковый тип данных #include <iostream> #include <string> using namespace std; /////////////////////////////////////////////////////////// class employee { private:
C++ Найти в массиве число в диапазоне. Найти в массиве из 30 элементов значение которое вписывается в диапазон больше 2.74 но меньше 3.5 !!! За ранее благодарен ! есть ли тут ошибки ? #include <iostream.h> int main() { подробнее

Показать сообщение отдельно
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
05.05.2011, 13:50     лабораторная с дин. матрицами
есть динамическая целочисленная матрица,элементы которой из диопозона -15:88. Найти максимум. Делители максимума перезаписать в другой массив. По параметру передавать адрес первого нечетного числа в матрице.
Я все написал,только что то не правильно работает.

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
#include <iostream>
#include <stdlib.h>
#include <time.h>
 
using namespace std;
 
void MatrixInput(int** x,int n);
void MatrixOutput(int** x,int n);
int MaximumOfMatrix(int** x,int n);
int CountingDividers(int** x,int n,int max);
void ArrayInput(int** x, int n,int* y,int max);
void ArrayOutput(int* y,int n);
void FirstOddNumber(int** x,int n,int& a,int& b);
 
void main()
{
    int n=5;
    int** x=new int*[n];
    int* y;
 
    int max;
    int m;
    int a=0,b=0;
 
    for(int i=0;i<n;i++)
        x[i]=new int[n];
 
///////////////////////////
 
    MatrixInput(x,n);
    max=MaximumOfMatrix(x,n);
    m=CountingDividers(x,n,max);
    y=new int[m];
    ArrayInput(x,n,y,m);
    FirstOddNumber(x,n,a,b);
 
    cout<<"MATRIX"<<endl;
    MatrixOutput(x,n);
    cout<<endl<<"MAXIMUM IS "<<max<<endl;
    cout<<endl<<"ADDRES OF THE FIRST ODD NUMBER IN MATRIX IS: "<<a<<" "<<b<<endl;
    cout<<endl<<"ARRAY"<<endl;
    ArrayOutput(y,m);
    
 
///////////////////////////
 
    for(int i=0;i<n;i++)
        delete[] x[i];
    delete []x;
    delete[] y;
 
}
 
void MatrixInput(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()%104-15;
}
 
void MatrixOutput(int** x,int n)
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
            cout<<*(*(x+i)+j)<<" ";
        cout<<endl;
    }
}
 
int MaximumOfMatrix(int** x,int n)
{
    int max=x[0][0];
 
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            if(max<*(*(x+i)+j))
                max=*(*(x+i)+j);
 
    return max;
}
 
 
int CountingDividers(int** x, int n,int max)
{
    int s=0;
 
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            if(max%*(*(x+i)+j)==0)
                s++;
 
    return s;
}
 
void ArrayInput(int** x,int n,int* y,int max)
{
    int c=0;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            if(max%*(*(x+i)+j)==0)
                *(y+c++)=*(*(x+i)+j);
}
 
void ArrayOutput(int* y,int n)
{
    for(int i=0;i<n;i++)
        cout<<*(y+i)<<" ";
    cout<<endl;
}
 
void FirstOddNumber(int** x,int n,int& a,int& b)
{
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            if(*(*(x+i)+j)%2!=0)
            {
                a=i;
                b=j;
                i=n;
                break;
            }
}
При тестировании программы максимум был 75. Внизу увидел что число -6 делится на 75 без остатка...-_-.это раз.
И два, что функция считает к примеру 5 чисел, которые делятся на макс, а другая функция не записывает числа. В итоге вижу на экране -87841568654....

Если надо коменты оставлю к коду
ПС на завтра нужно(

Добавлено через 2 минуты
вот пример

MATRIX
22 31 79 12 -13
9 19 26 31 65
-3 74 55 -12 81
5 85 -11 74 6
85 51 49 20 37

MAXIMUM IS 85

ADDRES OF THE FIRST ODD NUMBER IN MATRIX IS: 0 1

ARRAY
-3 -842150451 -842150451
Для продолжения нажмите любую клавишу . . .
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru