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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2010, 20:48   #1
Godod
Пользователь
 
Регистрация: 31.05.2010
Сообщений: 16
По умолчанию Все тот же char

Здравствуйте все. У меня небольшая проблема с передачей типа char.
Прочитав тему: http://programmersforum.ru/showthread.php?t=35257 не помогло. Может быть я что-то не понимаю.
Код программы:
Код:
#include<iostream>
using namespace std;

class proverka
{
private: char a;
public: int x,y,z;
		char set_a(char n)
		{
	    n = a;
		return n;
		}
char b[20];
void fun(char s,int a,int b)
{
	if((s=='b')&&((a-b)>=60))
		cout<<"Vi pensioner"<<endl;
	else if((s=='g')&&((a-b)>=55))
		cout<<"Vi pensioner"<<endl;
}
};
void main()
{
	char n;
	proverka ob;
	cout<<"Vvedite im9:";
	cin>>ob.b;
	cout<<"Vvedite pol:";
	cin>>n;
	cout<<"Vvedite zarplaty:";
	cin>>ob.x;
	cout<<"Vvedite god rojdeni9:";
	cin>>ob.y;
	ob.z=2010;
	cout<<ob.b<<" vawa zarplata: "<<ob.x<<" grn "<<" god rojdeni9:"<<ob.y<<endl;
	ob.fun(ob.set_a(n),ob.z,ob.y);
	cin.get();
	cin.get();
}
Как программа работает(должна): Вы вводите данные и если возраст мужчины(b)<60 тогда выдает:"Вы пенсионер" и также с женской половиной(g).
Суть проблемы: При передачи char n, оно ничего не передает, т.е. в работе программы не выдает:"Вы пенсионер".

Последний раз редактировалось Godod; 31.05.2010 в 21:04.
Godod вне форума Ответить с цитированием
Старый 31.05.2010, 20:57   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Используйте тег {CODE} /*здесь код*/ {/CODE}: исправьте сообщение, чтобы было с code(только вместо фигурных скобок ( { и } ) используйте квадратные( [ и ] )).
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."

Последний раз редактировалось Syuf; 31.05.2010 в 21:01.
Syuf вне форума Ответить с цитированием
Старый 31.05.2010, 22:05   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
class proverka
{
private: char a;
//...
char b[20];
void fun(char s,int a,int b)
//...
};
У вас тут конфликта имен часом нету? Для начала попробуйте переименовать переменные во что-то осмысленное, чтоб имена не повторялись, а потом посмотрим.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 31.05.2010, 23:26   #4
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Код:
class proverka
{
private: char a;
//...
char b[20];
void fun(char s,int a,int b)
//...
};
У вас тут конфликта имен часом нету?
Не будет, this-> наше всё =)
Код:
public: int x,y,z;

Код:
ob.fun(ob.set_a(n),ob.z,ob.y);
Ну хоть static сделайте её
Код:
char set_a(char n)
{
n = a;
return n;
}
Курите до просветления где тут ошибка.
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux

Последний раз редактировалось ozo; 01.06.2010 в 09:56.
ozo вне форума Ответить с цитированием
Старый 01.06.2010, 09:52   #5
Godod
Пользователь
 
Регистрация: 31.05.2010
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Код:
class proverka
{
private: char a;
//...
char b[20];
void fun(char s,int a,int b)
//...
};
У вас тут конфликта имен часом нету? Для начала попробуйте переименовать переменные во что-то осмысленное, чтоб имена не повторялись, а потом посмотрим.
Конфликтов у меня нет, все работает, если перенести все в public.
Godod вне форума Ответить с цитированием
Старый 01.06.2010, 10:12   #6
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Функцию переделай так:
Код:
		char set_a(char n)
		{
	    a = n;
		return a;
		}
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 01.06.2010, 10:22   #7
Godod
Пользователь
 
Регистрация: 31.05.2010
Сообщений: 16
По умолчанию

Цитата:
Сообщение от mrChester Посмотреть сообщение
Функцию переделай так:
Код:
		char set_a(char n)
		{
	    a = n;
		return a;
		}
Спасибо помогло))Банально переделать a=n и пошло)
Godod вне форума Ответить с цитированием
Старый 01.06.2010, 10:46   #8
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Цитата:
Сообщение от mrChester Посмотреть сообщение
Функцию переделай так:
Код:
		char set_a(char n)
		{
	    a = n;
		return a;
		}
А лучше так:
Код:
char set_a( const char n ){
  return ( a = n );
}
А вот это хотя бы вот так :
Код:
    void fun(const char s ){
	if( ( s == 'b' && (z-y) >=60 ) || ( s == 'g' && ( z - y ) >= 55 ) )
	    cout<<"Vi pensioner"<<endl;
    }
Ну и в завершении :
Код:
int main()
http://faq.cprogramming.com/cgi-bin/...&id=1043284376
http://users.aber.ac.uk/auj/voidmain.shtml
http://www.google.ru/search?hl=ru&ne...ong&btnG=Поиск
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 01.06.2010, 14:33   #9
Godod
Пользователь
 
Регистрация: 31.05.2010
Сообщений: 16
По умолчанию

Все спасибо всем за помощь.
Godod вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
все тот же с++ Александе еть я Общие вопросы C/C++ 0 27.04.2010 22:29
все тот же ассемблер Александе еть я Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 31.03.2010 17:54
все тот же паскаль werus Помощь студентам 2 20.04.2009 15:26
Все тот же Pascal dinozavr Помощь студентам 6 19.04.2009 21:03