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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2018, 19:43   #11
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Не надо напраслины выдумывать. Нет там мата (легко проверить, подставляя хорошо знакомые, видимо, ТСу слова) - чтобы не травмировать чувствительную натуру, под диезами скрыто "тупым" . И посты я не леплю подряд - свой после своего - а только в ответ. Неужели трудно понять эту простую вещь ?
Успехов на экзамене ! Я удаляюсь.
digitalis вне форума Ответить с цитированием
Старый 10.07.2018, 21:37   #12
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
вот min@y™ - он точно поможет. Говорит: "Напишешь ему ответ, он сдаст, но таким же ##### и останется - меньше конкурентов "
Это не тот случай, чувак. Но я приятно удивлён тем, что меня тут хоть кто-то помнит!

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 10.07.2018, 22:45   #13
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Ну так это еще с времен delphi.int (Толяныч) Я по этому поводу даже тему замутил - для земляков из delphi.int, но увяла на корню.
Так помоги челу, а то к экзамену не допустят. Я бы и сам, видючи как бедняк мается, но в плюснутых Сях не копенгаген.

Последний раз редактировалось digitalis; 10.07.2018 в 22:48.
digitalis вне форума Ответить с цитированием
Старый 10.07.2018, 22:51   #14
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Так помоги челу, а то к экзамену не допустят.
Я ему в прошлый раз написал прекрасную функцию подсчёта цифр после точки. Так он мне претензии начал предъявлять, что я там использую функции, которые их высочество не знает и знать не хочет.

Оно мне надо?

Имхо, он до сих пор так и не понял, что цифровая электроника работает с инфой только в двоичном виде.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 11.07.2018, 08:58   #15
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

"Преподавательница сказала, что она не такой себе представляла арфу, а поскольку она умела играть только на такой арфе, которую себе представляла, то ушла, не вернув аванс" © журнал "Юность" 196? г.
digitalis вне форума Ответить с цитированием
Старый 11.07.2018, 11:08   #16
Novy
Пользователь
 
Регистрация: 28.06.2018
Сообщений: 38
По умолчанию

Ну поймите, что я НЕ понимаю Вашей функции, попросил объяснить, а Вы начали меня называть невежественным, незнаю каким... Тему проехали, просто СКАЖИТЕ, что мне вставить в getline и я удалюсь....

[NICK]min@y[/NICK], я помнил Вас до сих пор.. и помню сейчас. И буду помнить. И вспомню, если забуду. И запомню. Только помогите чутка с getline и объясните мне принцип работы Вашей функции подсчёта чисел после запятой, будьте добры: многие на Вашем месте так бы и сделали, разговоров лишних не вели бы.

Последний раз редактировалось Serge_Bliznykov; 11.07.2018 в 11:39.
Novy вне форума Ответить с цитированием
Старый 11.07.2018, 11:58   #17
Novy
Пользователь
 
Регистрация: 28.06.2018
Сообщений: 38
По умолчанию

Проблему решил сам без Вас: просто сделал так
Код:
	cin.ignore(size, '\n');
	cin.getline(str, size, '\n');
Воистину волшебная вещь.... Правильно ли так делать ignore на size? Не понял, как это произошло. И код поправить нужно было: только один параметр применялся.
Код:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <iomanip>
#include <Windows.h>

using namespace std;

enum Mask
{
	UPPER = 128,
	SPACE_BETWEEN_LETTERS = 64,
	NEWLINE = 32,
	NOTHING = 16,
	COLOR_AQUA = 8,
	COLOR_GREEN = 4,
	COLOR_BLUE = 2,
	COLOR_BLACK = 1

};

void uppercase(char str[]) {
	char* step = str;
	while (*step != '\0') {
		*step = toupper(*step); // позволяет сделать буквы заглавными
		++step;
	}
}

void lowercase(char str[]) {
	char* step = str;
	while (*step != '\0') {
		*step = tolower(*step);
		++step;
	}
}

void space_between_letters(char *&str)
{
	size_t tmp_size = strlen(str) * 2;
	char *tmp = new char[tmp_size];

	for (size_t i = 0, j = 0; j < tmp_size;)
	{
		if (j % 2 == 0 && str[i] != ' ') {
			tmp[j] = ' ';
		}
		else {
			tmp[j] = str[i];
			++i;
		}
		++j;
	}
	tmp[tmp_size - 1] = '\0';
	delete[] str;
	str = tmp;
}

void new_line(char *&str)
{
	str[strlen(str)] = '\n';
}

void nothing()
{
	cout << "\n OMG, nothing happened! (kidding: this cout was activated) \n";
}

void main() {
	setlocale(LC_ALL, "Russian");
	HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);

	unsigned char settings = 0;
	int size;
	cout << "Введите размер строки: ";
	cin >> size;

	char *str = new char[size] {'\0'};

	cout << "Введите саму строку: ";
	cin.ignore(size, '\n');
	cin.getline(str, size, '\n');

	system("cls");
	
	char user_choise; // Выбор, который пользователь делает

	cout << "Большие (U) или маленькие (L) буквы? (U/L) \n Ваш выбор: ";
	cin >> user_choise;
	
	if (user_choise == 'U')
	{
		settings = Mask::UPPER;
		if ((settings & Mask::UPPER) == Mask::UPPER) {
			uppercase(str);
		}
	}
	
	else
		lowercase(str);

	system("cls");
	
	cout << "Ставить ли пробелы между буквами? (Y/N) \n Ваш выбор: ";
	cin >> user_choise;
		
	if (user_choise == 'Y') {
		settings = Mask::SPACE_BETWEEN_LETTERS;
		if ((settings & Mask::SPACE_BETWEEN_LETTERS) == Mask::SPACE_BETWEEN_LETTERS) {
			space_between_letters(str);
		}
	}
	
	system("cls");
	
	cout << "Ставить ли Enter (\\n) после текста? (Y/N) \n Ваш выбор: ";
	cin >> user_choise;
	
	if (user_choise == 'Y') {
		settings = Mask::NEWLINE;
		if ((settings & Mask::NEWLINE) == Mask::NEWLINE) {
			new_line(str);
		}
	}
	
	system("cls");

	cout << "Вызвать ли nothing? (Y/N) \n Ваш выбор: ";
	cin >> user_choise;

	if (user_choise == 'Y') {
		settings = Mask::NOTHING;
		if ((settings & Mask::NOTHING) == Mask::NOTHING) {
			nothing();
		}
	}
	system("pause");

	system("cls");

	cout << "Выберите цвет Вашей строки: \n";
	cout << "\t 3) Aqua \n";
	cout << "\t 2) Green \n";
	cout << "\t 1) Blue \n";
	cout << "\t 0) Black \n";
	cout << " \n Ваш выбор: ";

	cin >> user_choise;

	if (user_choise == '3') {
		settings = Mask::COLOR_AQUA;
		if ((settings & Mask::COLOR_AQUA) == Mask::COLOR_AQUA) {
			SetConsoleTextAttribute(h, 3);
		}
	}

	if (user_choise == '2') {
		settings = Mask::COLOR_GREEN;
		if ((settings & Mask::COLOR_GREEN) == Mask::COLOR_GREEN) {
			SetConsoleTextAttribute(h, 2);
		}
	}

	if (user_choise == '1') {
		settings = Mask::COLOR_BLUE;
		if ((settings & Mask::COLOR_BLUE) == Mask::COLOR_BLUE) {
			SetConsoleTextAttribute(h, 1);
		}
	}

	if (user_choise == '0') {
		settings = Mask::COLOR_BLACK;
		if ((settings & Mask::COLOR_BLACK) == Mask::COLOR_BLACK) {
			SetConsoleTextAttribute(h, 0);
		}
	}

	cout << "Строка, которая вышла: " << str << endl;

	delete[] str;
	system("pause");
}
Novy вне форума Ответить с цитированием
Старый 11.07.2018, 12:44   #18
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

У getline '\n' по умолчанию, а про буферизацию и ignore для cin написано почти везде... что вы так долго искали не понятно.
p51x на форуме Ответить с цитированием
Старый 11.07.2018, 15:31   #19
Novy
Пользователь
 
Регистрация: 28.06.2018
Сообщений: 38
По умолчанию

Я сказал, что хочу сделать так, что-бы введёная строка могла быть напечатанна и выведенна на русском. В данном случае она работает только для инглиша, а когда строку пишу по-русски - выходит елесть. И я не знал, что нужно использовать ignore для getline. (и такое бывает)

Последний раз редактировалось Novy; 11.07.2018 в 15:34.
Novy вне форума Ответить с цитированием
Старый 11.07.2018, 16:04   #20
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Перечитал первую страницу - нет там про "на русском". Чтобы не было елести надо понимать пару вещей - консоль по умолчанию работает в винде в 866 кодировки, а исходник и строки у вас в 1251 + для не инглиша лучше сразу использовать wcout и что-то уникодное. Ну или преключить кодировку консоли или заниматься кодирование строк туда/сюда.
p51x на форуме Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Битовые операции(с++) Lazy maximka Помощь студентам 2 23.12.2010 18:55
Битовые операции _-Re@l-_ Свободное общение 12 11.07.2010 15:31
Битовые операции ("")(Э_Є)("") Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 04.07.2009 13:19
Битовые операции LEX.darnica Помощь студентам 14 23.12.2007 19:40