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

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

Войти
Регистрация
Восстановить пароль
 
Olejan_one
1 / 1 / 0
Регистрация: 25.08.2012
Сообщений: 108
Завершенные тесты: 2
#1

Ошибка. Переопределение параметров в функции - C++

27.08.2012, 00:08. Просмотров 919. Ответов 10
Метки нет (Все метки)

Добрый вечер всем!
Такая задача:
Необходимо составить программу для систем счисления (от 2 до 36)
пользователь вводит число в десятичной системе и вводит номер системы.
например:
число 350 в 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
#include <iostream>
using namespace std;
char sys1(int chislo,int sys_shisl)
{
const int size=36;
char mas1 [size]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
char mas2 [size];
     
    
int chislo,sys_shisl,ostatok,chet=0;
    
 
for(int i=0;i<=size-1,chislo>0;i++)
{
ostatok=chislo%sys_shisl;
mas2[i]=mas1[ostatok];
chislo/=sys_shisl;
chet++;
}
int sizenew=chet;
char *mas3=new char[sizenew];
for (int k=0,j=sizenew-1;j>=0;k++,j--)
{
mas3[k]=mas2[j];
cout<<mas3[k];
    
}
cout<<endl;
delete [] mas3;
return mas3[sizenew];
    
 
}
void main()
{
int chislo,sys_shisl;
cout<<"Vvedite chislo=";
cin>>chislo;
cout<<"Vvedite sistemy shicltniya=";
cin>>sys_shisl;
cout<<sys1(chislo,sys_shisl);//программа выдает переопределенный индентификатор
                              //как правильно объявить параметры в функции
}
У меня к Вам два вопроса:
1. Компилятор выдает ошибку, что переопределен индентификатор chislo и sys_shisl. Как с этим справиться?
2. Как мне правильно задать параметры функции? Т.Е. я задал 2 параметра chislo и sys_shisl. Может необходимо ещё что то задавать? Может надо задать сведения о массиве?
Вот ещё какой вопрос:
Правильно ли я задаю тип функции char в начале? И какие параметры она должна возвращать? (что надо написать в return?)
Заранее благодарен за ответ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2012, 00:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка. Переопределение параметров в функции (C++):

Ошибка параметров в функции WinExec - C++
char *buffer = new char; GetCurrentDirectoryA(MAX_PATH, buffer); //remove(buffer); //deletebuffer; //buffer = new char; ...

Ошибка при написании функции с неизвестным числом параметров - C++
Ругается на va_start не могу понять за что) #include&lt;iostream&gt; #include&lt;cstring&gt; using namespace std; char*foo(int n, ...); ...

определение функции в ЗАГОЛОВОЧНОМ файле. В основном предполагается переопределение ТЕЛА этой функции. Как это сделать, не правя хидер? - C++
Сабж, а подробнее если в заголовочном файле hider.h описана функция, допустим так: void f (); void f () { int per= 10; } ...

Переопределение виртуальной функции - C++
Всем доброй ночи :) Есть базовый абстрактный класс и два производных класса (А и В), в которых я пытяюсь переопределить виртуальную...

Переопределение функции по наследовинии - C++
Помниться в с# есть такая штучка override,есть ли что-нибудь подобное в с++? Столкнулся с проблемой : class kub { int a; ...

Переопределение функции в шаблоне - C++
Подскажите, в пустом проекте работает следующий код #include &lt;utility&gt; #include &lt;type_traits&gt; #include &lt;cstdio&gt; #include...

10
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
27.08.2012, 00:16 #2
а как ты думаешь, что здесь не так:

C++
1
2
3
4
5
void foo (int arg){
   int arg = 0;
   int i = arg;
...
}
что компилятор должен построить: код, который присваивает переменной i значение передаваемого параметра, или только что объявленной переменной? и вообще - как их ему различать?
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,919
27.08.2012, 00:16 #3
Цитата Сообщение от Olejan_one Посмотреть сообщение
delete [] mas3;
return mas3[sizenew];
это чего ты возвращаешь??? ты память уже освободил
Цитата Сообщение от Olejan_one Посмотреть сообщение
Правильно ли я задаю тип функции char в начале?
нет тебе нужен указатель на строку char*
а еще лучше string
0
Olejan_one
1 / 1 / 0
Регистрация: 25.08.2012
Сообщений: 108
Завершенные тесты: 2
27.08.2012, 00:28  [ТС] #4
Цитата Сообщение от novi4ok Посмотреть сообщение
а как ты думаешь, что здесь не так:

C++
1
2
3
4
5
void foo (int arg){
   int arg = 0;
   int i = arg;
...
}
что компилятор должен построить: код, который присваивает переменной i значение передаваемого параметра, или только что объявленной переменной? и вообще - как их ему различать?
Думаю что значение передаваемого параметра. Он должен создать копию передаваемой переменной и работать с ней в самой функции.
Вы извините, я недавно этим стал заниматься. Могу полный бред написать, если что не так - поправьте.
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,919
27.08.2012, 00:31 #5
Цитата Сообщение от Olejan_one Посмотреть сообщение
Думаю что значение передаваемого параметра. Он должен создать копию передаваемой переменной и работать с ней в самой функции.
у тебя две разных переменных с одним именем
Цитата Сообщение от Olejan_one Посмотреть сообщение
C++
1
2
3
4
char sys1(int chislo,int sys_shisl)
{
.......................................
int chislo,sys_shisl,ostatok,chet=0;
раздели их
например так
C++
1
2
3
4
5
6
char sys1(int _chislo,int _sys_shisl)
{
.......................................
int chislo,sys_shisl,ostatok,chet=0;
chislo=_chislo;
sys_shisl=_sys_shisl
или используй те переменные что передали
C++
1
2
3
4
char sys1(int chislo,int sys_shisl)
{
.......................................
int ostatok,chet=0;
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
27.08.2012, 00:33 #6
Цитата Сообщение от Olejan_one Посмотреть сообщение
Думаю что значение передаваемого параметра. Он должен создать копию передаваемой переменной и работать с ней в самой функции.
Вы извините, я недавно этим стал заниматься. Могу полный бред написать, если что не так - поправьте.
это ты - думаешь. а компилятор не думает. он в этом случае просто выдает тебе: "парень, ты как-то определись, имен нормальных выдумывать не можешь, что ли?"
0
Olejan_one
1 / 1 / 0
Регистрация: 25.08.2012
Сообщений: 108
Завершенные тесты: 2
27.08.2012, 00:35  [ТС] #7
Цитата Сообщение от ValeryS Посмотреть сообщение
это чего ты возвращаешь??? ты память уже освободил

нет тебе нужен указатель на строку char*
а еще лучше string
ну я в принципе догадался на счет ретюрна. С динамическим объявлением мне помогли. То есть очищать память не надо?
Со стрингом не знаком. На счёт указателя не пойму - при объявлении функции я должен задать тип функции. так как у меня там символьный тип переменных в массиве - значит надо объявить тип char? Зачем там указатель?
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,919
27.08.2012, 00:38 #8
Цитата Сообщение от Olejan_one Посмотреть сообщение
. так как у меня там символьный тип переменных в массиве - значит надо объявить тип char?
ты что один символ возвращаешь?
Цитата Сообщение от Olejan_one Посмотреть сообщение
Зачем там указатель?
чтоб передать строку
C++
1
char* sys1(int chislo,int sys_shisl)
0
Olejan_one
1 / 1 / 0
Регистрация: 25.08.2012
Сообщений: 108
Завершенные тесты: 2
27.08.2012, 00:41  [ТС] #9
Цитата Сообщение от novi4ok Посмотреть сообщение
это ты - думаешь. а компилятор не думает. он в этом случае просто выдает тебе: "парень, ты как-то определись, имен нормальных выдумывать не можешь, что ли?"
Я так понял, что мне надо изменить имена параметров в функции?
т.е. вместо sys1(int chislo,int sys_shisl)
мне надо придумать другие имена переменных chislo и sys_shisl???
например sys1(x,systema)??
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,919
27.08.2012, 00:48 #10
Цитата Сообщение от Olejan_one Посмотреть сообщение
Я так понял, что мне надо изменить имена параметров в функции?
ты мое сообщение под номером 5 читал???
0
Olejan_one
1 / 1 / 0
Регистрация: 25.08.2012
Сообщений: 108
Завершенные тесты: 2
27.08.2012, 01:27  [ТС] #11
Цитата Сообщение от ValeryS Посмотреть сообщение
ты мое сообщение под номером 5 читал???
Извини, не увидел, честно. Ну я понял. В общем я убрал их из inta. Как ты показал во втором примере.
Но все равно выдает ту же ошибку. Может и в мейне надо изменить их имена? Или они должны совпадать?(Я имею ввиду те имена которые я объявляю в мейне и те которые передаю в функцию)

Добавлено через 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
#include <iostream>
using namespace std;
char sys1(int chislo,int sys_shisl)
{
const int size=36;
char mas1 [size]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
char mas2 [size];
     
    
int ostatok,chet=0;// вот сдесь я написал лишак походу, лишний раз обьявил их
    
 
for(int i=0;i<=size-1,chislo>0;i++)
{
ostatok=chislo%sys_shisl;
mas2[i]=mas1[ostatok];
chislo/=sys_shisl;
chet++;
}
int sizenew=chet;
char *mas3=new char[sizenew];
for (int k=0,j=sizenew-1;j>=0;k++,j--)
{
mas3[k]=mas2[j];
cout<<mas3[k];
    
}
cout<<endl;
delete [] mas3;
return mas3[sizenew];
    
 
}
void main()
{
int chislo,sys_shisl;
cout<<"Vvedite chislo=";
cin>>chislo;
cout<<"Vvedite sistemy shicltniya=";
cin>>sys_shisl;
cout<<sys1(chislo,sys_shisl);//программа выдает переопределенный индентификатор
                              //как правильно объявить параметры в функции
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2012, 01:27
Привет! Вот еще темы с ответами:

Наследник класса, переопределение функции - C++
Доброго времени суток! Есть не виртуальный класс, от него необходимо наследоваться и перегрузить одну из функций. Входные параметры будут...

Переопределение или перезагрузка функции - C++
у меня есть класс комплексных чисел. И как можно определить функцию sqrt() что бы она работала с моим классом тоже. Сразу говорю я не хочу...

Наследование. Переопределение виртуальной функции - C++
Здравствуйте. Нужно создать классы, наследование. Переопределить для каждого класса виртуальную функцию Print. К каждому классу добавить...

Шаблоны и переопределение функции swap - C++
Есть у меня шаблонный класс, решил для него функцию swap написать: template &lt;typename T&gt; void swap (Stack&lt;T&gt;&amp; s1, Stack&lt;T&gt;&amp; s2) { ...


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
27.08.2012, 01:27
Ответ Создать тему
Опции темы

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