нужны задания практические по С

Ответить
 • Просмотры: 1
Аватара пользователя
bool

Re: нужны задания практические по С

Сообщение bool »

bezumes

когда подключаю , компилятор ругается на его отсутствие вообще у себя.
Аватара пользователя
EvgeniyQQQ

Re: нужны задания практические по С

Сообщение EvgeniyQQQ »

bool

Цитата:

MSDN

Function Information

Minimum DLL Version user32.dll

Header Declared in Winuser.h, include Windows.h

Import library User32.lib

Цитата:

компилятор ругается на его отсутствие вообще у себя

странно, в Builder точно, должно работать.
Аватара пользователя
EvgeniyQQQ

Re: нужны задания практические по С

Сообщение EvgeniyQQQ »

Преобразовать ASCII в Unicode можно с помощью "сишной" функции mbstowcs().

Код:

Код: Выделить всё

#include 
#include 
#include "stdlib.h"
void main()
{
	char str[] = "example";
	wchar_t str_t[sizeof("example")];
	//Функция преобразующая ASCII в Unicode
	mbstowcs(str_t,str,sizeof("example"));
	wprintf(_T("%s\n"),str_t);
}
Аватара пользователя
bool

Re: нужны задания практические по С

Сообщение bool »

1) в MS Visual C++ Express, если успешно прошла компиляция , то при дальнейшем изменении проекта и повторной компиляции он продолжает компилиться по старому, не изменённому, варианту. Пробывал сохранять после изменения, а потом уже компилировать, не помогает =/ Что я делаю не правильно?

2) модераторам: возможно ли название этой темы сменить на "C,C++ | азы" ?
Аватара пользователя
pva

Re: нужны задания практические по С

Сообщение pva »

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

Код:

Код: Выделить всё

std::wstring wstr(const char* s, unsigned size);
std::wstring wstr(const char* s) {return wstr(s, std::strlen(s));}
...
std::wstring wstr(const char* s, unsigned size)
{
    std::wstring w(size, wchar_t());
    MultiByteToWideChar(CP_ACP, 0, s, w.size(), &w[0], w.size());
    return w;
}
Аватара пользователя
bool

Re: нужны задания практические по С

Сообщение bool »

программка для побайтного вывода значения типа double в двоичном представлении:





Код:

Код: Выделить всё

#include "stdafx.h"
#include <iostream>
using namespace std;
union bits {
	bits(double n);
	void show_bits();
	double d;
	unsigned char c[sizeof (double)];
};
bits::bits(double n)
{
	d = n;
}
void bits::show_bits()
{
	int i, j;
	for( j = sizeof(double) -1; j >=0; j--) {
		cout << "Double declaration of the bit" << j << ":";
		for( i = 128; i; i >>=1)
			if(i & c[j]) cout << "1";
			else cout << "0";
			cout << "\n";
	}
}
int main()
{
	bits ob(1991.829);
	ob.show_bits();
	return 0;
}

меня интересует вот эта часть:



Код:

Код: Выделить всё

if(i & c[j]) cout << "1";
else cout << "0";

ведь мы определяем d, а не с[] , почему сравнивают побайтно i и c? потому что они в объединении и следовательно в одной области памяти? объясните пожалуйста поподробнее
Аватара пользователя
bool

Re: нужны задания практические по С

Сообщение bool »

ещё такой полуоффтопный вопрос : что значит
Цитата:



Присылайте ваши резюме на блабла@блаблабла.ru с кодом C++/010



. Что есть C++/010???
Аватара пользователя
pva

Re: нужны задания практические по С

Сообщение pva »

по поводу вопроса:

union - это "объединение", все поля будут занимать одну и ту же память. Это сделано в древнем языке "си" для того, чтобы можно было легко переделать из одного вида в другой. Компилятор автоматически выбирает под такие объединения столько памяти, сколько необходимо, чтобы хранить все члены объединения. Например:



Код:

Код: Выделить всё

union {
  int i;
  char c[3];
} union1;
union1.i = 0x12345678;
// хранится как:
// хранится как:
// адрес    значение  
// 440000   0x78       // i=0x12345678 //c[0]=0x78
// 440001   0x56                       //c[1]=0x56
// 440002   0x34                       //c[2]=0x34
// 440003   0x12

У вас биты отображаются в обратном порядке:

Код: Выделить всё


void bits::show_bits()

{

	int i, j;



               // мы перебираем память задом-наперёд?



	for( j = sizeof(double) -1; j >=0; j--) {

		cout
Аватара пользователя
bool

Re: нужны задания практические по С

Сообщение bool »

pva

спасибо Изображение

т.е. в первой итерации 128 побитно сравнивают с c[j]? объясните пожалуйста как получился первый байт? я попробЫвал вывести значение

c[j], и так какая то хрень получилась, вроде @0000000, оно и понятно, ведь тип то char. Понял я то, что мы идем по разрядам байта с конца, т.е сначала 128, потом 64 , 32 и т.д. А вот как получается результат? Вот кстати и он:





Код:

Код: Выделить всё

байт 7: 01000000
байт 6: 10011111
байт 5: 00011111
байт 4: 01010000
байт 3: 11100101
байт 2: 01100000
байт 1: 01000001
байт 0: 10001001
Аватара пользователя
Admiral

Re: нужны задания практические по С

Сообщение Admiral »

Энтузиазм закончился? Если нет, то вот одна задачка, вернее вопрос, для тех кто и с С++ уже немного знаком, из одного популярного журнала:

"Определить какой из кодов, к какому из синтаксисов (С или С++) относится и объяснить почему, по каким параметрам был найден ответ".



Код:

Код: Выделить всё

forum (o, s)
int o, s;
{
int z;
for (z = 1; n>0; --n)
     z = z*t;
return z;
}



Код:

Код: Выделить всё

//Some text to view on output device
printf("%d %d\n", e*=2, f+=3);



Код:

Код: Выделить всё

for (int z = 0; z< MAXIMUM -1 && o! = '\n'; ++p; summa+=z)



Код:

Код: Выделить всё

int forums: 4

Только не надо разыскивать ни журнал, ни его номер в поисках ответа, попробуйте ответить своими силами, знаниями и пониманиями.
Ответить

Вернуться в «Программирование и базы данных»