Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.79/14: Рейтинг темы: голосов - 14, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 47
1

Не работает программа на Borland C++

28.10.2010, 18:33. Показов 2569. Ответов 13
Метки нет (Все метки)

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
#include <iostream>
#include <iomanip>
#include <clocale>
using namespace std;
////////////////// class //////////////////
class MyArray{
    typedef int type; // масив 
    typedef unsigned int uint;
    type ** m_Array;
    void NewArray( uint row, uint col ); // выделение памяти для массива
public:
    uint m_Row, m_Col;
    MyArray( const MyArray & ar );// конструктор копирования
    MyArray( uint row, uint col );// конструктор 
    MyArray & operator=( const MyArray & ar );// конструктор с параметром
    ~MyArray();
    void ZeroArray(); 
    void Print(); // вывод массива
    void Set( uint row, uint col, type data ); 
    type & operator()( uint row, uint col ); 
    
    friend void Run( const MyArray & ar ); 
};
 
 
 
///////////////////// function //////////////////////
void MyArray::NewArray(MyArray::uint row, MyArray::uint col){
    m_Row = row;
    m_Col = col;
    m_Array = new type*[m_Row];
    for( uint i = 0; i<m_Row; ++i )
        m_Array[i] = new type[m_Col]; 
}
 
MyArray::MyArray(const MyArray &ar){
    NewArray( ar.m_Row, ar.m_Col );
   
    for( uint i =0; i< m_Row; ++i )
        for( uint j=0; j<m_Col; ++j )
            m_Array[i][j] = ar.m_Array[i][j];
}
 
MyArray::MyArray(MyArray::uint row, MyArray::uint col){
    NewArray( row, col );
    ZeroArray(); 
}
 
MyArray & MyArray::operator =(const MyArray &ar){
    if( this == &ar ) return *this; 
    for( uint i=0; i<m_Row; ++i )
        delete [] m_Array[i];
    delete [] m_Array;
    NewArray( ar.m_Row, ar.m_Col );
 
    for( uint i =0; i< m_Row; ++i )
        for( uint j=0; j<m_Col; ++j )
            m_Array[i][j] = ar.m_Array[i][j];
}
MyArray::~MyArray(){
    for( uint i=0; i<m_Row; ++i )
        delete [] m_Array[i];
    delete [] m_Array;
}
void MyArray::ZeroArray(){
    for( uint i =0; i< m_Row; ++i )
        for( uint j=0; j<m_Col; ++j )
            m_Array[i][j] = type();
}
 
void MyArray::Print(){
    cout << "\nMassiv: " << m_Row << " x " << m_Col << " \n";
    for( uint i =0; i< m_Row; ++i ){
        for( uint j=0; j<m_Col; ++j )
            cout << std::setw(4) << m_Array[i][j];
        cout << "\n";
    }
}
void MyArray::Set(MyArray::uint row, MyArray::uint col, MyArray::type data){
    if( row <= m_Row && col <= m_Col )
        m_Array[row][col] = data;
}
MyArray::type & MyArray::operator ()(MyArray::uint row, MyArray::uint col){
    return m_Array[row][col];
}
 
void Run( const MyArray & ar ){
MyArray::uint i, j,minel, temp,min_i,maxj,i1;
 
minel=ar.m_Array[0][0];
for (i=0; i < ar.m_Col; i++)   
{ for (j=0; j < ar.m_Row; j++)  
{ if (ar.m_Array[i][j] < minel) 
{
minel = ar.m_Array[i][j];
maxj = j;                    
}}}
cout << "\nMin elem = " << minel;              
cout << "; Stolbec = " << maxj<<endl; 
 
for(i = 0; i <4-1;++i)
{
  min_i = i;
  for (i1=i+1; i1<4;++i1)
  {
  if (ar.m_Array[i1][maxj] < ar.m_Array[min_i][maxj]){
  min_i = i1;  } }
temp = ar.m_Array[i][maxj];
ar.m_Array[i][maxj] = ar.m_Array[min_i][maxj];                               
ar.m_Array[min_i][maxj] = temp; }       
 
cout << "Ryadok: "<<endl;           
for (i=0;i<4;i++)
{
  cout <<ar.m_Array[i][maxj]<<"\n";   
  }}
 
//////////////////// Main ////////////////////////
int main(){
 int i,j;
    MyArray ar( 4, 4 );
    
    for (i=0;i<4;i++)
{
for (j=0;j<4;j++)
{
ar(i,j) = rand() % 10; 
}}    
 
    ar.Print();
    Run(ar);
    cin.sync();
    cout << "\nPress Enter...";
    getchar(); 
    return 0;
}
Компиляция и запуск программы на Dev C++ прошел успешно, но когда попробовал в Borland C++, то борландовский компилятор ругается на ошибки в коде.
Помогите исправить.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2010, 18:33
Ответы с готовыми решениями:

С++ Borland 6.0, написал код, ошибки нет, но программа не работает
в общем надо лабу сделать, уже 2 пары маюсь и не могу понять где шибка код написал, ошибок не...

Программа в Visual Studio работает, а в Borland C++ нет
Здравствуйте! У меня такая проблемма: программа работает на Visual Studio, а на Borland C++ выдает...

Метод "Золотого сечения". Программа не работает под Borland 3.1
Метод золотого сечения #include &lt;vcl.h&gt; #pragma hdrstop #include &lt;math&gt; #include...

Borland C++ работает на OS 7 ?
Borland C++ работает на OS 7 ? Не дублируйте темы - это нарушает правила форума.

13
Jesus loves me
Эксперт С++
5170 / 3143 / 353
Регистрация: 12.12.2009
Сообщений: 7,933
Записей в блоге: 2
28.10.2010, 19:06 2
tj9lk, может ошибки напишите, а то сегодня Венера зашла за Марс и телепатический канал (который юзают форумчане) перекрылся)
А вообще DEV_C++ много чего может скомпилить, на что другие IDE ругаются, например:
C++
1
2
3
string A="HELLO ";
string B="WORLD!";
string C=A+B;
DEV_C++ это скомпилит без проблем, другие компиляторы запросят "#include<string>"
0
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 47
28.10.2010, 19:23  [ТС] 3
Блин, а я забыл про то что сегодня особый день для телепатов))
[C++ Warning] Unit1.cpp(59): W8070 Function should return a value
[C++ Warning] Unit1.cpp(93): W8012 Comparing signed and unsigned values
0
22 / 22 / 5
Регистрация: 18.03.2010
Сообщений: 329
28.10.2010, 19:58 4
Цитата Сообщение от tj9lk Посмотреть сообщение
Блин, а я забыл про то что сегодня особый день для телепатов))
По всей видимости, у вас первая ошибка говорит о том что функция должна вернуть некое значение, тоесть

C++
1
2
3
4
5
6
7
8
9
10
11
int calc()
{
int a,b;
int summa;
a=1;
b=2;
summa=a+b;
 
 
return summa;
}
0
Jesus loves me
Эксперт С++
5170 / 3143 / 353
Регистрация: 12.12.2009
Сообщений: 7,933
Записей в блоге: 2
28.10.2010, 20:36 5
Цитата Сообщение от tj9lk Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
MyArray & MyArray::operator =(const MyArray &ar){
    if( this == &ar ) return *this; 
    for( uint i=0; i<m_Row; ++i )
        delete [] m_Array[i];
    delete [] m_Array;
    NewArray( ar.m_Row, ar.m_Col );
 
    for( uint i =0; i< m_Row; ++i )
        for( uint j=0; j<m_Col; ++j )
            m_Array[i][j] = ar.m_Array[i][j];
}
Здесь нужно вернуть объект, а вообще у вас не ошибки, а предупреждения, т.е. код компилится, исполняемый файл создается. Попробуйте его запустить.
0
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 47
28.10.2010, 20:56  [ТС] 6
Не запускается, выдает еще ошибки, попробуйте запустить у себя.
0
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 47
31.10.2010, 15:24  [ТС] 7
При попытке запустить программу такие ошибки:
[Linker Error] Unresolved external '__InitVCL' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\CP32MTI.LIB|crtlvcl
[Linker Error] Unresolved external '__ExitVCL' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\CP32MTI.LIB|crtlvcl
Добавлено через 41 минуту
При попытке запустить программу такие ошибки:
[Linker Error] Unresolved external '__InitVCL' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\CP32MTI.LIB|crtlvcl
[Linker Error] Unresolved external '__ExitVCL' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\CP32MTI.LIB|crtlvcl
0
Эксперт С++
3943 / 1798 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
31.10.2010, 15:30 8
tj9lk, при создании консольного проекта вы забыли указать "Use VCL".
0
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 47
31.10.2010, 16:07  [ТС] 9
Цитата Сообщение от MikeSoft Посмотреть сообщение
tj9lk, при создании консольного проекта вы забыли указать "Use VCL".
Нет, я указывал, сейчас я убрал Usus VCL и все работает, но на Turbo C++ такие ошибки:
Multiple declaration for i (строка 52)
Type qualifier 'std' must be a struct or class name (строка 77)
Statesment missing (строка 77)
'Myarray::type' is not accessible (строка 85)
0
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 47
02.11.2010, 17:47  [ТС] 10
Кто нибудь поможет?

Добавлено через 23 часа 25 минут
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
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
#include <stdlib.h>
#ifndef
////////////////// class //////////////////
class MyArray {
    typedef int type; 
    typedef unsigned  int uint;
    type ** m_Array;
    void NewArray( uint row, uint col );
public:
    uint m_Row, m_Col;
    MyArray( const MyArray & ar );
    MyArray( uint row, uint col );
    MyArray & operator=( const MyArray & ar );
    ~MyArray();
    void ZeroArray();
    void Print();
    void Set( uint row, uint col, type data );
    type & operator()( uint row, uint col );
    friend void Run( const MyArray & ar );
};
#endif
///////////////////// function //////////////////////
void MyArray::NewArray(MyArray::uint row, MyArray::uint col){
    m_Row = row;
    m_Col = col;
    m_Array = new type*[m_Row];
    for( uint i = 0; i<m_Row; ++i )
    m_Array[i] = new type[m_Col];
}
MyArray::MyArray(const MyArray &ar){
    NewArray( ar.m_Row, ar.m_Col );
    for( uint i =0; i< m_Row; ++i )
    for( uint j=0; j<m_Col; ++j )
        m_Array[i][j] = ar.m_Array[i][j];
}
MyArray::MyArray(MyArray::uint row, MyArray::uint col){
    NewArray( row, col );
    ZeroArray();
}
MyArray & MyArray::operator =(const MyArray &ar){
uint i,j;
    if( this == &ar ) return *this;
    for( i= 0; i<m_Row; ++i )
    delete [] m_Array[i];
    delete [] m_Array;
    NewArray( ar.m_Row, ar.m_Col );
    for(  i =0; i< m_Row; ++i )
    for(  j=0; j<m_Col; ++j )
        m_Array[i][j] = ar.m_Array[i][j];
}
MyArray::~MyArray(){
uint i;
    for( i=0; i<m_Row; ++i )
    delete [] m_Array[i];
    delete [] m_Array;
}
void MyArray::ZeroArray(){
    for( uint i =0; i< m_Row; ++i )
    for( uint j=0; j<m_Col; ++j )
        m_Array[i][j] = type();
}
void MyArray::Print(){
    cout << "\nMassiv: " << m_Row << " x " << m_Col << " \n";
    for( uint i =0; i< m_Row; ++i ){
    for( uint j=0; j<m_Col; ++j )
        cout <<setw(4) << m_Array[i][j];             //        wwaahh!
    cout << "\n";
    }
}
void MyArray::Set(MyArray::uint row, MyArray::uint col, MyArray::type data){
    if( row <= m_Row && col <= m_Col )
    m_Array[row][col] = data;
}
MyArray::type & MyArray::operator ()(MyArray::uint row, MyArray::uint col){
    return m_Array[row][col];
}  
void Run( const MyArray & ar ){
MyArray::uint i, j,minel, temp,min_i,maxj,i1;
minel=ar.m_Array[0][0];
for (i=0; i < ar.m_Col; i++)
{ for (j=0; j < ar.m_Row; j++)
{ if (ar.m_Array[i][j] < minel)
{
minel = ar.m_Array[i][j];
maxj = j;
}}}
cout << "\nMin elem = " << minel;
cout << "; Stolbec = " << maxj<<endl;
for(i = 0; i <4-1;++i)
{
  min_i = i;
  for (i1=i+1; i1<4;++i1)
  {
  if (ar.m_Array[i1][maxj] < ar.m_Array[min_i][maxj]){
  min_i = i1;  } }
temp = ar.m_Array[i][maxj];
ar.m_Array[i][maxj] = ar.m_Array[min_i][maxj];
ar.m_Array[min_i][maxj] = temp; }
cout << "Ryadok: "<<endl;
for (i=0;i<4;i++)
{
  cout <<ar.m_Array[i][maxj]<<"\n";
  }}
//////////////////// Main ////////////////////////
int main(){
 int i,j;
    MyArray ar( 4, 4 );
    for (i=0;i<4;i++)
{
for (j=0;j<4;j++)
{
ar(i,j) = rand() % 10;
}}
    ar.Print();
    Run(ar);
    cin.sync();
    cout << "\nPress Enter...";
    getch();
    return 0;
}
Осталась одна ошибка:
'Myarray::type' is not accessible (строка 77)
0
10 / 10 / 1
Регистрация: 17.07.2010
Сообщений: 44
02.11.2010, 18:14 11
Попробуйте убрать MyArray перед type.
а вообще почему type? пускай инт так и остается тоже ведь самое.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class MyArray{
    //typedef int type; // масив 
    typedef unsigned int uint;
    int ** m_Array;
    void NewArray( uint row, uint col ); // выделение памяти для массива
public:
    uint m_Row, m_Col;
    MyArray( const MyArray & ar );// конструктор копирования
    MyArray( uint row, uint col );// конструктор 
    MyArray & operator=( const MyArray & ar );// конструктор с параметром
    ~MyArray();
    void ZeroArray(); 
    void Print(); // вывод массива
    void Set( uint row, uint col, int data ); 
    type & operator()( uint row, uint col ); 
    
    friend void Run( const MyArray & ar ); 
};
и type на int переправить
0
Фрилансер
3684 / 2055 / 565
Регистрация: 31.05.2009
Сообщений: 6,684
02.11.2010, 18:29 12
А для чего typedef внутри класса? Да еще в части private?
0
0 / 0 / 0
Регистрация: 25.10.2009
Сообщений: 47
02.11.2010, 22:07  [ТС] 13
Цитата Сообщение от Bernarditto Посмотреть сообщение
Попробуйте убрать MyArray перед type.
а вообще почему type? пускай инт так и остается тоже ведь самое.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class MyArray{
    //typedef int type; // масив 
    typedef unsigned int uint;
    int ** m_Array;
    void NewArray( uint row, uint col ); // выделение памяти для массива
public:
    uint m_Row, m_Col;
    MyArray( const MyArray & ar );// конструктор копирования
    MyArray( uint row, uint col );// конструктор 
    MyArray & operator=( const MyArray & ar );// конструктор с параметром
    ~MyArray();
    void ZeroArray(); 
    void Print(); // вывод массива
    void Set( uint row, uint col, int data ); 
    type & operator()( uint row, uint col ); 
    
    friend void Run( const MyArray & ar ); 
};
и type на int переправить
Пробовал, переправлял, ничего не получилось...
0
10 / 10 / 1
Регистрация: 17.07.2010
Сообщений: 44
02.11.2010, 23:49 14
Вы во всем коде исправили,не только в той части что я написал? Везде в коде type на int заменить и в 15 строке
C++
1
 [I]int[/I] & operator()( uint row, uint col ); //ошибся малость
. Ну и убрать MyArray::type и вместо него поставить int просто
C++
1
2
MyArray::type & MyArray::operator ()(MyArray::uint row, MyArray::uint col){
    return m_Array[row][col];
.
И должно поидее заработать, а если нет то уже другая ошибка. И насчет typedef это вы зря наверное..
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.11.2010, 23:49

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Работает в Borland Developer Studio 2006 но не работает в Visual Studio 2008, почему?
Вводим строку и меняем в ней первый и последний символы. Всё хорошо в Borland Developer Studio, а...

программа на Borland Pascal
привет всем! мне нужна огромная помощь, просто надо написать большую программу на Borland Pascal....

Не пускается программа в Borland C++ 3
Добрый день! Не могу больше! Я пишу программу для PC совместимого контроллера и надо ее писать в...

Не работает цикл for С++ Borland
Элементарная программа: #include &lt;iostream.h&gt; #include &lt;graphics.h&gt; #include &lt;math.h&gt; #include...


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

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

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