Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 14.03.2011
Сообщений: 7

Не хочет работать Rand

14.03.2011, 21:43. Показов 1230. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, при выполнении лабораторной работы столкнулся с некоторыми трудностями:
При запуске программы она доходит до функции ran и останавливается

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
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
 
using namespace std;
void date(long **mas,int x, int y){ //a)
  mas = new long*[x];
 
  for (int i = 0; i < x; i++) {
    mas[i] = new long [y];
  }
 
}
void ran(long **mas,const int x,const int y){ //b)
  for(int i=0; i<x; i++)
     for(int j=0; j<y;j++)
       mas[i][j]=rand()%100;
  }
long **sum(long **mas1,long **mas2,int x1,int y1,int x2,int y2){ //
    long **mas=NULL;
    mas=new long *[x1];
    for (int r=0; r<x1; r++){
    mas[r]=new long [y1];
    }
  for(int i=0;i<x1;i++)
   for(int j=0;j<y1;j++)
   mas[i][j] = mas1[i][j] + mas2[i][j];
  return mas;
}
long **p(long **mas1,long **mas2,int x1,int y1,int x2,int y2){
    long **mas=NULL;
    mas=new long *[x1];
    for (int r=0; r<x1; r++){
    mas[r]=new long [y2];
    }
    for(int i=0;i<x1;i++)
     for(int j=0;j<y2;j++) {
       mas[i][j]=0;
      for (int k=0;k<y1;k++) mas[i][j]+=mas1[i][k]*mas2[k][j];
    }
   return mas;
}
void print(long **mas,int x,int y){
       for(int i=0; i<x; i++){
         for(int j=0; j<y; j++)
       cout<<mas[i][j]<<" ";
     cout<<endl;
}
}
 
 
void delet(long **mas,int x,int y){//d)
  mas = new long *[x];
    for (int i = 0; i < x; i++) {
      delete []mas[i];
  }
 delete []mas;
}
 
 
 
 
 
int main(){
    int n,m;
    long **A=NULL,**B =NULL,**C =NULL,**D =NULL;
    cin >>n;
    cin >>m;
    date(A,n,m);
    date(B,n,m);
    date(C,m,n);
    date(D,n,n);
 
    ran(A,n,m);
    ran(B,n,m);
    ran(C,m,n);
    ran(D,n,n);
    cout<<endl<<endl<<"Input MATRIX"<<endl<<endl;
    print(A,n,m);
    cout<< endl;
    print(B,n,m);
    cout<<endl;
    print(C,m,n);
    cout<<endl;
    print(D,n,n);
    cout<<endl;
 
 
 
 
    cout<<endl<<endl<<"Output MATRIX"<<endl<<endl;
    print(p(sum(p(A,B,n,m,m,n),p(C,C,n,n,n,n), n, n,n,n), sum(A,D, n, m,n,m),n,n,n,m),n,m);
    cout<<endl;
 
    cout<< endl;
 
    delet(A,n,m);
    delet(B,n,m);
    delet(C,m,n);
    delet(D,n,n);
    getch();
    return 0;
}
Вот само условие :
Задание. Написать функции для работы с двумерными матрицами целых чисел типа long.
а) динамическое выделение памяти под матрицу;
б) заполнение матрицы с помощью датчика псевдослучайных чисел;
в) сложение двух матриц;
г) умножение двух матриц;
д) освобождение динамически выделенной памяти;
е) печать матрицы в виде строк на экране.
В качестве параметров внутрь функций надо передавать двойные указатели на параметры – матрицы, а также размеры этих матриц.
В основной функции main должны быть объявлены двойные указатели (для хранения матриц), а затем при помощи вызовов приготовленных функций найти требуемый результат. Должны быть напечатаны исходные матрицы и результирующая матрица. Размеры матриц должны вводиться в качестве переменных в начале работы программы.

Вариант 1. ; A(n*m), B(m*n), C(n*n), D(n*m)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.03.2011, 21:43
Ответы с готовыми решениями:

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

Не хочет работать
#include&lt;time.h&gt; #include&lt;stdlib.h&gt; using namespace std; int main() { setlocale(0, &quot;&quot;); int a; int n; int i, j,count =...

Не хочет работать htonl
На одной машине собирает проект нормально. На другой выдает ошибку error LNK2001: unresolved external symbol __imp__htonl@4 ругается...

