С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
17 / 2 / 1
Регистрация: 09.05.2013
Сообщений: 171
1

Значение, возвращаемое return, не соответствует ожиданиям

19.09.2015, 17:55. Показов 1819. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер! Подскажите, пожалуйста, что я делаю не так? Почему return возвращает 2, а не c?
 Комментарий модератора 
AleksandraM, код перепечатываем в сообщение.
Название темам стараемся придумывать адекватные.
Миниатюры
Значение, возвращаемое return, не соответствует ожиданиям  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.09.2015, 17:55
Ответы с готовыми решениями:

Возвращаемое значение
public static string Answer() { if ((Forecast.Randik1() > 10) || (Forecast.Randik2() ==...

Возвращаемое значение
Я так и не понял , что возвращает GetAsyncKeyState если не нажата не одна из клавиш. Типо :...

Возвращаемое значение
Всем привет! Столкнулся с проблемой. Есть функция, которой по указателю передается и возвращается...

Возвращаемое значение
Доброго времени суток! private int f(int x){ while (true); } private int f(int x) { ...

13
Модератор
Эксперт С++
13721 / 10918 / 6478
Регистрация: 18.12.2011
Сообщений: 29,147
19.09.2015, 17:59 2
Возвращается значение c приведенное к целому.
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
19.09.2015, 18:05 3
Цитата Сообщение от AleksandraM Посмотреть сообщение
Почему return возвращает 2, а не c?
Потому что main возвращает int, причем из всего диапазона допустимы только 255 значений (исторически). Это значение используется вызывающей стороной для обозначения статуса завершения приложения, а не для передачи всего подряд.
Вам нужно вывести с, вот и сделайте это.

Добавлено через 3 минуты
AleksandraM, да, и еще, индексация массивов в С++ и С начинается с нуля. Циклы неверно организованы.
0
17 / 2 / 1
Регистрация: 09.05.2013
Сообщений: 171
19.09.2015, 18:28  [ТС] 4
Цитата Сообщение от DrOffset Посмотреть сообщение
Это значение используется вызывающей стороной для обозначения статуса завершения приложения, а не для передачи всего подряд.
Вам нужно вывести с, вот и сделайте это.
В задании сказано вернуть результат через return. Я же не сама это придумала.

Добавлено через 1 минуту
Цитата Сообщение от zss Посмотреть сообщение
Возвращается значение c приведенное к целому.
Так там и так должно получится целое число 11, только return почему-то возвращает 2.
0
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
19.09.2015, 18:34 5
А какого функция объявлена и определена в main? Main там вообще без return'а, возвращает лабуду какую-то рандомную, (спасибо кодблоксу что разрешает такое).
1
Модератор
Эксперт С++
13721 / 10918 / 6478
Регистрация: 18.12.2011
Сообщений: 29,147
19.09.2015, 18:36 6
Пардон, не заметил, что у Вас в коде ляп: объявлена вложенная функция.
А все почему... Нарушаете правила форума: КОД НАДО ПЕРЕПИСЫВАТЬ
Соответственно, return в main отсутствует.
0
2 / 2 / 2
Регистрация: 18.05.2015
Сообщений: 14
19.09.2015, 18:45 7
Вы объявили функцию в main'e
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
19.09.2015, 18:49 8
Лучший ответ Сообщение было отмечено AleksandraM как решение

Решение

Цитата Сообщение от AleksandraM Посмотреть сообщение
В задании сказано вернуть результат через return. Я же не сама это придумала.
В задании сказано вернуть через return функции main?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
float proiz(float a[], float b[], int n) {
    float c;
    int i;
    for(i = 0; i < n; i++) { c = c+a[i]*b[i]; }
    return c;
}
 
int main()
{
    int n, i;
    printf("Razmernost: ");
    scanf("%d", &n);
    float a[n]; float b[n];
    for(i = 0; i < n; i++) { scanf("%f", &a[i]); }
    for(i = 0; i < n; i++) { scanf("%f", &b[i]); }
 
    printf("rez: %f\n", proiz(a, b, n));
    return 0;
}
Вот чего от вас хотят. Как минимум.

Добавлено через 1 минуту
Цитата Сообщение от Enno Посмотреть сообщение
А какого функция объявлена и определена в main? Main там вообще без return'а, возвращает лабуду какую-то рандомную, (спасибо кодблоксу что разрешает такое).
Этот код вообще не компилируется, если что.
main без return возвращает 0. По стандарту. CodeBlocks mingw все правильно делает.
2
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
19.09.2015, 18:54 9
Цитата Сообщение от DrOffset Посмотреть сообщение
mingw все правильно делает
А почему тогда возвращено 2, а не 0?
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
19.09.2015, 19:08 10
Цитата Сообщение от Enno Посмотреть сообщение
А почему тогда возвращено 2, а не 0?
Добавлено через 9 минут
UPD:
Только сейчас заметил, что код-то компилируется как С.
Тогда все вышесказанное к нему не относится.
В С код компилируется и действительно возвращает рандомную фигню, потому что правила неявного возврата нуля из main в С нет. Вложенная функция естественно не отрабатывает.

Добавлено через 2 минуты
В общем корректный для mingw код автору я дал.
Думаю, стоит подождать ответа.
1
267 / 170 / 40
Регистрация: 25.08.2014
Сообщений: 1,087
Записей в блоге: 1
19.09.2015, 19:09 11
Цитата Сообщение от DrOffset Посмотреть сообщение
Вложенная функция естественно не отрабатывает.
Лол, она и не вызывается ведь нигде. Я в Си не шарю, если что.
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
19.09.2015, 19:21 12
Цитата Сообщение от Enno Посмотреть сообщение
Лол, она и не вызывается ведь нигде.
Ага.
Такая вложенная функция есть расширение GCC для С.
И ее надо конечно же вызвать, чтобы она заработала
0
2836 / 1645 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
19.09.2015, 20:02 13
И в C тоже main 0 возвращает, начиная с C99.
1
17 / 2 / 1
Регистрация: 09.05.2013
Сообщений: 171
19.09.2015, 23:07  [ТС] 14
Огромное спасибо за помощь!
0
19.09.2015, 23:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2015, 23:07
Помогаю со студенческими работами здесь

Возвращаемое значение
Код проверки билета на &quot;Счастливость&quot; (сумма первой группы из 3х цифр равна сумме второй группе...

Возвращаемое значение
Привет всем, товарищи программисты и не только. Только начинаю изучать азы Qt. Допустим, есть...

Возвращаемое значение
Как сделать так, что бы в зависимости от подаваемых аргументов, функция возвращала разные значения?...

Возвращаемое значение
Подскажите пожалуйста, если я выбираю документ, щелкая по колонке в таблице, и у меня появляется...


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

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