Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
1

Функции, где то ошибка

27.01.2011, 10:44. Показов 1663. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Переписал программку из книжки Керниган, а не работает и не пойму где ошибка


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
#include <stdio.h>
#include <stdlib.h>
 
 
int main(int argc, char *argv[])
{
int power(int m, int n);
{
 int i;
 for (i=0; i<10; ++i)
 printf ("%d %d %d\n",i, power(2,i), power(-3,i));
 return 0;
    }
{
int power (int base, int n);
{
int i, p;
p=1;
for (i=1; i<=n; ++i) // пишет ошибка
p= p* base;
return p;
    }
      }
 
  
  system("PAUSE");  
  return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.01.2011, 10:44
Ответы с готовыми решениями:

Где ошибка в функции?!
При значениях m=1 и b=1 выдаёт значение функции 0. Не могу найти ошибку. function m1 (m:char;...

Где ошибка в функции?
В общем пытаюсь освоить jQuery написал следующий скрипт $(document).ready(function() { ...

где ошибка?функции с++
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; using namespace...

Функции пользователя. Где ошибка?
Вот код программы: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;math.h&gt; #include...

18
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
27.01.2011, 11:02 2
странный пример ..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
 
int power (int base, int n);
int main(int argc, char *argv[])
{
int i;
for (i=0; i<10; ++i)
printf ("%d %d %d\n",i, power(2,i), power(-3,i));
system("pause"); 
}
 
 
int power (int base, int n)
    {
        int i, p;
        p=1;
        for (i=1; i<=n; ++i) // пишет ошибка
        p= p* base;
        return p;
    }
Добавлено через 1 минуту
и еще, переменный для инкриминации цикла лучше объявлять так
C++
1
for(int i=0; ...)
0
22 / 22 / 1
Регистрация: 14.02.2010
Сообщений: 50
27.01.2011, 18:53 3
Вот так вот всё работает. Но в предыдущем посте правильно отмечено, что объявлять функции внутри других функций не (а определять вообще нельзя), если конечно вам это не прям совсем требуется по контексту программы.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>
 
 
int main(int argc, char *argv[])
{
int power(int m, int n);
int i;
for (i=0; i<10; ++i)
printf ("%d %d %d\n",i, power(2,i), power(-3,i));
system("PAUSE");    
return 0;
}
 
int power (int base, int n)
{
int i, p;
p=1;
for (i=1; i<=n; ++i) // пишет ошибка
p= p* base;
return p;
}
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
28.01.2011, 07:14 4
Цитата Сообщение от Ardarik
из книжки Керниган
system("pause"); ? уиндоус тогда ещё не было
windows K&R

int main(int argc, char *argv[]) - это тоже, в K&R2 используется main() в этой задаче (они так делают, чтобы не загружать мозг до объяснений, причём C89 допускает такое определение)

так что это - отредактированный код, в котором перекосило функции
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
28.01.2011, 07:26 5
Цитата Сообщение от Ardarik Посмотреть сообщение
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
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int power(int m, int n);
{
int i;
for (i=0; i<10; ++i)
printf ("%d %d %d\n",i, power(2,i), power(-3,i));
return 0;
}
{
int power (int base, int n);
{
int i, p;
p=1;
for (i=1; i<=n; ++i) // пишет ошибка
p= p* base;
return p;
}
}
system("PAUSE");
return 0;
}
Разве так?

Добавлено через 6 минут
Строка № 5: прототип функции объявлен внутри функции.
Строка № 13: прототип функции объявлен внутри функции.
Строки № 5 и № 13: два одинаковых прототипа функций. При перегрузке должны различаться типы параметров, а если это разные функции, то должны различаться имена функций.

Добавлено через 1 минуту
Строка № 17: переменная n нигде не объявлена, но используется в заголовке цикла.
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
28.01.2011, 08:09 6
Цитата Сообщение от dakota412 Посмотреть сообщение
Вот так вот всё работает. Но в предыдущем посте правильно отмечено, что объявлять функции внутри других функций не (а определять вообще нельзя), если конечно вам это не прям совсем требуется по контексту программы.
Объявлять можно, и с расширением gcc nested functions еще и определять можно
0
22 / 22 / 2
Регистрация: 06.12.2010
Сообщений: 125
28.01.2011, 08:43 7
Цитата Сообщение от NiRamz Посмотреть сообщение
и еще, переменный для инкриминации цикла лучше объявлять так
C++
1
for(int i=0; ...)
вы ща насоветуете! это C, а не С++. всё правильно объявлено, в начале блока.
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
28.01.2011, 08:46 8
Цитата Сообщение от Iron Bug Посмотреть сообщение
вы ща насоветуете! это C, а не С++. всё правильно объявлено, в начале блока.
а в C99 так можно делать
0
22 / 22 / 2
Регистрация: 06.12.2010
Сообщений: 125
28.01.2011, 08:49 9
Цитата Сообщение от Nameless One Посмотреть сообщение
C99 позволяет объявлять переменные-счетчики внутри цикла
таки кто его поддерживает? большинство компилеров пошлёт нах.
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
28.01.2011, 08:55 10
Цитата Сообщение от Iron Bug Посмотреть сообщение
таки кто его поддерживает? большинство компилеров пошлёт нах.
Можно посмотреть здесь. К примеру, gcc нормально скомпилит с опцией -std=c99 или -std=gnu99. Как и большинство *современных* компиляторов.
0
22 / 22 / 2
Регистрация: 06.12.2010
Сообщений: 125
28.01.2011, 08:57 11
да, кстати, ошибка в 15 строке:
int power (int base, int n);
убери ';' - это функция, я не предварительное объявление.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
28.01.2011, 09:03 12
На плюсах уже появились локальные функции? Новость хорошая, но какой компил это поддерживает и как такие функции объявлять?
0
22 / 22 / 2
Регистрация: 06.12.2010
Сообщений: 125
28.01.2011, 09:05 13
Цитата Сообщение от taras atavin Посмотреть сообщение
На плюсах уже появились локальные функции? Новость хорошая, но какой компил это поддерживает и как такие функции объявлять?
ещё раз: это НЕ плюсы.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
28.01.2011, 09:07 14
То, что у ТС не плюсы, я уже понял, а
Цитата Сообщение от Nameless One Посмотреть сообщение
Объявлять можно, и с расширением gcc nested functions еще и определять можно
к чему интересно относится?
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
28.01.2011, 09:14 15
Цитата Сообщение от taras atavin Посмотреть сообщение
На плюсах уже появились локальные функции? Новость хорошая, но какой компил это поддерживает и как такие функции объявлять?
Цитата Сообщение от taras atavin Посмотреть сообщение
к чему интересно относится?
Это расширение gcc nested functions. Оно поддерживается только компилятором gcc и только для языка C, т.е. оно непереносимо. Пример:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int main()
{
    const char* msg = "Hello, World!";
    
    void printMsg(size_t cnt)
    {
    while(cnt--)
        puts(msg);
    }
    printMsg(5);
   
    return 0;    
}
0
22 / 22 / 2
Регистрация: 06.12.2010
Сообщений: 125
28.01.2011, 09:17 16
ну и компилер нужен GCC. когда-то компилеры это хавали. мелкософт это не ест вроде, хотя не факт, может и есть режим совместимости со старыми стандартами.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
28.01.2011, 09:20 17
То есть на плюсах этого нет, а на простых сях есть?
0
11 / 8 / 2
Регистрация: 16.01.2011
Сообщений: 222
29.01.2011, 13:01  [ТС] 18
ну с функциями немного разобрался, Спасибо всем
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
30.01.2011, 09:05 19
Тема закрыта. Продолжить дискуссию о функциях можно в теме: https://www.cyberforum.ru/cpp-... 35800.html
0
30.01.2011, 09:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.01.2011, 09:05
Помогаю со студенческими работами здесь

Где ошибка в хранимой функции
Создаю функцию CREATE DEFINER = 'root'@'localhost' FUNCTION mytestdb.inoe_for_good_table(kod...

Табулирование функции. Где ошибка?
Добрый день. Где то ошибка, но никак понять не могу где, вроде все верно , а считает с ошибками. F...

Где ошибка во встроенной функции?
Здравствуйте! Помогите понять, почему не работает код, пожалуйста! Нужно дать на вход...

Подскажите, где ошибка в функции strdel
void strdel1( char *s, int p, int k) { int l = strlen(s); if ( p &gt;= l || k==0) return; if...

Использование функции fgets, где ошибка?
Все привет. В чем может быть ошибка, уже долго сижу и не понимаю. Я сперва со строки беру значение...

Табулирование функции одного аргумента.Где ошибка?
Цель работы - освоить методику и выработать практические навыки применения одной из управляющих...


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

Или воспользуйтесь поиском по форуму:
19
Закрытая тема Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru