Другие языки программирования и технологии

Беда с программой на с++ -не могу сам разобраться

Не стал бы обращаться, но реально не могу устранить несколько косяков.

Совсем недавно начал изучать с++

В процессе создания конвертера (в ms visual c++ 2008 express) столкнулся с несколькими ошибками.

Ниже исходник, в комментариях "камни преткновения" - помогите разобраться, если нетрудно:

#include "stdafx.h"
#include <iostream>
#include <locale>
using namespace std;

double doll, euro, rub;// Переменные валют
char option_operate;// Переменная выбора операции
char exit;// Переменная для выхода/продолжения сеанса

int main()
{
setlocale(LC_ALL, "Russian");

void dol_rub();
void rub_dol();
void dol_euro();
void euro_dol();
void rub_euro();
void euro_rub();

do
{

do
{
cout << "Вас приветствует программа-конвертер валют!\n\n"
<< "Выберите нужную операцию: "
<< "\n\n"
<< "Если вы хотите перевести Доллары в Рубли - введите 1\n"
<< "Если вы хотите перевести Рубли в Доллары - введите 2\n"
<< "Если вы хотите перевести Доллары в Евро - введите 3\n"
<< "Если вы хотите перевести Евро в Доллары - введите 4\n"
<< "Если вы хотите перевести Рубли в Евро - введите 5\n"
<< "Если вы хотите перевести Евро в Рубли - введите 6\n\n"
<< "Ваш выбор: ";
cin >> option_operate;
cout << '\n\n';
}
while(option_operate<1 || option_operate >6);

switch(option_operate)
{
case 1:
dol_rub();
break;
case 2:
rub_dol();
break;
case 3:
dol_euro();
break;
case 4:
euro_dol();
break;
case 5:
rub_euro();
break;
case 6:
euro_rub();
break;
default:
cout << "Ошибка! Запрос некорректен!\n"
<< "Вы должны ввести число от 1 до 6!\n\n";
}

cout << "Хотите ли вы продолжить сеанс, или вы хотите выйти из программы?\n\n";

do
{
cout << "Если вы хотите продолжить сеанс - введите букву \'Y\'\n"
<< "Если вы хотите выйти из программы - введите букву \'N'\n\n";
cin >> exit;

if(exit=='N') // error C2446 (нет преобразования int в void; // error C2040;
{
cout << "Спасибо, что воспользовались нашей программой.\n"
<< "До новых встреч!\n\n";
break;
}
else if(exit='N') // C2659 (функция в кач-ве левого операнда)
cout << "Продолжим сеанс\n\n";

}
while(exit!='Y' || exit!='N'); // error C2446 (нет преобразования int в void; // error C2040;

}
while(exit!='N'); // // error C2040;

return 0;
}

// Описываем функции конвертации
void dol_rub()
{
cout << "Вы выбрали перевод Долларов в Рубли\n"
<< "Введите сумму (в Долларах), которую вы хотите конвертировать: ";
cin >> doll;
cout << '\n';

rub=doll*27.5;

cout << "Это будет " << rub << "Рублей\n\n";
}

void rub_dol()
{
cout << "Вы выбрали перевод Рублей в Доллары\n"
<< "Введите сумму (в Рублях), которую вы хотите конвертировать: ";
cin >> rub;
cout << '\n';

doll=rub/27.5;

cout << "Это будет " << doll << "Долларов\n\n";
}

void dol_euro()
{
cout << "Вы выбрали перевод Долларов в Евро\n"
<< "Введите сумму (в Долларах), которую вы хотите конвертировать: ";
cin >> doll;
cout << '\n';

euro=doll/1.45;

cout << "Это будет " << euro << "Евро\n\n";
}

void euro_dol()
{
cout << "Вы выбрали перевод Евро в Доллары\n"
<< "Введите сумму (в Евро), которую вы хотите конвертировать: ";
cin >> euro;

doll=euro*1.45;

cout << "Это будет " << doll << "Долларов\n\n";
}

void rub_euro()
{
cout << "Вы выбрали перевод Рублей в Евро\n"
<< "Введите сумму (в Рублях), которую вы хотите конвертировать: ";
cin >> rub;

euro=rub/40;

cout << "Это будет " << euro << "Рублей\n\n";
}

void euro_rub()
{
cout << "Вы выбрали перевод Евро в Доллары\n"
<< "Введите сумму (в Евро), которую вы хотите конвертировать: ";
cin >> euro;

rub=euro*40;

cout
Максим V
Максим V
5 568
Переименуйте переменную exit например в exitchar:
char exitchar; // Переменная для выхода/продолжения сеанса
Так как exit - это стандартная функция завершения программы.

И далее по тексту:
if(exitchar=='N')
while(exitchar!='N');
while(exitchar!='Y' || exitchar!='N');
и т. д. , где она ещё используется.

В конце концов имя этой переменной можно написать с большой буквы или всеми большими.

К тому же в строке
else if(exit='N') // C2659 (функция в кач-ве левого операнда)
вместо присваивания "=" нужно написать сравнение "=="
Кайрат Тайтаков
Кайрат Тайтаков
51 590
Лучший ответ
Иван Петров Мда, друзья... Си - это тот еще дебилизм!
От себя добавлю - как только видите закономерность - пытайтесь упростить. Функциями, массивами, массивами с указателями на функции и т. д. .
Пытайтесь писать красиво. Даже если Вы новичок. Посмотрите сколько повторяющихся кусков кода. Программу можно сократить в несколько раз, добавив ещё и "расширяемость" на другие валюты.
Считайте это домашним заданием ;) Если что - пишите.

Удачи =)
Максим V Я понимаю, что пока что нахожусь на уровне примата и пишу соответственно)
Но, как я уже сказал, опыт изучения весьма невелик - 4-5 дней, а если быть более точным, то 4 главы по "Базовому курсу" г. Шилдта (пока что совсем скудной представление о функциях имею, и уж тем более - массивы и указатели, совсем темный лес)

Но, тем не менее, очень благодарен вам за замечания - как только поднаберу достаточную базу, тогда уже буду работать над стилем)

Спасибо
Ваша ошибка - переменная exit, которая уже давно объявленна.

На самом деле это функция void exit(int).
Короч она какбы делает return из любого места программы.

int main()
{
exit(10);
return 0;
}

вернётся 10.
Санёк ™ † Xxl†
Санёк ™ † Xxl†
9 740
Попробуй этот вариант он легче и помни что настоящий программист стремится минимизировать код от этого зависит работоспобность и скорость выполнения программы

Удачи :) !!!

#include "stdafx.h"
#include <conio.h>
#include <clocale>
#include <iostream>
#include <stdio.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "Russian");

double USD = 7.98, EUR = 11.62, RUB = 0.287; // Цена валюты в отношении своей страны;
double cena, n;
int m;

cout<<"Введите количество валюты для обмена: ";
cin>>n;

cout<<"Введите курс обмена"<<endl<<endl;>eur"<<">USD"<<" 3. RUB->EUR"<<endl<<endl;>rub"<<">RUB"<<" 6. RUB->USD"<<endl<<endl;>>m;
cout<<endl;> "; break;
case 2: cena = (n * EUR) / USD; cout<<" USD -> "; break;
case 3: cena = (n * RUB) / EUR; cout<<" EUR -> "; break;
case 4: cena = (n * USD) / RUB; cout<<" RUB -> "; break;
case 5: cena = (n * EUR) / RUB; cout<<" RUB -> "; break;
case 6: cena = (n * RUB) / USD; cout<<" USD -> "; break;

default: cena = 0; break;
}

if(cena != 0)
{
cout<<" "

Похожие вопросы