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

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

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

Author24 — интернет-сервис помощи студентам
Тут такая задача: написать функцию, которая получает два параметра тип 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2014, 15:43
Ответы с готовыми решениями:

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

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

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

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

23
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
29.03.2014, 16:01 2
Имена сравните
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 3
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
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
29.03.2014, 20:30  [ТС] 4
Так же нужно, что бы выводи результат деления или ошибку, если будет возвращено значение - 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
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
31.03.2014, 11:48  [ТС] 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 6
zero-11, после ифа точку с запятой уберите:
C++
1
if ( result >-1)
0
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
31.03.2014, 13:34  [ТС] 7
Позволяет ввести два значения, но не выводит результат - хотя после ввода значений управления передается вызываемой функции - может я здесь неверно объявил 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 8
Цитата Сообщение от zero-11 Посмотреть сообщение
все равно не пашет
Что на входе, что на выходе? Чем больше подробностей - быстрее и точнее будет ответ.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
31.03.2014, 13:44 9
C++
1
int main();//<-- прототип main?
где функция main?
0
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
31.03.2014, 15:49  [ТС] 10
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
Заблокирован
31.03.2014, 15:55 11
Цитата Сообщение от zero-11 Посмотреть сообщение
возвращает результат деления
Кстати, а деление целочисленное или обычное?
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
31.03.2014, 16:17 12
C++
1
2
3
4
5
    cout<<"vvedite znajenije x:" ;
    cin >> one;//<--ввод one
    cout<<"vvedite znajenije y: ";
    cin >> two;//<--ввод two
    cin >> one >> two;//<-- зачем еще раз запрашивать их?
0
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
31.03.2014, 16:29  [ТС] 13
пересылаются введенные данные повторно - объект пери-направления потока ввода - убирал его - все равно компилироваться не хочет.
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
31.03.2014, 16:35 14
Цитата Сообщение от zero-11 Посмотреть сообщение
все равно компилироваться не хочет.
Ошибки в студию!
У меня всё компилируется и работает так, как написано(ошибки в логике не учитываю).
C++
1
if ( valone == 0)
то будет ноль, а вот если valtwo будет равен нулю, то будет бо-бо
0
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
31.03.2014, 16:38  [ТС] 15
unsigned short int Divivder - объявляет функцию реализующую целочисленное деление а результат возвращает в виде без-знакового короткого целого - имеет в виду что необходима signed short int Divivder-?
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
31.03.2014, 16:39 16
Вообще-то препов, которые выдумывают такие задачки, надо убивать на месте. Из рогатки.
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
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
31.03.2014, 16:56  [ТС] 17
Всем спасибо, разобрался.
0
320 / 225 / 74
Регистрация: 22.11.2013
Сообщений: 865
Записей в блоге: 1
31.03.2014, 17:00 18
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 19
Цитата Сообщение от mustimur Посмотреть сообщение
ЗАЧЕМ НУЖЕН ПРОТОТИП main ()?
Не нужен, но и не противоречит стандарту в упомянутой форме, судя по всему.
0
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
31.03.2014, 17:14  [ТС] 20
Прототип main() - эта главная функция - она стандартная в языке С++ - с нее в соответствии со спецификацией начинается код программы и прототип для нее не определяют - прототип функции необходимо объявить для вызываемой функции - это подпрограмма - это позволяет определить тип имени функции и передаваемые ей параметры - если вещественны числа то double или float или целые - типа int - которые должны быть возвращены в качестве аргументов функции в программе после вызова функции в теле main().

Код
У меня осталось еще три вот таких задачи.
0
31.03.2014, 17:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2014, 17:14
Помогаю со студенческими работами здесь

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

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

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

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

Нужна функция, которая принимает в качестве параметра массив символов char [20] и возвращает число пробелов в нем
Нужна функция, которая принимает в качестве параметра массив символов char и возвращает число...

Написать программу, которая получает три параметра
Добрый день, помогите составить программу. Вот задание: Написать программу которая получает 3...


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

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