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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2013, 12:38   #1
winst2014
Пользователь
 
Аватар для winst2014
 
Регистрация: 15.09.2009
Сообщений: 15
Радость Проверка ASCII в двоичной системе.

Доброго времени суток, в универе дали лабу, в которой есть задание реализовать Запись в новый файл из исходного буквы, ASCII коды которых в двоичной системе счисления содержат четное число единиц.
С чтением и записью файлов проблем нет, а вот как быть с ASCII я не представляю.

В программе данные считываются в массив, вот собственно кусочек:

Код:
void TxtFile::OpenFile(char *filename)
{	
	char tmp_char;
	int c = 0;
	
	ifstream infile(filename, ios::in);
	infile.unsetf(ios::skipws);								
	if(!infile)
		{
			cout << "Cannot open file" << endl;
			getch();
			exit(1);
		}
	while(!infile.eof()) 
		{
			infile >> tmp_char;
			buffer[c] = tmp_char;
			c++; 
		}
	buffer[c - 1] = '\0';

	
	cout << "Содержимое файла: " << endl << buffer;
	infile.close();

	
}
winst2014 вне форума Ответить с цитированием
Старый 13.02.2013, 12:55   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
ASCII коды которых в двоичной системе счисления
Это тупо char как число. Определить, содержит ли чётное количество единиц двоичная запись числа, хранящегося, скажем... в int - можете?
Abstraction вне форума Ответить с цитированием
Старый 13.02.2013, 13:11   #3
winst2014
Пользователь
 
Аватар для winst2014
 
Регистрация: 15.09.2009
Сообщений: 15
По умолчанию

т.е если я объявлю переменную типа int, после чего буду присваевать ей значение i-го символа, то смогу получить двоичное знач в int?
winst2014 вне форума Ответить с цитированием
Старый 13.02.2013, 13:36   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

В компьютере ВСЕ величины хранятся в двоичном коде. Вам нужно только проанализировать готовое.
s-andriano вне форума Ответить с цитированием
Старый 14.02.2013, 11:13   #5
rlib
Форумчанин
 
Аватар для rlib
 
Регистрация: 22.05.2012
Сообщений: 352
По умолчанию

Код:
#include <iostream>
bool isEven(char c) {
/*
Возвращает тру, если кол-во битов в байте - четное, и фолз - если нечетное.
*/
  const int BitsInByte = 8;
  const int BitsInChar = BitsInByte*sizeof(char);
  int s=0, k=0;
  for ( int i=0; i<BitsInChar; ++i) {
     if ( (c >> s) & 1 ) ++k;     
     ++s;
  }
  return k%2?false:true;
}
int main()
{
 char c=2;
 std::cout << isEven(c);
 return 0;
}
rlib вне форума Ответить с цитированием
Старый 20.02.2013, 20:08   #6
winst2014
Пользователь
 
Аватар для winst2014
 
Регистрация: 15.09.2009
Сообщений: 15
По умолчанию

спасибо, но я сделал перевод через itoa и в цикле посчитал
winst2014 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
умножение в двоичной системе phasha Помощь студентам 2 26.02.2012 15:44
Признаки деления на 5 в двоичной системе dokgim Помощь студентам 1 19.05.2011 07:48
в двоичной системе незнайка_на_земле Помощь студентам 22 23.02.2011 08:15
вывод числа в двоичной системе jewels Общие вопросы C/C++ 12 11.03.2010 22:20
работа в двоичной системе Toten Помощь студентам 3 06.03.2009 16:35