Форум программистов, компьютерный форум CyberForum.ru

Решение 4х примеров - C++

Восстановить пароль Регистрация
 
synapse
1 / 1 / 0
Регистрация: 29.10.2010
Сообщений: 70
19.01.2011, 21:20     Решение 4х примеров #1
Здравствуйте у меня есть небольшая проблема.
Необходимо решить 4 задачи по Си - Автор Богатырев.
Номер заданий :
  • 1,86;
  • 2,3;
  • 2,30;
  • 2,31;

1.86.

Напишите программу, которая устанавливает в 1 бит 3 и сбрасывает в 0 бит 6.

Биты в слове нумеруются с нуля справа налево. Ответ:

int x = 0xF0;
x |= (1 << 3);
x &= ~(1 << 6);
В программах часто используют битовые маски как флаги некоторых параметров (признак есть или нет). Например:
#define A 0x08 /* вход свободен */
#define B 0x40 /* выход свободен */
установка флагов : x |= A|B;
сброс флагов : x &= ~(A|B);
проверка флага A : if( x & A ) ...;
проверка, что оба флага есть: if((x & (A|B)) == (A|B))...;
проверка, что обоих нет : if((x & (A|B)) == 0 )...;
проверка, что есть хоть один: if( x & (A|B))...;
проверка, что есть только A : if((x & (A|B)) == A)...;
проверка, в каких флагах
различаются x и y : diff = x ^ y;
2.3. Пусть задан массив int arr[10]; что тогда означают выражения:

arr[0] *arr *arr + 2
arr[2] *(arr + 2) arr
&arr[2] arr+2
2.30. Напишите программу, спрашивающую ваше имя до тех пор, пока вы его правильно не
введете. Для сравнения строк используйте функцию strcmp() (ее реализация есть в главе
"Мобильность").
2.31. Какие значения возвращает функция strcmp() в следующей программе?

#include <stdio.h>
main() {
printf("%d\n", strcmp("abc", "abc")); /* 0 */
printf("%d\n", strcmp("ab" , "abc")); /* -99 */
printf("%d\n", strcmp("abd", "abc")); /* 1 */
printf("%d\n", strcmp("abc", "abd")); /* -1 */
printf("%d\n", strcmp("abc", "abe")); /* -2 */
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2011, 21:20     Решение 4х примеров
Посмотрите здесь:

[C++]10 примеров непереносимого кода. C++
C++ Компилятор для примеров из книги по С++
C++ Список простых примеров на С++ с решениями
Классы в решение примеров C++
C++ Решение 2 математических примеров на C++
Доработка примеров учебника. C++
Задача с решением примеров C++
Генератор простых арифметических примеров C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
19.01.2011, 21:36     Решение 4х примеров #2
Цитата Сообщение от synapse Посмотреть сообщение
2.3. Пусть задан массив int arr[10]; что тогда означают выражения:
arr[0] *arr *arr + 2
arr[2] *(arr + 2) arr
&arr[2] arr+2
arr[0] // значение первого элемента массива
*arr // значение первого элемента массива
*arr + 2 // значение первого элемента массива, увеличенное на два
arr[2] // значение третьего элемента массива
*(arr + 2) // значение третьего элемента массива
arr // адрес первого элемента массива
&arr[2] // адрес третьего элемента массива
arr+2 // адрес третьего элемента массива

Добавлено через 9 минут
Цитата Сообщение от synapse Посмотреть сообщение
2.30. Напишите программу, спрашивающую ваше имя до тех пор, пока вы его правильно не
введете. Для сравнения строк используйте функцию strcmp() (ее реализация есть в главе
"Мобильность").
Например, можно так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
int main(int argc, char *argv[]) {
  const char *my_name = "synapse";
  size_t k_buffer_size = 1024;
  char *buffer = malloc(k_buffer_size);
  do {
    printf("Please, enter your name (%s): ", my_name);
    fgets(buffer, k_buffer_size, stdin);
    buffer[strlen(buffer) - 1] = '\0';
  } while (strcmp(my_name, buffer)!=0);
  free(buffer);
  return 0;
}
Yandex
Объявления
19.01.2011, 21:36     Решение 4х примеров
Ответ Создать тему
Опции темы

Текущее время: 19:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru