Вопрос № 161600: Здравствуйте эксперты, подскажите как можно сделать следующее: пишу в codeblocks записал в переменную типа INT число и хочу каждый его бит считать в переменную типа CHAR Через указатели не смог сделать, если указатель сделать на тип INT то е...
Вопрос № 161642: Уважаемые эксперты помогите с следующими задачами: 1) Удвоить в тексте каждую литеру. Текст находится в текстовом файле. 2) Вычислить значение функции в заданной
точке x. 3) Определить, есть ли среди цифр заданного n - значного целого числа ...
Вопрос № 161.600
Здравствуйте эксперты, подскажите как можно сделать следующее: пишу в codeblocks записал в переменную типа INT число и хочу каждый его бит считать в переменную типа CHAR Через указатели не смог сделать, если указатель сделать на тип INT то если к адресу добавлять единицу то к адресу добавиться 4 байта, пробовал присвоить адрес переменной типа INT в указатель на CHAR так ошибка получается, не дает компилятор. Как можно сделать это? вообще как можно независимо от типа получиться адрес чего-либо как
просто обычное число, и обычное число превратить в адрес и работать с этим адресом?
Отправлен: 28.02.2009, 11:14
Вопрос задал: Tribak (статус: Студент)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: Micren
Здравствуйте, Tribak! В таких случаях необходимо выполнять операцию явного приведения:
Код:
#include <iostream>
using namespace std;
int main() { int number=0x12345678; char *chArr=(char*)&number; for(unsigned i=0;i<4;i++) { cout<<"offset="<<i<<"
value="<<hex<<(int)chArr[i]<<endl; } system("PAUSE"); return 0; }
Ответ отправил: Micren (статус: Студент)
Ответ отправлен: 28.02.2009, 11:28
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 244685 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Отвечает: Petya-kurochkin
Здравствуйте, Tribak! Вот еще как можно получить значения ВСЕХ битов какого-либо типа. Делается это с помощью объединений и полей. Код снабжён комментариями, мало того, я его оттестил в Code::Blocks, наслаждайтесь.
Приложение:
--------- За здоровый фанатизм!
Ответ отправил: Petya-kurochkin (статус: 5-й класс)
Ответ отправлен: 28.02.2009, 11:42
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 244688 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Вопрос № 161.642
Уважаемые эксперты помогите с следующими задачами: 1) Удвоить в тексте каждую литеру. Текст находится в текстовом файле. 2) Вычислить значение функции в заданной точке x. 3) Определить, есть ли среди цифр заданного n - значного целого числа одинаковые цифры. 4) Найти сумму четных чисел в интервале от m до n. Числа m и n задаются при вводе. Заранее благодарен.
Отправлен: 28.02.2009, 22:05
Вопрос задал: Xz1991xz
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Абельхарисов Руслан/Marked One
Здравствуйте, Xz1991xz! Код к четвертой задаче:
Код:
//Проверялся в Microsoft Visual C++ 2008 Express Edition #include "stdafx.h" #include "iostream"
using namespace std;
int _tmain(int argc, _TCHAR* argv[]) { //Переменные m и n int m,
n; //Получаем m и n cout << "m, n: "; cin >> m >> n; //Сумма int sum = 0; //цикл в котором перебираем все в интервале (m; n) for (int i = m + 1; i < n; i++) { //Если остаток от деления числа на 2 равен 0, то число четное и прибавляем его к сумме if (i % 2 == 0) { sum += i; } } //выводим результат cout << "result: " << sum <&
lt; endl; system("PAUSE"); return 0; }
Удачи!!!
--------- Нам не дано предугадать, как слово наше отзовется (C) Тютчев
#thank 244751 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает: Hromovnik046
Это исправленная версия моей программы для вашего задания №3: "Определить, есть ли среди цифр заданного n - значного целого числа одинаковые цифры." Вот код программы:
// Формирование делителя для выборки отдельных цифр числа int
set (int set_i, int count) { int result = 1, difference = (count - set_i); for (int i = 1; i <= difference; ++i) result *= 10;
int main(int argc, char* argv[]) { int number, ver, check = 0, counter, first_digit, second_digit; bool res;
cout << "Vvedite simvol EOF po okon4aniu vvoda.
" << "Chislo ne mojet na4inat`sya s "0".
" << "Vvedite chislo: "; cin >> number;
while ((ver = cin.get()) != EOF) // Программа завершается, когда // пользователь жмёт Ctrl+Z { res = false; // Одинаковых цифр нет counter = 1; check = number / 10;
while (check != 0) // Нахождение кол-ва цифр в числе { check /= 10; counter++; }
while (counter != 1) { if (res == true) break; for(int j = 1, k; j < counter; ++j) { first_digit = number / set(j, counter) % (k =
10); second_digit = number % set(counter - 1, counter); res = comp(first_digit, second_digit); if (res == true) { cout << "Chislo imeet odinakovble cifrbl.
"; break; } } number /= 10; // Уменьшение числа на одну цифру с конца check = number / 10; counter = 1; while (check != 0) // Пересчёт кол-ва цифр получившегося числа { check /= 10; counter++; } } if (res == false) cout << "Chislo ne imeet odinakovblh cifr.
"; cout << "Vvedite chislo: "; cin >> number; } return 0; } //---------------------------------------------------------------------------
ЗЫ: эту прогу можно сделать и через массивы и через строки и ещё бог знает как, что гораздо легче. Но так как вы не сказали, как именно решать эту задачу, то я предпочёл сделать её с помощью самых начальных знаний и наиболее близко к аналогичному решению в математике или комбинаторике.
Исправления внесены по просьбе автора ответа
--------
∙ Отредактировал: Shapoklak, Академик
∙ Дата редактирования: 04.03.2009, 11:15 (время московское)
Ответ отправил: Hromovnik046 (статус: 3-й класс)
Ответ отправлен: 01.03.2009, 19:29
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 244779 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.