7
221 / 135 / 48
Регистрация: 12.04.2010
Сообщений: 248
14.03.2011, 22:28
Можно несклько изменить фукцию date
C
1
2
3
4
5
6
7
8
long ** date(int x, int y){ //a)
    long **mas;
    mas = new long*[x];
    for (int i = 0; i < x; i++) {
        mas[i] = new long [y];
    }
    return mas;
}
И в main использвать так:
C
1
2
3
4
    A = date(n,m);
    B = date(n,m);
    C = date(m,n);
    D = date(n,n);
А передать таким обазом указатель на двумерный массив(которого еще не существует кстати) нельзя.
1
0 / 0 / 0
Регистрация: 14.03.2011
Сообщений: 7
14.03.2011, 22:48  [ТС]
Спасибо , теперь только она через некоторое время вылетает.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
15.03.2011, 02:06
C++
1
2
3
4
5
6
7
8
void date(long ***p, int x, int y)
{
    long **mas = new long *[x];
 
    for (int i = 0; i < x; i++)
        mas[i] = new long [y];
    *p = mas; 
}
C++
1
date(&A, n, m);
в C++ можно ещё через ссылки
1
0 / 0 / 0
Регистрация: 14.03.2011
Сообщений: 7
15.03.2011, 07:32  [ТС]
Спасибо,столкнулся еще с одной проблемой , не правильное освобождение динамически выделенной памяти в этих строках:
C++
1
print(p(sum(p(A,B,n,m,m,n),p(C,C,n,n,n,n), n, n,n,n), sum(A,D, n, m,n,m),n,n,n,m),n,m);
Пробовал сделать еще один массив и вычислять через него, т.е. добавил эти строки:
C++
1
2
3
4
5
6
7
8
9
10
long **K=NULL;
       date(K,n,m);
         K=sum(p(A,B,n,m,m,n);//присвою значение К, значение суммы А и В
         //так как В нигде больше не встречается присвою значение суммы двух С
         B=p(C,C,n,n,n,n);
         C=p(K,B,n,n,n,n);// больше С нигде не встречается присвоим ей значение K и В
         // ну и так далее 
         K=sum(A,D, n, m,n,m);
         B=p(C,K,n,n,n,m);
       delet(K,n,m);//освобождение памяти в К
print(B, n,m);// выведем значение
Программа работает в таком случае через раз , запинаясь на
C++
1
B=p(C,K,n,n,n,m);
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
15.03.2011, 10:06
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
#include <iostream>
#include <cstdlib>
#include <ctime>
    
int ** new_matrix(int rows, int columns){
    int ** m = new int * [ rows ];
    for ( int i = 0; i < rows; ++i )
        m[i] = new int [ columns ];
    return m;
}
 
int ** fill_matrix(int ** m, int rows, int columns){
    for ( int i = 0; i < rows; ++i )
        for ( int j = 0; j < columns; ++j )
            m[i][j] = rand () % 10;
    return m;
}
 
int ** dump_matrix(int ** m, int rows, int columns){
    for ( int i = 0; i < rows; ++i )
        for ( int j = 0; j < columns; ++j )
            std::cout << m[i][j] << ( j < columns - 1 ? ' ' : '\n' );
    return m;
}
 
void delete_matrix(int ** m, int rows){
    for ( int i = 0; i < rows; ++i )
        delete [] m[i];
    delete [] m;
}
 
int main(){
    int r = 4, c = 5;
    
    srand(time(NULL));
    delete_matrix(dump_matrix(fill_matrix(new_matrix(r, c), r, c), r, c), r); // гы :)
    
    std::cout << std::endl;
    return 0;
}
2
0 / 0 / 0
Регистрация: 14.03.2011
Сообщений: 7
19.03.2011, 01:41  [ТС]
Все всем огромное спасибо , разобрался и реализовал таким образом :
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
132
133
134
135
136
137
138
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
 
using namespace std;
long ** date(long **mas, int x, int y){ //a)
        mas = new long* [x];
        for (int i = 0; i < x; i++) 
                mas[i] = new long [y];
        for(int i=0;i<x;i++)
          for(int j=0;j<y;j++)
              mas[i][j] = 0;
        return mas;
}
void ran(long **mas,int x,int y){ //b)
  for(int i=0; i<x; i++)
     for(int j=0; j<y;j++)
           mas[i][j]=rand()%100;
  }
void delet(long **&mas,int x,int y){//d)
        for (int i = 0; i < x; i++) 
      delete [](mas[i]);
 delete []mas;
 mas=0;
}
void print(long **mas,int x,int y){
       for(int i=0; i<x; i++){
             for(int j=0; j<y; j++)
           cout<<mas[i][j]<<"\t";
         cout<<endl;
}
}
 
 
long **sum(long **mas1,long **mas2,int x1,int y1,int x2,int y2){ //
if((x1!=x2)||(y1!=y2)){
        cout << "Error 403 :D,PA3MEPHOCTb MATRIXS HE BEPHA";
    return 0;}
    long **mas=NULL;
    mas=date(mas,x1,y1);
    for(int i=0;i<x1;i++)
   for(int j=0;j<y1;j++)
   mas[i][j] = mas1[i][j] + mas2[i][j];
  return mas;
}
long** p(long **mas1,long **mas2,int x1,int y1,int x2,int y2){
    if(y1!=x2){
     cout<<"Error 404 :D,PA3MEPHOCTb MATRIXS HE BEPHA";
     return 0;
    }
        long **mas=NULL;
        mas=date(mas,x1,y2);
     for(int i=0;i<x1;i++)
     for(int j=0;j<y2;j++) 
      for (int k=0;k<y1;k++) 
          mas[i][j]+=mas1[i][k]*mas2[k][j];
   
     return mas;
}
 
 
 
int main(){
        int n,m;
        long **A=NULL,**B =NULL,**C =NULL,**D =NULL,**E=NULL,**F=NULL,**G=NULL,**H=NULL,**I=NULL, **J = NULL;
        cout <<"Введите размерности для матриц:\n\t\t\t\tn=";  
        cin >> n;
        cout << "\t\t\t\tm=";
        cin >>m;
        cout << endl;
        A = date(A,n,m);
        B = date(B,m,n);
        C = date(C,n,n);
        D = date(D,n,m);
 
        ran(A,n,m);
        ran(B,m,n);
        ran(C,n,n);
        ran(D,n,m);
        cout<<endl<<endl<<"Input MATRIX"<<endl<<endl;
        print(A,n,m);
        cout<< endl<<endl;
        print(B,m,n);
        cout<<endl<<endl;
        print(C,n,n);
        cout<<endl<<endl;
        print(D,n,m);
        cout<<endl<<endl;
        
        cout<<endl<<endl<<"Output MATRIX :"<<endl<<endl;
        cout<<"\n A*B: \n";
        E = p(A,B,n,m,m,n);
        if(!E){
        cout << "Sorry, but the further calculations are not possible. We stop program work...";
        return -3;} 
        print(E,n,n);
        getch();
 
        cout<<"\n C*C: \n";
        F = p(C,C,n,n,n,n);
        if(!F){
        cout << "Sorry, but the further calculations are not possible. We stop program work...";
        return -4;} 
        print(F,n,n);
        getch();
        
        cout<<"\n A*B + C*C: \n";
        G = sum(E,F,n,n,n,n);
        if(!G){
        cout << "Sorry, but the further calculations are not possible. We stop program work...";
        return -5;} 
        print(G,n,n);
        getch();
 
        cout<<"\n A + D: \n";
        H = sum(A,D,n,m,n,m);
        if(!H){
        cout << "Sorry, but the further calculations are not possible. We stop program work...";
        return -6;} 
        print(H,n,m);
        getch();
        
        cout<<"\n (A*B + C*C)*(A + D): \n";
        I = p(G,H,n,n,n,m);
        if(!I){
        cout << "Sorry, but the further calculations are not possible. We stop program work...";
        return -7;} 
        print(I,n,m);
        getch();
        
    
        delet(A,n,m);
        delet(B,m,n);
        delet(C,n,n);
        delet(D,n,m);
        return 0;
}
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
19.03.2011, 02:03
easybudda,

Не по теме:

C++
1
delete_matrix(dump_matrix(fill_matrix(new_matrix(r, c), r, c), r, c), r); // гы :)
Да, Вы, батенька, извращенец)))

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.03.2011, 02:03
Помогаю со студенческими работами здесь

не хочет работать код((((
#include &lt;iostream.h&gt; #include &lt;fstream.h&gt; #include &lt;limits.h&gt; #include &lt;locale.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; ...

strtok в си++ не хочет работать
надо разбить строку на лексеммы, но почему-то не идет дело, не подскажете почему? У меня MasString содержит строки: Best scores: 1)...

Код не хочет работать
Не могу понять,почему не работает. Помогите пожалуйста #include &lt;string&gt; #include &lt;iostream&gt; using namespace std; enum...

Макрос не хочет работать
Привет всем! У меня не компилируется проект, ошибка, мб кто-то подскажет что не так, т.к. задача простая, но от чего-то у меня она не...

Почему не хочет работать код?
Если динамическое выделение памяти, то работать не хочет. #include &lt;iostream&gt; #include &lt;cstdio&gt; using namespace std; int...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru