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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
#1

Ошибка в передаче параметров - C++

09.12.2010, 22:51. Просмотров 404. Ответов 6
Метки нет (Все метки)

Доброй ночи. форумчане, помогите в решении такой программы: получает матрицу из файла или клавы или рандомом по выбору пользователя, и выполняет с ней перестановку.... перестановка не важно. дело в том, что исправив прогу под динамическое распределение памяти для матрицы у меня выдало больше 30 ошибок, поудалял параметры в скобках функций при вызове, ошибок стало меньше... испоганил ее вообще....
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
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <conio.h>
 
using std::cout;
using std::cin;
using std::endl;
using std::gets;
int **arr,m=0,num_min=0,num_max=0,minimum=0,maximum=0;
int inp_file()
{
    FILE *f;
    char fname [80];
    cout<<"Vvedite polnoe nazvanie fayla: \n";
    gets(fname);
    f=fopen(fname,"rt");
    if(f)
    {
        while(!feof(f))
        {
            if(fgetc(f)=='\n')
                m++;
        }
        fseek(f,0,SEEK_SET);
        arr = new int * [m];
        for (int i=0;i<m;i++)
        {
            arr[i]=new int [m];
        }
        for (int i=0;i<m;i++)
        {
            for (int j=0;j<m;j++)
                fscanf(f,"%d",&arr[i][j]);
        }
        fclose(f);
        return **arr;
    }
    else 
    {
        cout<<"Oshibka otkritiya!\n";
        return 0;
    }
}
int keyb(int m)
{for(int i=0; i<m; i++)
    {arr[i]=new int[m];
        for(int j=0; j<m; j++)
            {cout<<"arr["<<i<<"]["<<j<<"]"<<"=";
            cout<<endl;
            cin>>arr[i][j];
        }}
            return **arr;
}
 
int rand(int m)
 {
 for(int i=0; i<m; i++)
    {arr[i]=new int[m];
        for(int j=0; j<m; j++)
        arr[i][j]=rand()%89+10;
    }
 return **arr;
 } 
 
void search (int **arr,int &num_min, int &num_max, int m)
{minimum=arr[0][0];
 maximum=arr[0][0];
  for (int i=0; i<m;i++)
  {for (int j=0;j<m;j++)
        {if(arr[i][j]<minimum) {minimum=arr[i][j]; num_min=i;}
        if(arr[i][j]>maximum) {maximum=arr[i][j]; num_max=i;}
  }}
               
}
 
int** change (int **arr, int m, int num_min, int num_max)
{ int v;
    for(int j=0;j<m;j++)
{v=arr[num_min][j];
arr[num_min][j]=arr[num_max][j];
arr[num_max][j]=v;}
return arr;
}
void outn(int **arr, int m)
    {cout<<"Начальная матрица: "<<endl;
    for(int i=0; i<m; i++)
     {for(int j=0; j<m; j++)
       {
         cout<<arr[i][j]<<"  ";}
         cout<<endl;
    }}
void outs(int **arr, int m)
    {cout<<"Полученая матрица:  "<<endl;
    for(int i=0; i<m; i++)
     {for(int j=0; j<m; j++)
       {
         cout<<arr[i][j]<<"  ";}
         cout<<endl;
         }
    }
int main()
{int sw;
do{cout<<"1. Перестановка в матрице, введенной с клавиатуры"<<endl<<"2. Перестановка в матрице, заполненой случайными числами"<<endl;
    cout<<"3. Перестановка в матрице, считаной из файла"<<endl<<"0. Для выхода"<<endl<<"Сделайте свой выбор: ";
    cin>>sw;
    switch(sw)
        case 1:{cout<<"Введите размерность матрицы: "<<endl;
                cin>>m;
                keyb(m);
                outn(m);
                search(m);
                change();
                outs();}break;
        case 2:{cout<<"Введите размерность матрицы: "<<endl;
                cin>>m;
                rand(m);
                outn(m);
                search(m,num_min,num_max);
                change();
                outs(m);
                }break;
        case 3:{inp_file();
                outn();
                search(m);
                change();
                outs(m);
               }break;
}while (sw!=0);
getch();
return 0;}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2010, 22:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в передаче параметров (C++):

Передаче параметров из класса в main - C++
В header файле в метод menu класса Menu, передаю класс ResuryHealth. int Menu::menu(ResuryHealth){ ..... } Соответственно при...

Почему выдает ошибку при передаче по ссылке параметров? - C++
#include &lt;iostream&gt; /* run this program using the console pauser or add your own getch, system(&quot;pause&quot;) or input loop */ void...

Ошибка при передаче в функцию - C++
Хочу передать в функцию строку и там ее заполнить, подчеркивает void karta(MyStruct s.karta,int size); И пишет: 1 IntelliSense:...

Ошибка в передаче знач-й функции - C++
#include &lt;stdio.h&gt; void dfs(int n, int **g, int v, int *used) { if(used) return; used = 1; // ставим метку, что...

Ошибка при передаче структуры - C++
Пишу в тему для начинающих, ибо жестко туплю с данным вопросом. Есть метод: Fuse_Interpretate::clearStruct(PS)//!!!!!!!!!!!! {...

Где ошибка в передаче указателя на массив? - C++
через указатель на массив хочу в массив записать значние -1 или +1. гдето ошибка в синтаксисе. ПРошу помочь. ПОдозреваю что ошибка в...

6
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
09.12.2010, 22:53 #2
vaselo, НЕ используйте глобальные ПЕРЕМЕННЫЕ
1
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
10.12.2010, 08:11  [ТС] #3
Цитата Сообщение от ForEveR Посмотреть сообщение
vaselo, НЕ используйте глобальные ПЕРЕМЕННЫЕ
я их добавил уже от безисходности... не знаю что делать...

Добавлено через 9 часов 6 минут
Ну помогите!!1
0
time2die
51 / 51 / 3
Регистрация: 25.05.2010
Сообщений: 182
10.12.2010, 08:21 #4
Цитата Сообщение от ForEveR Посмотреть сообщение
vaselo, НЕ используйте глобальные ПЕРЕМЕННЫЕ
потому что..... ????в детстве слышал, что за каждую глобальную переменную бог на небе убивает котенка, но с возрастом перестал в это верить
0
lom80
4 / 4 / 0
Регистрация: 03.06.2010
Сообщений: 55
10.12.2010, 08:35 #5
Совсем не понятно. У тебя функция outn принимает 2 параметра, а передаешь только один. Понятно, что компилятор будет материться. Переменную i определена несколько раз. Определи ее в начале функции, и не мучайся. Дальнейшие ошибки не посмотрел, по-моему они такого же типа.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
10.12.2010, 13:00 #6
time2die, Потому что здесь это абсолютно бессмысленно.
0
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
10.12.2010, 13:31  [ТС] #7
Всем спасибо, я провел пол ночи и довел ее до ума
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2010, 13:31
Привет! Вот еще темы с ответами:

Ошибка при передаче результата функции - C++
Оператор + возвращает правильное значение (по крайней мере в конце его тела я вывожу полученный список, и все верно, он возвращает его по...

Ошибка при передаче параметра в функцию - C++
В ДЗ есть пример кода, помогите пожалуйста исправить, до работающего варианта (VS2015). Ошибки: (32) error C2660: strcpy_s: функция не...

ошибка в коде при идеальной передаче - C++
Здравствуйте, есть код и ошибка в нем: template&lt;typename T&gt; struct extension { extension&lt;T&gt;&amp; get(T&amp;&amp; value) { obj =...

Ошибка при передаче двумерного массива в функцию - C++
cannot convert 'int (*)' to 'int**' for argument '1' to 'void func(int**, int, int)' #include&lt;iostream&gt; using namespace std; ...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
10.12.2010, 13:31
Ответ Создать тему
Опции темы

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