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

turbo c++ и что-то непонятное - C++

Восстановить пароль Регистрация
 
Бу
1 / 1 / 0
Регистрация: 10.12.2010
Сообщений: 22
18.12.2010, 20:54     turbo c++ и что-то непонятное #1
Это задание по C++ на динамическое выделение памяти.
Вылетает при освобождении памяти. Компилятор Turbo C++(другой нельзя). На одном из компов иногда работает, на других никак(
Помогите пожалуйста найти ошибку..
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
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <conio.h>
void ran(int **matr, int n, int m)
{
int i,j;
//generatsija elemenotov
for (i=0; i<n; i++)
    for (j=0; j<m; j++)
    matr[i][j]=rand()%100;
}
void print(int **matr, int n, int m)
//funktsija vivoda matritsi
{
int i,j;
for (i=0; i<n; i++)
    {
    for (j=0; j<m; j++)
    {
    printf (" %d ", matr[i][j]);
    }
    printf ("\n");
    }
    printf("\n");
}
void vm (int **mA, int **mB, int **mC, int n, int m)
{
int i,j;
// Vychitanie matrits:
 printf ("Matrix C=A-B:\n");
 for (i=0; i<n; i++)
    for (j=0; j<m; j++)
         mC[i][j]=mA[i][j]-mB[i][j];
 print (mC, n, m);
 
}
void mult (int **matr, int n, int m)
{
int i,j,t;
// Umnozhenie matritsy C na chislo:
 printf ("Number for multiplication: ");
 scanf ("%d", &t);
 for (i=0; i<n; i++)
    for (j=0; j<m; j++)
         matr[i][j]=matr[i][j]*t;
 printf ("Matrix C (after multiplication):\n");
 print (matr, n, m);
 
}
void cpur (int **matr, int n, int m)
{
int i,j;
// Raschet sleda:
 if (n<m)    //na sluchaj esli matritsa ne kvadratnaja
    {
     i=n;  
    }      
 else
    {
    i=m;
    };
 int s=0;
 for (j=0; j<i; j++)
    s=matr[j][j]+s;
 printf ("Cpur of matrix C: %d", s);
 
}
 
void main ()
{
 clrscr;
 int **mA, **mB,**mC, n,m, i,j;
 //vvod razmernosti
 printf ("Count of rows: ");
 scanf ("%d", &n);
 printf ("\nCount of columns: ");
 scanf ("%d", &m);
// dinamicheskoe vydelenie pamjati:
 mA = new int * [n];  //sna4ala vidilaem pamat' dlja 1go el-ta kazhdoj stroki
    for (i=0; i<n; i++)   //potom dlja vseh ostal'nih
        mA = new int*[m];
 mB = new int * [n];
    for (i=0; i<n; i++)
        mB = new int*[m];
 mC = new int * [n];
    for (i=0; i<n; i++)
        mC = new int*[m];
// Izmenenie jadra randoma:
 time_t tm;
srand (time (&tm));
// Zapolnenie chislami:
 ran (mA, n, m);
 ran (mB, n, m);
// Vyvod ishodnyh matrits cherez funktsiju print:
 printf ("Matrix A:\n");
 print (mA, n, m);
 printf ("Matrix B:\n");
 print (mB, n, m);
vm (mA,mB,mC,n,m);
mult(mC, n, m);
cpur (mC, n, m);
getch();                     [B]до этого места все работает[/B]
// Osvobozhdenie pam'jati, videlennoj pod massivy:
 for (i=0; i<n; i++)
    delete[] mA[i];
 delete [] mA;
 for (i=0; i<n; i++)
    delete[] mB[i];
 delete [] mB;
 for (i=0; i<n; i++)
    delete[] mC[i];
 delete [] mC;
 getch ();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2010, 20:54     turbo c++ и что-то непонятное
Посмотрите здесь:

C++ непонятное строка?
непонятное строка? C++
Непонятное значение C++
C++ Непонятное выражение
C++ Что-то непонятное с памятью
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
18.12.2010, 20:56     turbo c++ и что-то непонятное #2
Бу, new-delete ето функции С++, для С существуют функцииmalloc-free!!!
Бу
1 / 1 / 0
Регистрация: 10.12.2010
Сообщений: 22
18.12.2010, 21:09  [ТС]     turbo c++ и что-то непонятное #3
так это C++.
и new то работает, да и delete работает, но только иногда и только на одном из 4х компьютеров, на которых проверяла... и еще проблема с заполнением случайными числами, во второй матрице вторая строка иногда нормальная, а иногда там большие числа, хотя должны быть до 100
Kenwood2010
48 / 59 / 7
Регистрация: 26.11.2010
Сообщений: 192
18.12.2010, 21:22     turbo c++ и что-то непонятное #4
перед первым удалением (очиской памяти) n равна 455!
что выходит за рамки массива.

на 74 строке сделай так:
C++
1
int **mA, **mB,**mC, n = 0, m=0, i=0, j=0;
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
18.12.2010, 21:28     turbo c++ и что-то непонятное #5
Цитата Сообщение от Бу Посмотреть сообщение
C++
1
2
3
mA = new int * [n];
    for (i=0; i<n; i++)
        mA = new int*[m]; // Посмотри на эту строчку внимательнее. Ещё внимательнее.
А ещё:
В C++ main должен возвращать int.
Для вызова функции нужны скобки (это про clrscr).
Kenwood2010
48 / 59 / 7
Регистрация: 26.11.2010
Сообщений: 192
18.12.2010, 21:36     turbo c++ и что-то непонятное #6
Прогнал на Turbo C++ 3.0 работает без ошибок!!!
Бу
1 / 1 / 0
Регистрация: 10.12.2010
Сообщений: 22
18.12.2010, 21:37  [ТС]     turbo c++ и что-то непонятное #7
спасибо. но насчет смотреть внимательнее я не понимаю о чем речь, я на самом деле только на делфи и паскале что-то понимаю, а это писала по найденнным в интернетах образцах синтаксиса(
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
18.12.2010, 21:37     turbo c++ и что-то непонятное #8
Цитата Сообщение от Бу Посмотреть сообщение
так это C++.
У вас ето смемь С и С++. Вообще ето нехороший тон смешывать языки!!!
Бу
1 / 1 / 0
Регистрация: 10.12.2010
Сообщений: 22
18.12.2010, 21:41  [ТС]     turbo c++ и что-то непонятное #9
C++
1
2
3
mA = new int * [n];
        for (i=0; i<n; i++)
                mA[i] = new int*[m];
так надо?
Kenwood2010
48 / 59 / 7
Регистрация: 26.11.2010
Сообщений: 192
18.12.2010, 21:44     turbo c++ и что-то непонятное #10
C++
1
2
3
 mA = new int * [n];
        for (i=0; i<m; i++)
                mA[i] = new int*[m];
Добавлено через 37 секунд
выскакивает ошибка когда матрица имеет разное количество строк и столбцов!
и еще
замени clrscr на clrscr();
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
18.12.2010, 22:02     turbo c++ и что-то непонятное #11
Цитата Сообщение от Бу Посмотреть сообщение
так надо?
да
Цитата Сообщение от Kenwood2010 Посмотреть сообщение
выскакивает ошибка когда матрица имеет разное количество строк и столбцов!
цикл до n
Бу
1 / 1 / 0
Регистрация: 10.12.2010
Сообщений: 22
18.12.2010, 22:10  [ТС]     turbo c++ и что-то непонятное #12
Цитата Сообщение от Бу Посмотреть сообщение
C++
1
2
3
mA = new int * [n];
        for (i=0; i<n; i++)
                mA[i] = new int*[m];
так надо?
нет, это не работает.... а как тогда надо....
Пробовало еще так, но тоже не работает...
mA*[i] = new int*[m]
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
18.12.2010, 22:11     turbo c++ и что-то непонятное #13
Цитата Сообщение от Бу Посмотреть сообщение
mA[i] = new int*[m];
C++
1
mA[i] = new int[m];
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2010, 22:14     turbo c++ и что-то непонятное
Еще ссылки по теме:

Программа выводит что-то непонятное C++
fread творит что-то непонятное C++
C++ Namespace & #include что-то непонятное

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

Или воспользуйтесь поиском по форуму:
Бу
1 / 1 / 0
Регистрация: 10.12.2010
Сообщений: 22
18.12.2010, 22:14  [ТС]     turbo c++ и что-то непонятное #14
дааа, так работает, спасибо))))
Yandex
Объявления
18.12.2010, 22:14     turbo c++ и что-то непонятное
Ответ Создать тему
Опции темы

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