Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/48: Рейтинг темы: голосов - 48, средняя оценка - 4.94
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56

Функция, которая получает два параметра и возвращает результат деления первого параметра на второй

29.03.2014, 15:43. Показов 10149. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Тут такая задача: написать функцию, которая получает два параметра тип unsigned short int и возвращает результат деления первого параметра на второй. Функция не должна выполнять операцию деления, если второе число равно 0, но в этом случае она должна возвратить значение - 1.

Я попробовал реализовать так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 #include <iostream>
short int Divider( unsigned short int ValOne,
                  unsigned short int ValTwo);
 
 
 
short int Divivder( unsigned short int ValOne,
                    unsigned short int ValTwo);
{
if(ValTwo == 0 )
return -1;
else 
return (valOne / ValTwo);
}
Но сначала пробовал через int main() - то есть вызвать функцию из функции и передать аргументы:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
short int Divider( unsigned short int ValOne,
                  unsigned short int ValTwo);
 
int main();
 
int unsigned short x;
int unsigned short y;
 
short int Divider( unsigned short int x, unsigned short int y);
 
 
short int Divivder( unsigned short int x,unsigned short int y)
{
if(y== 0 )
return -1;
else 
return ( x / y);
}
Не получается откомпилировать.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.03.2014, 15:43
Ответы с готовыми решениями:

Функция возвращает остаток от деления первого параметра на второй. Указать ошибку
Мне нужно было разработать функцию типа int, которая возвращает остаток от деления первого параметра на второй. #include &lt;iostream&gt;...

Разработать функцию, которая возвращает остаток от деления первого параметра на второй
Нужно разработать функцию типа int, которая возвращает остаток от деления первого параметра на второй. Заранее большое спасибо за...

Функцию, которая получает два параметра str1 и str2 типа string и возвращает позицию начала последнего появления str2 в str1
Напишите функцию rightposition, которая получает два параметра str1 и str2 типа string и возвращает позицию начала последнего появления...

23
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
29.03.2014, 16:01
Имена сравните
C++
1
2
3
4
5
6
short int Divider( unsigned short int ValOne,
                  unsigned short int ValTwo);
short int Divivder( unsigned short int x,unsigned short int y)
{
//...
}
где main? Че за глобальные переменные?
0
61 / 37 / 16
Регистрация: 15.03.2014
Сообщений: 315
29.03.2014, 16:21
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
using namespace std;
 
short int Divivder (unsigned short int x, unsigned short int y)
{
    if (y == 0)
        return -1;
    else
        return x / y;
}
 
int main()
{
    unsigned short int x, y;
    cin >> x >> y;
    cout << Divivder(x, y);
    return 0;
}
1
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
29.03.2014, 20:30  [ТС]
Так же нужно, что бы выводи результат деления или ошибку, если будет возвращено значение - 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
  #include <iostream>
 
short int Divivder (unsigned short int x, unsigned short int y);
 
using namespace std;
using std::cout;
using std::endl;
 
int main()
{
    short int result;
    
    unsigned short int x, y;
    cout<<"vvedite znajenije x: ";
    cin >> x;
    cout<<"vvedite znajenije y: ";
    cin >> y;
    cin >> x >> y;
   result = Divivder( x, y );
    cout <<  " summa: " << result<<endl;
        char response;
        std::cin;
}
    
short int Divivder (unsigned short int x, unsigned short int y)
{
    if (y == 0)
        return -1;
    else
        return (x / y);
}
Программа запрашивает два числа и возвращает либо результат либо сообщение об ошибке, но в цикле if:

C++
1
2
3
4
5
if ( y ==0 )
cout << " Error! Vvedite znajenije y";
return -1;
else
return ( x / y);
реализовать не удается.

Добавлено через 2 часа 12 минут
Я подкорректировал код:

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
#include <iostream>
 
short int Divivder (unsigned short int valone, 
                    unsigned short int valtwo);
 
using namespace std;
 
int main()
{
    short int result;
    
    unsigned short int one, two;
    cout<<"vvedite znajenije x: ";
    cin >> one;
    cout<<"vvedite znajenije y: ";
    cin >> two;
    cin >> one >> two;
    result = Divivder( one, two );
    if ( result >-1);
       cout <<  " summa: " << result;
    else 
        cout << "Error!Vvedite y ";
    return 0;
}
    
short int Divivder (unsigned short int valone, 
    unsigned short int valtwo)
{
    if (valtwo == 0)
        return -1;
    else
        return (valone / valtwo);
}
Пишет ошибка в блоке if...else;
0
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
31.03.2014, 11:48  [ТС]
Он в этой конструкции выдает ошибку

Code
1
2
3
4
5
if ( result >-1);
       cout <<  " summa: " << result;
    else 
        cout << "Error!Vvedite y ";
    return 0;
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
31.03.2014, 11:52
zero-11, после ифа точку с запятой уберите:
C++
1
if ( result >-1)
0
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
31.03.2014, 13:34  [ТС]
Позволяет ввести два значения, но не выводит результат - хотя после ввода значений управления передается вызываемой функции - может я здесь неверно объявил result = Divivder( one, two ); - но тип short int result - определен - :

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
#include <iostream>
 
short int Divivder (unsigned short int valone, 
                    unsigned short int valtwo);
 
int main();
using namespace std;
 
short int Divivder(unsigned short int valone,
                  unsigned short int valtwo)
{
    short int result;
    
    unsigned short int one, two;
    cout<<"vvedite znajenije one: ";
    cin >> one;
    cout<<"vvedite znajenije two: ";
    cin >> two;
    cin >> one >> two;
    result = Divivder( one, two );
    return 0;
}
   
short int Divider(unsigned short int valone, 
                  unsigned short int valtwo)
{
 short int result;
 
 
    if ( valone == 0)
    cout << "Error! Vvedite y: ";
    else  ( valone > 0)
    result = ( valone / valtwo);
    cout << "resultat:" << result;
    return 0;
}
может есть каки- то идеи-?

точку с запятой я уже убрал и все равно не пашет - может все дело в определении типа - short int Divivder-?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
31.03.2014, 13:41
Цитата Сообщение от zero-11 Посмотреть сообщение
все равно не пашет
Что на входе, что на выходе? Чем больше подробностей - быстрее и точнее будет ответ.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
31.03.2014, 13:44
C++
1
int main();//<-- прототип main?
где функция main?
0
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
31.03.2014, 15:49  [ТС]
int main(); - функция возвращающая цело-чиcленное значение типа int - объявлена в коде, вы наверное это имели в виду:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main();
int main()
{
    unsigned short int one, two; 
    unsigned short int result;
    cout<<"vvedite znajenije x:" ;
    cin >> one;
    cout<<"vvedite znajenije y: ";
    cin >> two;
    cin >> one >> two;
    result = Divivder( one, two );
    if ( result >-1)
       cout <<  " summa: " << result;
    else 
        cout << "Error!Vvedite y ";
    return 0;
}
Добавлено через 49 минут
Все перепроверил - на выходе лишь пустая консоль - прототип - имена типов параметров и тип и имя прототипа соответствует :

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
#include <iostream>
using namespace std;
 
unsigned short int Divivder (unsigned short int valone,
                             unsigned short int valtwo);
int main();
int main()
{
    unsigned short int one, two; 
    unsigned short int result;
    cout<<"vvedite znajenije x:" ;
    cin >> one;
    cout<<"vvedite znajenije y: ";
    cin >> two;
    cin >> one >> two;
    result = Divivder( one, two );
    if ( result >-1)
       cout <<  " summa: " << result;
    else 
        cout << "Error!Vvedite y ";
    return 0;
}  
 
unsigned short int Divivder (unsigned short int valone,
                             unsigned short int valtwo)
    
{
 
    if ( valone == 0)
    return -1;
    else 
    return ( valone /valtwo );
}
0
 Аватар для IrineK
2023 / 1641 / 425
Регистрация: 23.02.2011
Сообщений: 6,002
Записей в блоге: 25
31.03.2014, 15:55
Цитата Сообщение от zero-11 Посмотреть сообщение
возвращает результат деления
Кстати, а деление целочисленное или обычное?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
31.03.2014, 16:17
C++
1
2
3
4
5
    cout<<"vvedite znajenije x:" ;
    cin >> one;//<--ввод one
    cout<<"vvedite znajenije y: ";
    cin >> two;//<--ввод two
    cin >> one >> two;//<-- зачем еще раз запрашивать их?
0
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
31.03.2014, 16:29  [ТС]
пересылаются введенные данные повторно - объект пери-направления потока ввода - убирал его - все равно компилироваться не хочет.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
31.03.2014, 16:35
Цитата Сообщение от zero-11 Посмотреть сообщение
все равно компилироваться не хочет.
Ошибки в студию!
У меня всё компилируется и работает так, как написано(ошибки в логике не учитываю).
C++
1
if ( valone == 0)
то будет ноль, а вот если valtwo будет равен нулю, то будет бо-бо
0
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
31.03.2014, 16:38  [ТС]
unsigned short int Divivder - объявляет функцию реализующую целочисленное деление а результат возвращает в виде без-знакового короткого целого - имеет в виду что необходима signed short int Divivder-?
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
31.03.2014, 16:39
Вообще-то препов, которые выдумывают такие задачки, надо убивать на месте. Из рогатки.
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
#include <iostream>
using namespace std;
 
short int Divivder(unsigned short int x, unsigned short int y);
 
int main()
{
    short int result;
 
    unsigned short int x, y;
    cout<<"vvedite znajenije x: ";
    cin >> x;
    cout<<"vvedite znajenije y: ";
    cin >> y;
    result = Divivder( x, y );
    cout <<  " summa: " << result << endl;
}
 
short int Divivder(unsigned short int x, unsigned short int y)
{
    if (y == 0)
        return -1;
    else
        return (x / y);
}
 
/*
vvedite znajenije x: 65535
vvedite znajenije y: 1
 [B]summa: -1[/B]
 
Process returned 0 (0x0)   execution time : 5.074 s
Press any key to continue.
 
*/
0
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
31.03.2014, 16:56  [ТС]
Всем спасибо, разобрался.
0
320 / 225 / 74
Регистрация: 22.11.2013
Сообщений: 867
Записей в блоге: 1
31.03.2014, 17:00
Croessmah, У меня идиотский вопрос ЗАЧЕМ НУЖЕН ПРОТОТИП main ()?????? Не считаете что надо пояснить:
3.6.1 Main function
...
3.The function main shall not be used within a program. The linkage (3.5) of main is implementation-defined. A program that defines main as deleted or that declares main to be inline, static, or constexpr is illformed. The name main is not otherwise reserved. [ Example: member functions, classes, and enumerations can be called main, as can entities in other namespaces. —end example ]
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
31.03.2014, 17:11
Цитата Сообщение от mustimur Посмотреть сообщение
ЗАЧЕМ НУЖЕН ПРОТОТИП main ()?
Не нужен, но и не противоречит стандарту в упомянутой форме, судя по всему.
0
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
31.03.2014, 17:14  [ТС]
Прототип main() - эта главная функция - она стандартная в языке С++ - с нее в соответствии со спецификацией начинается код программы и прототип для нее не определяют - прототип функции необходимо объявить для вызываемой функции - это подпрограмма - это позволяет определить тип имени функции и передаваемые ей параметры - если вещественны числа то double или float или целые - типа int - которые должны быть возвращены в качестве аргументов функции в программе после вызова функции в теле main().

Code
1
У меня осталось еще три вот таких задачи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.03.2014, 17:14
Помогаю со студенческими работами здесь

Функция, возвращающая остаток отделения первого параметра на второй
Нужно разработать функцию типа int, которая возвращает остаток отделения первого параметра на второй.

Функция, которая возвращает среднее арифметическое элементов параметра-массива
разработайте заданную функцию( 1) и продемонстрируйте работу этой функции, сделав в главной программе несколько вызовов функции с разными...

Написать функцию которая получает два параметра – плановое и фактическое время прибытия поезда в формате часы:минуты
Предложите свое решение микрозадачи : написать функцию которая получает два параметра – плановое время прибытия поезда в формате...

Функция, которая получает в качестве параметров два целых числа и возвращает сумму
Написать функцию, которая получает в качестве параметров два целых числа и возвращает сумму чисел из диапазона между ними Помогите:-| ...

Написать функцию, которая в зависимости от значения первого параметра возвращает количество отрицательных или положительных чисел призвольного массива
Написать функцию, которая в зависимости от значения первого параметра (символ + или – ) возвращает количество отрицательных или...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru