ur_naz, wander, вам не соромно з людини знущатися? Які конструктори? Він ледве структури розбирає, причому намагається одночасно з функціями.
Limon, дивіться. Є такий метод програмування - декомпозиція, рух "згори донизу". Велику задачу розбиваємо на маленькі, ті - на ще менші, доки не дістанемося до простих команд. Функції часто можуть допомогти декомпозиції - просто замінимо те, що має бути, на функцію.
Також, я так розумію, ви не зовсім чітко уявляєте собі, що таке функція. Функція - це набір команд, що перетворюють вхідні параметри на значення, що повертається. Так само, як і математична - тільки тут команди мови C++, а не математичні операції.
У вас, я так розумію, є велика задача - зробити меню з вибором, у ньому кілька пунктів. Одним із пунктів має йти те, що ви пишете тут. ОК, поїхали:
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int d;
cout << "Введіть:\n 0 - щоб перевести dek in polar;\n";
cin >> d;
switch (d)
{
case 0:
dek_in_polar();
break;
default:
cout << ("Такого значення немає!");
}
return 0;
}
Нам нічого не треба передавати у функцію - від попереднього коду виконання саме функції dek_in_polar ніяк не залежить. Усе, main написаний. Пішли далі. Як би ми написали функцію з введення, перетворення і виведення координат, якби у нас були стандартні типи координат і окрема функція перетворення у, наприклад, <cmath>?
void dek_in_polar()//функція не приймає параметрів і ніяких значень у main не повертає
{
dek_s coord;
cout<<"Введіть координати\n";
cin>>coord;
polar_s pcoord = transform_dec_to_polar(coord);
cout << "\nПолярна система:\n";
cout<<pcoord<<"\n";
}
Класно було б, правда? Однак, на жаль, cin та cout не вміють працювати з нашими структурами. Насправді їх можна навчити, але поки що перепишемо функціями:
void dek_in_polar()
{
cout<<"Введіть координати:\n";
dek_s coord = input_dek(); //функція не приймає параметрів і повертає введений з клавіатури dek_s, якийзаписуємо в coord
polar_s pcoord = transform_dec_to_polar(coord);
cout << "\nПолярна система:\n";
output_polar(pcoord); //функція приймає параметром polar_s і виводить його
}
О, це вже схоже на щось, що можна зробити, правда?
dek_s input_dek()
{
dek_s dek;
cout << "\n Введіть значення х: "; cin >> dek.x;
cout << "\n Введіть значення y: "; cin >> dek.y;
return dek; //ми ввели dek, а тепер повертаємо його значення туди, звідки викликали input_dek()
}
void output_polar(polar_s polar)
{
cout<<"r="<<polar.r<<" t="<<polar.t;//виводимо елементи того polar_s, що нам передали у функцію
}
Вам лишається тільки написати функцію transform_dec_to_polar, що приймає dek_s, створює відповідний polar_s і повертає його. Впораєтеся?