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

почему link выдает ошибку? - C++

Восстановить пароль Регистрация
 
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
12.12.2011, 23:05     почему link выдает ошибку? #1
Добрый вечер.
Программа компилируется,но линк выдает ошибку... что в программе не так?
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
#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
#include <iomanip>
using namespace std;
 
void f(); 
void g();
int main ()
{
f();
g();
cout<<"THIS IS INFORMATIKA!!!"<<endl;
 
return 0; 
}
 
void f(int **mas) // ???? ?-???
{
int n, m, i, j, j1; 
double dva, ras;
cout<<"storko: "<< endl;cin>>n;
if (n<0) cout<<"error"<<endl;
else
cout<<"\nstolbci "<< endl;
cin>>m;
if (m<0) cout<<"error"<<endl;
else
mas=new int*[n]; 
for(i=0; i<n; i++)
mas[i]=new int[m];
cout<<"\nelementi: "<< endl;
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
cout<<"["<<i+1<<"]["<<j+1<<"]= ";
cin>>mas[i][j];
}
cout<<"\nMatrice"<<endl;
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
cout<<mas[i][j];
}
cout<<endl;
}
for(j=0; j<m-1; j++)
for(j1=0; j1<m-1-j; j1++)
{
ras=dva=0;
for(i=0; i<n; i++)
{
if(mas[i][j1]<0 && abs(mas[i][j1])%2==0)
dva+=fabs(mas[i][j1]);
if(mas[i][j1+1]<0 && abs(mas[i][j1+1])%2==0)
ras+=fabs(mas[i][j1+1]);
}
if(dva>ras)
for(i=0; i<n; i++)
{
dva=mas[i][j1];
mas[i][j1]=mas[i][j1+1];
mas[i][j1+1]=dva;
}
}
cout<<"Novaya matrica"<<endl;
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
cout<<mas[i][j];
}
cout<<endl;
}
cout<<endl;
}
void g(int **mas,double summa,bool f1,int n,int m,int i,int j,int j1)
{
 
for(i=0; i<m; i++)
{ 
summa=0;
for(j=0; j<n; j++)
{
bool f1;
summa+=mas[j][i];
if(mas[j][i]<0)
bool f1;
f1=false;
}
cout<<"Stolbec"<<i+1;
cout<<"Summa"<<summa<<endl;
}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2011, 23:05     почему link выдает ошибку?
Посмотрите здесь:

C++ Почему выдает ошибку?
C++ Почему выдает ошибку ?
почему выдает ошибку C++
C++ Почему выдает ошибку
Выдает ошибку, не понимаю почему! C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bers
Заблокирован
12.12.2011, 23:23     почему link выдает ошибку? #2
1. Работает, но делает не то что надо. (описание неисправности)

2. Крошится в рантайме, под ругательства системы. (скриншот, или примерное описание текста сообщение системы)

3. Не компилируется. (Точный текст ошибки компилятора. Желательно - с указанием точных строчек кода, на которые ругнулся компилятор)

4. Не компонуется. (Точный текст ошибки компоновщика.)

Телепаты в отпуске.
Миниатюры
почему link выдает ошибку?  
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
12.12.2011, 23:36  [ТС]     почему link выдает ошибку? #3
Извините не знал что они в отпуске...
Миниатюры
почему link выдает ошибку?  
Bers
Заблокирован
12.12.2011, 23:38     почему link выдает ошибку? #4
C++
1
2
3
4
5
6
7
void f();  //здесь ты объявляешь прототипы функций
void g();
int main ()
{
f(); //здесь запускаешь на выполнение
g();
...
Теперь покажи, где в твоем коде присутствует реализация данных функций?
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
12.12.2011, 23:45  [ТС]     почему link выдает ошибку? #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
void f(int **mas) // ???? ?-???
{
int n, m, i, j, j1; 
double dva, ras;
cout<<"storko: "<< endl;cin>>n;
if (n<0) cout<<"error"<<endl;
else
cout<<"\nstolbci "<< endl;
cin>>m;
if (m<0) cout<<"error"<<endl;
else
mas=new int*[n]; 
for(i=0; i<n; i++)
mas[i]=new int[m];
cout<<"\nelementi: "<< endl;
for(i=0; i<n; i++)
for(j=0; j<m; j++)
{
cout<<"["<<i+1<<"]["<<j+1<<"]= ";
cin>>mas[i][j];
}
cout<<"\nMatrice"<<endl;
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
cout<<mas[i][j];
}
cout<<endl;
}
for(j=0; j<m-1; j++)
for(j1=0; j1<m-1-j; j1++)
{
ras=dva=0;
for(i=0; i<n; i++)
{
if(mas[i][j1]<0 && abs(mas[i][j1])%2==0)
dva+=fabs(mas[i][j1]);
if(mas[i][j1+1]<0 && abs(mas[i][j1+1])%2==0)
ras+=fabs(mas[i][j1+1]);
}
if(dva>ras)
for(i=0; i<n; i++)
{
dva=mas[i][j1];
mas[i][j1]=mas[i][j1+1];
mas[i][j1+1]=dva;
}
}
cout<<"Novaya matrica"<<endl;
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
cout<<mas[i][j];
}
cout<<endl;
}
cout<<endl;
}
void g(int **mas,double summa,bool f1,int n,int m,int i,int j,int j1)
{
 
for(i=0; i<m; i++)
{ 
summa=0;
for(j=0; j<n; j++)
{
bool f1;
summa+=mas[j][i];
if(mas[j][i]<0)
bool f1;
f1=false;
}
cout<<"Stolbec"<<i+1;
cout<<"Summa"<<summa<<endl;
}
}
это разве не сама функция?
Bers
Заблокирован
12.12.2011, 23:49     почему link выдает ошибку? #6
Обрати внимание, какой прототип ты объявляешь:
Цитата Сообщение от takewa Посмотреть сообщение
void f();
Какую функцию запускаешь:
Цитата Сообщение от takewa Посмотреть сообщение
f();
И какое у тебя тело:
Цитата Сообщение от takewa Посмотреть сообщение
void f(int **mas)
Найди отличия.
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
12.12.2011, 23:49  [ТС]     почему link выдает ошибку? #7
Цитата Сообщение от Bers Посмотреть сообщение
Обрати внимание, какой прототип ты объявляешь:


Какую функцию запускаешь:


И какое у тебя тело:


Найди отличия.
ну так я и запускаю f(); или что то не так?
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
12.12.2011, 23:53  [ТС]     почему link выдает ошибку? #8
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
#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
#include <iomanip>
using namespace std;
 
void f(); 
void g();
int main ()
{
    f();
    g();
    cout<<"THIS IS INFORMATIKA!!!"<<endl;
 
        return 0; 
}
 
void f() // ???? ?-???
{
    int **mas,  n, m, i, j, j1; 
    double dva, ras;
    cout<<"storko: "<< endl;cin>>n;
    if (n<0) cout<<"error"<<endl;
    else
        cout<<"\nstolbci "<< endl;
    cin>>m;
    if (m<0) cout<<"error"<<endl;
    else
        mas=new int*[n]; 
    for(i=0; i<n; i++)
        mas[i]=new int[m];
    cout<<"\nelementi: "<< endl;
    for(i=0; i<n; i++)
        for(j=0; j<m; j++)
        {
            cout<<"["<<i+1<<"]["<<j+1<<"]= ";
            cin>>mas[i][j];
        }
        cout<<"\nMatrice"<<endl;
        for(i=0; i<n; i++)
        {
            for(j=0; j<m; j++)
            {
                cout<<mas[i][j];
            }
            cout<<endl;
        }
        for(j=0; j<m-1; j++)
            for(j1=0; j1<m-1-j; j1++)
            {
                ras=dva=0;
                for(i=0; i<n; i++)
                {
                    if(mas[i][j1]<0 && abs(mas[i][j1])%2==0)
                        dva+=fabs(mas[i][j1]);
                    if(mas[i][j1+1]<0 && abs(mas[i][j1+1])%2==0)
                        ras+=fabs(mas[i][j1+1]);
                }
                if(dva>ras)
                    for(i=0; i<n; i++)
                    {
                        dva=mas[i][j1];
                        mas[i][j1]=mas[i][j1+1];
                        mas[i][j1+1]=dva;
                    }
            }
            cout<<"Novaya matrica"<<endl;
            for(i=0; i<n; i++)
            {
                for(j=0; j<m; j++)
                {
                    cout<<mas[i][j];
                }
                cout<<endl;
            }
            cout<<endl;
}
void g()
{int **mas;double summa;bool f1;int  n, m, i, j, j1;
 
    for(i=0; i<m; i++)
    { 
        summa=0;
        for(j=0; j<n; j++)
        {
            bool f1;
            summa+=mas[j][i];
            if(mas[j][i]<0)
                bool f1;
                f1=false;
        }
        cout<<"Stolbec"<<i+1;
        cout<<"Summa"<<summa<<endl;
    }
}
исправил сделал так. можно узнать как мне связать эти 2 функции g и F???
Миниатюры
почему link выдает ошибку?  
Bers
Заблокирован
12.12.2011, 23:54     почему link выдает ошибку? #9
Цитата Сообщение от takewa Посмотреть сообщение
ну так я и запускаю f(); или что то не так?
Ты запускаешь f()
А туловище прописано для void f(int **mas)

Внимательно изучи этот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
void Foo()
{
    std::cout<< "Foo\n";
}
 
void Foo(int Val)
{
    std::cout<< "Foo("<<Val<<")\n";
}
 
 
int main(int argc, char *argv[])
{
    Foo();
    Foo(10);
    
    return 0;
}
Добавлено через 48 секунд
Цитата Сообщение от takewa Посмотреть сообщение
исправил сделал так.
Ты все сделал неправильно.
Учи "функции в с++"
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
13.12.2011, 00:00  [ТС]     почему link выдает ошибку? #10
Напишу ка я лучше задание чтобы стало яснее. Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик. Найти сумму эл-ов в тех столбцах, которые содержат хотябы 1 отриц. эл-т.
Это задание нужно переделать под функицию, использовать глобальные переменные нельзя.

Добавлено через 4 минуты
Цитата Сообщение от Bers Посмотреть сообщение
Ты все сделал неправильно.
Учи "функции в с++"
почему неправильно? Программа же заработала?я не могу понять одного как мне их объеденить

Цитата Сообщение от Bers Посмотреть сообщение
Внимательно изучи этот код:
я понял только то что к Val присвоилось значение 10
Bers
Заблокирован
13.12.2011, 00:09     почему link выдает ошибку? #11
Цитата Сообщение от takewa Посмотреть сообщение
почему неправильно? Программа же заработала?
Потому что, вместо того, что бы понять причину, и исправить её, ты только что попытался бороться с последствиями, без понимания того, что посходит в твоей программе.

В результате:
1. Возвращение локальных переменных.
2. Попытки использовать неинициализированные переменные.

Все это либо приведёт к отказу работы, либо к неправильной работе.

Не нужно пытаться заставить код работать методом научного тыка. Нужно понимать, что делает твой код.

А ты даже не знаешь, как правильно функции на с++ объявляются и реализуются.
Учи матчасть.
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
13.12.2011, 01:01  [ТС]     почему link выдает ошибку? #12
Можете помочь переписать программу? Завтра защищать я просто не успею прочитать весь материал и понять что либо...А мне еще ковыряться с одномерным массивом...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2011, 15:17     почему link выдает ошибку?
Еще ссылки по теме:

почему выдает ошибку C++
C++ Почему выдает ошибку
C++ Почему не выдает ошибку?

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

Или воспользуйтесь поиском по форуму:
takewa
 Аватар для takewa
10 / 7 / 1
Регистрация: 15.08.2010
Сообщений: 372
14.12.2011, 15:17  [ТС]     почему link выдает ошибку? #13
Bers, я наконец то сделал эту лабу!!! только одно но...
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
#include <iostream>
#include <fstream>
#include <math.h>
#include <iomanip>
using namespace std;
 
void  perestanovka(int **mas,int n,int m){
        int  i, j, j1; 
                double  dva, ras;
                mas=new int*[n]; 
        for(i=0; i<n; i++)
                mas[i]=new int[m];
    for(j=0; j<m-1; j++)
       for(j1=0; j1<m-1-j; j1++)
           {
                   ras=dva=0;
                   for(i=0; i<n; i++)
                   {
                           if(mas[i][j1]<0 && mas[i][j1]%2==0)
                                   dva+=fabs(mas[i][j1]);
                           if(mas[i][j1+1]<0 &&  mas[i][j1+1]%2==0)
                                   ras+=fabs(mas[i][j1+1]);
                   }
                   if(dva>ras)
                           for(i=0; i<n; i++)
                           {
                                   dva=mas[i][j1];
                                   mas[i][j1]=mas[i][j1+1];
                                   mas[i][j1+1]=dva;
                           }
           }
}
void summa(int **mas,int n,int m)
{
    int  i, j;
 for(i=0; i<m; i++)
    {
       double  summa=0;
       
       for(j=0; j<n; j++)
       { bool fl;
                   summa+=mas[j][i];
                   if(mas[j][i]<0) 
                           fl=false;
           }
           cout<<"Stolbec"<<i+1;
                cout<<"Summa"<<summa<<endl;
              
 }
}
int main()
{
    const int n = 3, m = 3;
    
    int **mas = new int *[n]; 
    ifstream fin("D:\\test.txt", ifstream::in);
    if(!fin)
    {
        cout << " not found" << endl;
        return 1;
    }
    cout << "Matrix:" << endl;
    
    for(int i=0;i<n;i++)
    {
        mas[i] = new int[n];
        for(int j=0;j<n;j++)
        {
            fin >> mas[i][j];
            cout << setw(3) << mas[i][j];
        }
        cout << endl;
    }
 
    summa(mas,n,m);
    perestanovka(mas,n,m);
 
        system("pause");
    return 0; 
}
программа не делает перестановку
3 3 3
-4 -2 -1
1 1 1
должно стать
.....
-1 -2 -4
.....
помогите в чем беда?

Добавлено через 13 часов 9 минут
Ап тему
Yandex
Объявления
14.12.2011, 15:17     почему link выдает ошибку?
Ответ Создать тему
Опции темы

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