Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2019, 23:03   #1
bylbyl9tor
Пользователь
 
Регистрация: 07.10.2018
Сообщений: 28
Стрелка C++ [передача значений между функциями]

получаю в адной функции переменную, её нужно использовать во второй, не могу понять в чём ошибка, но скорее всего нужны указатели и ссылки

Код:
#include<iostream>
#include <cmath>
#include <string.h>
using namespace std;
int a, b, c;
void katalog(int a, int b, int c, int aa,int bb,int cc)
{
	cout << "           Каталог товаров:" << endl << endl << endl; 
	cout << "Наименование предмета     Количество     Цена " << endl << endl;
	cout << "      Стул                 " << a << "    " << aa << " руб" << endl << endl;
	cout << "      Стол                 " << b << "    " << bb << " руб" << endl << endl;
	cout << "      Шкаф                 " << c << "    " << cc << " руб" << endl << endl;
}

void menu()
{
	cout << "Введите 1 для просмотра каталога" << endl;
	cout << "Если хотите продать мебель, то введите 2 ,если хотите купить мебель то введите 3" << endl;
	cout << "" << endl;
	cout << "" << endl;
	cout << "Введите 5 для просмотра меню" << endl;
	cout << "Введите 0 для выхода из программы" << endl;
}

int sale(int a,int b,int c)
{
	int u;
	int vv, cup;
	do {
		int v;
		cout << "Введите название мебели:" << endl;
		cout << "Стул-1" << endl;
		cout << "стол-2" << endl;
		cout << "Шкаф-3" << endl;
		cin>>u;
		cout << "Введите количество:" << endl;
		cin >> cup;
		if (u==1) a=a+cup;
		if (u==2) b=b+cup;
		if (u==3) c=c+cup;
		cup = 0;
		cout << "Вы желаете продолжить? ДА-111" << endl;
		cin>>vv;
	} while ( vv!= 111);
	}
int main()
{
	setlocale(LC_ALL, "ru");
	int  d, aa, bb, cc, da, chislo, cup;
	a = 3; b = 4; c = 2; aa = 30; bb = 80; cc = 120;
	menu();
	do {
		cin >> chislo;
		switch (chislo)
		{

		case 1:
		{
			katalog(a, b, c, aa, bb, cc);
			break;
		}
		case 2:
		{
			cout << "Магазин может купить вашу мебель только за пол цены!!!!!" << endl;
			cout << "Если вы согласны то введите 11, если нет, то введите 22" << endl;
			cin >> da;
			
			if (da == 11) sale(a,b,c); else menu();
			break;
		}
		case 3:
		{

			break;
		}
		case 4:
		{

			break;
		}
		default:
			menu();
		}
	} while (chislo!=0);
	system("pause");
	return 0;
}
bylbyl9tor вне форума Ответить с цитированием
Старый 18.02.2019, 23:06   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Так с какой переменной проблема?
p51x вне форума Ответить с цитированием
Старый 18.02.2019, 23:13   #3
bylbyl9tor
Пользователь
 
Регистрация: 07.10.2018
Сообщений: 28
По умолчанию

с переменными a b c
bylbyl9tor вне форума Ответить с цитированием
Старый 18.02.2019, 23:20   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Если с глобальными, то и передавать их не надо.
Если хотите передавать и изменять, то да - ссылки или указатели.
p51x вне форума Ответить с цитированием
Старый 18.02.2019, 23:45   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Код:
if (da == 11) sale(a,b,c); else menu();
Вот здесь ещё ошибка ещё. Перед else точка с запятой не ставится.
Вадим Мошев вне форума Ответить с цитированием
Старый 18.02.2019, 23:52   #6
bylbyl9tor
Пользователь
 
Регистрация: 07.10.2018
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Код:
if (da == 11) sale(a,b,c); else menu();
Вот здесь ещё ошибка ещё. Перед else точка с запятой не ставится.
ставиться, прогуглите.
bylbyl9tor вне форума Ответить с цитированием
Старый 19.02.2019, 00:30   #7
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от bylbyl9tor Посмотреть сообщение
ставиться, прогуглите.
Вообще, я спорить с вами не буду, так как C++ почти не знаю. Но я знаю другой язык, Java Script, который обладает тем же синтаксисом, что и C++, конечно, есть и отличия.

Так, всё, кажется, разобрался. Точка с запятой (может) ставит(ь)ся, когда в теле оператора содержится ровно одна инструкция, которая не заключена в фигурные скобки. Ссылка: http://kvodo.ru/uslovnyie-operatoryi-if-i-switch.html
Однако я всегда заключаю тела инструкций в фигурные скобки, даже если тело состоит из одной инструкции. И это я всем советую делать, потом это окупится.

А так, да, я был немного неправ.
Вадим Мошев вне форума Ответить с цитированием
Старый 19.02.2019, 10:22   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Это в Паскале не ставится. Там if then else рассматривается как одна инструкция. Разные подходы разработчиков
А насчет скобок { } - оно конечно, особенно с вложенными if else - не надо напрягать мозг думанием о том - а в каком порядке оно там по умолчанию выполняется.

Последний раз редактировалось digitalis; 19.02.2019 в 10:25.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++, передача значения строки между функциями denkorg Общие вопросы C/C++ 2 17.12.2017 09:52
Передача значений между jsp-страницами botan-32 Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) 2 26.04.2017 18:46
Проблема сохранности строки между функциями класса Явгений Visual C++ 5 02.03.2011 09:48
Передача значений переменных функциями HostileZeth Общие вопросы C/C++ 4 02.12.2010 16:29
Проблема с функциями(передача масива в функцию типа int) sekator Общие вопросы C/C++ 4 27.07.2010 22:13