Консультация # 184638: Здравствуйте! У меня возникли сложности с таким вопросом: 1. В операционной системе MS Windows файл "tmp.dat" создается в результате выполнения следующего фрагмента программы: int a[3]; int i; FILE *f = fopen("tmp.dat", "wt"); a[0] = 1; a[1] = 10; a[2] = 100; for (i = 0; i < 3; ++i) {...
Консультация # 184641: Здравствуйте! Прошу помощи в следующем вопросе: Помогите решить задачу С++ в консольном виде, с коментариями Точка на экране в текстовом (или графическом режиме). Должны быть предоставлены возможности: ∙ высветить точку в определенном месте экрана определенным цветом; ∙ определить, видима ли точка в данный момент; ∙ получить координаты ...
Здравствуйте! У меня возникли сложности с таким вопросом: 1. В операционной системе MS Windows файл "tmp.dat" создается в результате выполнения следующего фрагмента программы: int a[3]; int i; FILE *f = fopen("tmp.dat", "wt"); a[0] = 1; a[1] = 10; a[2] = 100; for (i = 0; i < 3; ++i) { fprintf(f, "%d\n", a[i]); } fclose(f); Чему равен размер файла "tmp.dat" в байтах?
2. Рассмотрим следующий
фрагмент программы: #include <string.h> . . . int n; char a[32]; strcpy(a, "e2e4e7e5"); strcpy(a + 2, "e3"); strcpy(a + 6, "e6d2d4"); n = strlen(a);
Чему будет равно значение переменной n в результате выполнения этого фрагмента?
3. Рассмотрим следующий фрагмент программы: #include <string.h> . . . int n; char a[32]; strcpy(a, "
;abcdefgh" + 5); strcpy(a + 4, "1234"); n = strlen(a); Чему будет равно значение переменной n в результате выполнения этого фрагмента?
4. Рассмотрим следующий фрагмент программы: #include <string.h> . . . int n; char a[32]; strcpy(a, "e2e4"); strcpy(a + 5, "c7c5"); n = strlen(a); Чему будет равно значение переменной n в результате выполнения этого фрагмента?
5. Рассмотрим следующий фрагмент
программы: #include <string.h> #include <сtype.h> . . . int n, i; char a[32]; strcpy(a, "20e"); n = 0; i = 0; while (a[i] != 0) { n *= 16; if ('a' <= a[i] && a[i] <= 'f') { n += (a[i] - 'a') + 10; } else if (isdigit(a[i])) { n += a[i] - '0'; } ++i; } Чему будет равно знач
ение переменной n в результате выполнения этого фрагмента?
6. Рассмотрим следующий фрагмент программы: #include <string.h> #include <сtype.h> . . . int n, i; char a[32]; strcpy(a, "375e10"); n = 0; i = 0; while (a[i] != 0) { n *= 8; if (isdigit(a[i]) && a[i] < '8') { n += a[i] - '0'; } else { break; } ++i; } Чему будет
равно значение переменной n в результате выполнения этого фрагмента?
7. Рассмотрим следующий фрагмент программы: #include <string.h> #include <сtype.h> . . . int n, i; char a[32]; strcpy(a, "11B"); n = 0; i = 0; while (a[i] != 0) { n *= 16; if (isdigit(a[i])) { n += a[i] - '0'; } else if ('A' <= a[i] && a[i] <= 'F') {
n += (a[i] - 'A') + 10; } ++i; } Чему будет равно значение переменной n в результате выполнения этого фрагмента?
Здравствуйте, Заречнева Вера Михайловна! 1. Будут последовательно записаны числа 1, 10, 100. После каждого пара 0x0d, 0x0a (возврат строки). Итого: 3+4+5 = 12 байт 2. a = "e2e3", n = 4 (после второго копирования строка усечется до 4 символов, третье копирует за нулем) 3. a = "fgh", n = 3 (сначала копируем последние 3 байта, последующее копирование происходит за нулем) 4. a = "e2e4", n = 4 (второе копирование за нулем, поэтому строка не меняется) 5. n = 20e16
= 526 (фрагмент преобразовывает hex-строку в hex-число) 6. n = 37508 = 7e816 = 2024 (фрагмент неправильно(!) преобразовывает восьмиричное число-строку в число. По идее, задумывалось преобразовывать либо до конца строки, либо до первого символа-не цифры 0-7 (символ 'e') Неправильность в том, что умножать на 8 надо не до проверки на восьмиричную цифру, а после. 7. n = 11b16 = 283 (фрагмент преобразовывает, ка
к и пример 5, hex-строку в hex-число) Оба примера 5 и 7 имеют ту же некорректность, что и №6!
Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 01.12.2011, 03:05
Здравствуйте! Прошу помощи в следующем вопросе: Помогите решить задачу С++ в консольном виде, с коментариями Точка на экране в текстовом (или графическом режиме). Должны быть предоставлены возможности: ∙ высветить точку в определенном месте экрана определенным цветом; ∙ определить, видима ли точка в данный момент; ∙ получить координаты точки после поворота отрезка, соединяющего эту точку с началом координат, на заданный угол. Описать класс и продемонстрировать его использование.
Здравствуйте, pavell! Например, можно сделать так. Точка выводится в текстовом режиме точкой, цвет меняется как цвет текста консоли. Для поворота точки был применён рассмотренный здесь алгоритм (у нас как бы получается равнобедренный треугольник, одна вершина которого - начало координат, вторая - имеющаяся точка, и последняя - результирующая точка). Размер консоли принят за константу.
Берётся не размер буфера, а именно размер окна. При желании, эти числа можно получить через winapi. Начало координат - приблизительно в центре консоли. Поскольку координаты точки - действительные числа, а в консоли мы можем отобразить только целые, отрисовка приблизительна. Вот пример использования класса:
Кстати, обратите внимание, поскольку на экране ось Y возрастает сверху вниз, а не снизу вверх, для сдвига по ней надо вычитать координату из координаты центра, а не наоборот. Сам код класса в приложении. Проверено в VS 2005. Удачи!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались.
Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора -
для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение.
Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал,
который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом.
Заходите - у нас интересно!