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

При любых вводимых данных программа возвращает 0

16.04.2020, 21:52. Показов 1060. Ответов 4

Author24 — интернет-сервис помощи студентам
Нужно написать программу переводящую из полярных координат в декартовы. Программа выдает что decx и decy равны нулю при любых r и a.
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
#include "pch.h"
#include <math.h> 
#include <iostream>
 
struct Points                     //структура, которая содержит декартовы и полярные координаты
{                             
    float decx, decy, r, a;       //decx - координата x, decy - y, r - радиус
}point1;                                // a - угол
 
Points poltodec(Points x) {
    float b, c;
    x.decx = x.r*cos(x.a*(3.14 / 180));  // перевожу угол из градусов в радианы, так как sin и cos принимают значение в радианах
    x.decy = x.r*sin(x.a*(3.14 / 180));  
    return x;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    std::cout << "Радиус: ";
    std::cin >> point1.r;
    std::cout << "Угол в градусах: ";
    std::cin >> point1.a;
    poltodec(point1);
    std::cout << "X=" << point1.decx << std::endl;
    std::cout << "Y=" << point1.decy << std::endl;
}
https://prnt.sc/s0qcm3 - cкриншот работы программы
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.04.2020, 21:52
Ответы с готовыми решениями:

Программа всегда выводит одно и тоже значение при разных вводимых данных
Не думаю, что дело в коде, но значение всегда выводилось n = 2 и pos = 2. #include &quot;stdafx.h&quot;...

SendMessage + TBM_GETPOS возвращает нуль при любых положениях слайдеров
Функция SendMessage(Sliders, TBM_GETPOS, NULL, NULL); возвращает нуль при любых положениях...

Почему метод Math.Pow возвращает 1 при любых значениях
Почему метод Math.Pow((d1*d2*d3),(1.0/3)); возвращает 1 при любых значениях d1,d2,d3?

Программа выдает ноль при любых условиях при вычислении выражения
помогите решить программу на си, у меня выдает неправильный результат(( помогите разобраться в чем...

4
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
16.04.2020, 22:01 2
Цитата Сообщение от kosinoff Посмотреть сообщение
Программа выдает что decx и decy равны нулю при любых r и a.
Так разумеется. Как были в point1 нули, так и остались. Откуда же там возьмется что-то другое? Результат работы функции poltodec возвращается через ее возвращаемое значение. А вы это возвращаемое значение просто игнорируете. Зачем вы делали вот это

C++
1
poltodec(point1);
если вы все равно игнорируете результат?
1
0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 13
16.04.2020, 22:12  [ТС] 3
Я думал что вызвав
C++
1
poltodec(point1);
poltodec изменит значения point1 и после я выведу decx и decy, которые poltodec записала в point1

Добавлено через 6 минут
Мне кажется я понял, что вы имели ввиду. Изменил вывод на:
C++
1
2
    std::cout << "X=" << poltodec(point1).decx << std::endl;
    std::cout << "Y=" << poltodec(point1).decy << std::endl;
И всё заработало как задумывалось, но всё равно не понимаю, почему poltodec не изменила значения в point1
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
16.04.2020, 22:17 4
Лучший ответ Сообщение было отмечено kosinoff как решение

Решение

Цитата Сообщение от kosinoff Посмотреть сообщение
poltodec изменит значения point1 и после я выведу decx и decy, которые poltodec записала в point1
В том, что вы сейчас имеете - не изменит. В функции вы работаете с локальной копией x, которая никак не связана с вашим point1 (Распространенные ошибки)

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

Либо как сейчас - через возвращаемое значение. Тогда при вызове вам нужно не забывать получать из функции это возвращаемое значение, т.е. куда-то его записывать

C++
1
point1 = poltodec(point1);
Либо вам нужно чтобы poltodec действительно меняла содержимое своего аргумента. Тогда параметр нужно получать по ссылке

C++
1
2
3
4
void poltodec(Points &x) {
    x.decx = x.r*cos(x.a*(3.14 / 180));
    x.decy = x.r*sin(x.a*(3.14 / 180));  
}
Либо так, либо эдак. Выбирайте сами, как вам больше нравится.
0
0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 13
16.04.2020, 22:20  [ТС] 5
Понял. Спасибо большое.
0
16.04.2020, 22:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2020, 22:20
Помогаю со студенческими работами здесь

Программа завершается при любых действиях пользователя
Программа заканчивается, даже если пользователь выбрал продолжить программу. В чём проблема? Код...

подскажите что делать при вводимых данных 10 25 и 5 20 программа работает не правильно должна выводить 135 подскажите что делать
Вывод В выходной файл выведите одно число - сколько ударов сделали часы за этот отрезок времени.

Программа выдает только одно значение при любых значениях xn и xk
program LAB591; uses crt; const t=1e-9; var x,y,c,z,k:extended; xn,xk,h:real; i:word; BEGIN...

При любых значениях n программа выдает одно и то же (не верное) значение
Помогите решить задачу при помощи цикла &quot;for&quot;, затем при определенных значениях n программа должна...

При любых данных ответ выводит 0.00
Добрый вечер! Помогите, пожалуйста, найти ошибку. При любых данных ответ выводит 0.00...

Квадратное уравнение при любых данных
Решить квадратное уравнение при любых исходных данных.


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

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