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

Не могу найти ошибку - C++

Восстановить пароль Регистрация
 
kinoman471
 Аватар для kinoman471
4 / 4 / 0
Регистрация: 18.04.2012
Сообщений: 58
10.06.2012, 09:52     Не могу найти ошибку #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
#include <iostream>
#include <cmath>
#define N = 3
using namespace std;
void vvodMatr(int a[][N], int n)
int poiskMax (int a[][N], int n)
void perestanovka(int a[][N], int n)
void print(int a[][N], int n)
int main()
{
    const int n = N;
    double a[n][n];
    vvodMatr(a,n);
    poiskMax(a,n);
    perestanovka(a,n);
    print(a,n);
    return 0;
}
void vvodMatr(int a[][N], int n)
 {
 int i,j;
 cout <<"Matriza a("<< n << "*" << n << "):" <<endl;
    for(i = 0; i < n; i++)
       {for(j = 0; j < n; j++)
          cin >> a[i][j];
       }
 }
 int poiskMax (int a[][N], int n)
 {
     int c,b,i,j;
     max = fabs(a[0][0]);
    for(i = 0; i < n; i++)
       for(j = 0; j < n; j++)
          {if(fabs(a[i][j]) > max)
             {max = fabs(a[i][j]);
             c = i;
             b = j;
             }
             return c;
             return b;
 }
 void perestanovka(int a[][N], int n])
 {
     int i,j,c,b;
      for (i = 0; i < n; i++)
    {
        int u = a[i][0];
        a[i][0] = a[i][b];
        a[i][b] = u;
    }
     for(j=0;j<n;j++){
         int u = a[0][j];
        a[0][j] = a[c][j];
        a[c][j] = u;
    }
 }
 void print(int a[][N], int n)
 {
     int i,j;
     for(int i=0;i<n;i++){
        for(int j=0;j<n;j++)
            cout<<a[i][j]<<"   ";
        cout<<endl;
 }
Ошибка в 5 и 19 строках . Не могу найти
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2012, 09:52     Не могу найти ошибку
Посмотрите здесь:

C++ Не могу найти ошибку...
ошибку не могу найти( C++
Не могу найти ошибку C++
Не могу найти ошибку C++
Не могу найти ошибку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
10.06.2012, 10:11     Не могу найти ошибку #2
Прототипы функций должны заканчиваться ;
kinoman471
 Аватар для kinoman471
4 / 4 / 0
Регистрация: 18.04.2012
Сообщений: 58
10.06.2012, 10:14  [ТС]     Не могу найти ошибку #3
Теперь ошибки в 5,6,7,8,11,19 строках.
В чем проблема?
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
10.06.2012, 10:16     Не могу найти ошибку #4
Функции принимают int, а передаются double. 12 строка.

+

в функции poiskMax
C++
1
2
             return c;
             return b;
непорядок
kinoman471
 Аватар для kinoman471
4 / 4 / 0
Регистрация: 18.04.2012
Сообщений: 58
10.06.2012, 10:19  [ТС]     Не могу найти ошибку #5
Исправил на int. Но ошибки все равно есть

Добавлено через 38 секунд
Цитата Сообщение от dimcoder Посмотреть сообщение
в функции poiskMaxКод C++
1
2 return c;
return b;
непорядок
Как надо?
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
10.06.2012, 10:20     Не могу найти ошибку #6
В 42 строке лишняя квадратная скобка.
Цитата Сообщение от kinoman471 Посмотреть сообщение
Как надо?
Просто возвращается только одно значение, в данном случае c.
kinoman471
 Аватар для kinoman471
4 / 4 / 0
Регистрация: 18.04.2012
Сообщений: 58
10.06.2012, 10:22  [ТС]     Не могу найти ошибку #7
Цитата Сообщение от dimcoder Посмотреть сообщение
В 42 строке лишняя квадратная скобка.
Это я уже исправил. Как из функции вернуть 2 числа?
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
10.06.2012, 10:28     Не могу найти ошибку #8
Цитата Сообщение от kinoman471 Посмотреть сообщение
Как из функции вернуть 2 числа?
Никак. Но есть варианты:
1) Передать в функцию по ссылке или указателю 2 числа, в функции их изменить как надо, и возвращаеть ничего не надо.
2) Передать туда же массив и его изменить

А лучше дай задание.
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
10.06.2012, 10:29     Не могу найти ошибку #9
Цитата Сообщение от kinoman471 Посмотреть сообщение
Это я уже исправил. Как из функции вернуть 2 числа?
Передать аргумент по ссылке и записать в него, или вернуть структуру. В C++ есть std:air.
kinoman471
 Аватар для kinoman471
4 / 4 / 0
Регистрация: 18.04.2012
Сообщений: 58
10.06.2012, 10:30  [ТС]     Не могу найти ошибку #10
Вот задача:
Задана квадратная матрица. Найти максимальный по модулю элемент матрицы. Перестановкой строк и столбцов перевести этот элемент в верхний левый угол матрицы.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
10.06.2012, 10:47     Не могу найти ошибку #11
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
#include <iostream>
#include <cmath>
const int N = 3;
 
using namespace std;
 
void vvodMatr(int a[][N]);
void poiskMax (int a[][N], int&, int&);
void perestanovka(int a[][N], int, int);
void print(int a[][N]);
 
int main()
{
    int a[N][N];
    int maxX, maxY;
    vvodMatr(a);
    poiskMax(a, maxX, maxY);
    perestanovka(a, maxX, maxY);
    cout << endl;
    print(a);
    system("PAUSE > NULL");
    return 0;
}
 
void vvodMatr(int a[N][N])
{
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
            cin >> a[i][j];
}
 
void poiskMax(int a[N][N], int &x, int &y)
{
    x = 0;
    y = 0;
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
            if (a[i][j] > a[x][y])
            {
                x = i;
                y = j;
            }
}
 
void perestanovka(int a[N][N], int x, int y)
{
    for (int i = 0; i < N; i++)
    {
        int buf = a[0][i];
        a[0][i] = a[x][i];
        a[x][i] = buf;
    }
    //Сюда можешь вставить print(a); что бы увидеть как точно все переставляется
    for (int i = 0; i < N; i++)
    {
        int buf = a[i][0];
        a[i][0] = a[i][y];
        a[i][y] = buf;
    }
}
 
void print(int a[N][N])
{
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
            cout << a[i][j] << " ";
        cout << endl;
    }
}
Будут вопросы, спрашивай.
kinoman471
 Аватар для kinoman471
4 / 4 / 0
Регистрация: 18.04.2012
Сообщений: 58
10.06.2012, 10:55  [ТС]     Не могу найти ошибку #12
Спасибо. Только что означает &x. Это указатель?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2012, 11:04     Не могу найти ошибку
Еще ссылки по теме:

C++ не могу найти ошибку
Не могу найти ошибку C++
C++ Не могу найти ошибку

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

Или воспользуйтесь поиском по форуму:
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
10.06.2012, 11:04     Не могу найти ошибку #13
kinoman471, это ссылка. Здесь идет передача переменной в функцию и ты ее изменяешь там. То есть если бы ты передавал без &, то создались бы копии тех переменных, которые передаешь и изменялись бы соответственно именно копии. Почитай про указатели и ссылки.
Yandex
Объявления
10.06.2012, 11:04     Не могу найти ошибку
Ответ Создать тему
Опции темы

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