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

Найти факториал числа, пользуясь только указателями - C++

Восстановить пароль Регистрация
 
Леонид Каруна
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 148
17.04.2014, 21:08     Найти факториал числа, пользуясь только указателями #1
В общем задание - "Найти факториал числа, пользуясь только указателями."
Код написал, но не могу понять в чем ошибка. (Error 1 error LNK2001: unresolved external symbol "int __cdecl fact(int)" (?fact@@YAHH@Z) C:\Users\Леонид\Documents\Visual Studio 2010\Projects\Test\Test\Test.obj Test
)

Сам код:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
int fact(int);
int *sum= new int;
void main(){
    setlocale(LC_ALL,"rus");
    int *n= new int;
    cout<<"Введите число"<<endl;
    cin>>*n;
    fact(*n);
 
    system("pause");
}
 
 
int fact(int *n){
    if(*n==0){
        return 1;
    }else{
        *sum=fact(*n-1)*(*n);
        cout<<*sum<<endl;
        return *sum;
    }
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.04.2014, 21:12     Найти факториал числа, пользуясь только указателями #2
Цитата Сообщение от Леонид Каруна Посмотреть сообщение
C++
1
int fact(int);
Сравните с:
Цитата Сообщение от Леонид Каруна Посмотреть сообщение
C++
1
int fact(int *n){
Леонид Каруна
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 148
17.04.2014, 21:30  [ТС]     Найти факториал числа, пользуясь только указателями #3
Точно не в этом дело, там просто пишется тип переменной.
MastAKK
 Аватар для MastAKK
144 / 135 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
17.04.2014, 21:34     Найти факториал числа, пользуясь только указателями #4
Леонид Каруна, дело точно в этом. Вы объявили, но не определили функцию. Вот компилер и плюётся.
Леонид Каруна
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 148
17.04.2014, 21:41  [ТС]     Найти факториал числа, пользуясь только указателями #5
Исправил, выбило ошибку:

Код
Error	1	error C2664: 'fact' : cannot convert parameter 1 from 'int' to 'int *'	C:\Users\Леонид\Documents\Visual Studio 2010\Projects\Test\Test\Test.cpp	10	1	Test
Не поленитесь, скомпилируйте.
MastAKK
 Аватар для MastAKK
144 / 135 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
17.04.2014, 21:47     Найти факториал числа, пользуясь только указателями #6
Леонид Каруна, учите мат.часть. int и int* - разные типы данных. Вы объявляете функцию и обязаны определить её с теми же параметрами.
C++
1
2
3
4
5
void foo(int); //у нас есть 1 функция foo, принимает int, но не определена ==> работать не будет
//промежуток
void foo(int* a){ //мы ПЕРЕопределяем foo, эта принимает int*. Теперь у нас есть 2 функции foo: одна принимает int и не определна, вторая int* и определена.
 //some code
}
Если в коде выше в "промежутке" попытаться вызвать foo и передать ей int* - работать не будет, ибо такая там ещё не определена

Добавлено через 2 минуты
Таким образом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
void foo(int);
int main() {
    // your code goes here
    int a[10];
    foo(a);
    return 0;
}
 
void foo(int* n){
    std::cout << "foo(int*)";
}
Работать не будет. Будет выдавать Can not convert int to int *
И это вполне логично, ибо ему foo(int*) не известен до его объявления/определения.

Если передать туда int, то выдаст, как раз, вашу ошибку (которая в посте).
zss
Модератор
Эксперт С++
 Аватар для zss
5948 / 5553 / 1785
Регистрация: 18.12.2011
Сообщений: 14,191
Завершенные тесты: 1
17.04.2014, 21:48     Найти факториал числа, пользуясь только указателями #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
int fact(int*);
int main()
{
    setlocale(LC_ALL,"rus");
    int *n= new int;
    cout<<"Введите число"<<endl;
    cin>>*n;
    int res=fact(n);
    delete n;
    cout<<res<<endl;
    system("pause");
    return 0;
}
int fact(int *n)
{
    if( (*n)<=1)
        return 1;
    int t=(*n) -1;
    return (*n)*fact( &t );
 }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2014, 21:58     Найти факториал числа, пользуясь только указателями
Еще ссылки по теме:

Пользуясь только умножением, получить C++
Найти факториал числа заданного условием C++
Известен факториал числа. Найти это число C++

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

Или воспользуйтесь поиском по форуму:
Леонид Каруна
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 148
17.04.2014, 21:58  [ТС]     Найти факториал числа, пользуясь только указателями #8
Всем спасибо, особенно Zss, сам код факториала числа отличается, что интересно.
Yandex
Объявления
17.04.2014, 21:58     Найти факториал числа, пользуясь только указателями
Ответ Создать тему
Опции темы

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