Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Ввод/вывод и манипулирование



В отличие от аналогичных функций передачи данных потоком все описанные ниже функции работают в пределах активного окна.

Ввод

int cscanf(...); Аналогично функции scanf.

int getch( ); Чтение символа с клавиатуры без отображения на экран.

int getche( ); То же с отображением символа на экране.

char* cgets( char* ); Аналогично функции gets.

Вывод

int cprintf(...); Аналогично функции printf.

int putch( int ); Аналогично функции putchar.

int cputs( char* ); Аналогично функции puts.

Манипулирование цветом и курсором

void clrscr( ); Очистить текущее окно и установить курсор в его левый верхний угол(координаты 1, 1).

void gotoxy( int x, int y); Установить курсор в окне в точку с координатами (x, y). Если обращение к ней некорректно, то оно игнорируется.

Пример.

gotoxy(50, 15); Если правый нижний угол окна расположен в ячейке с координатами (35, 25), то действие не выполняется.

int gettext( int left, int top, int right, int bottom, void *mem); Запомнить содержимое окна с координатами углов(left, top, right, bottom) в области памяти по адресу mem.

int puttext( int left, int top, int right, int bottom, void *mem); Восстановить окно.

int movetext( int left, int top, int right, int bottom, int new_left, int new_top); Скопировать область экрана в новое место.

Возвращаемое значение всех трех функций: 1 – в случае успеха, 0 – при неудаче. Функции gettext, puttext и movetext работают в абсолютных координатах экрана. Hеобходимый объем памяти для хранения содержимого окна: 2*h*w байтов, где h - ширина окна в позициях, w - высота его в строках.

Замечание. Все функции работают только с консолью (экраном). Их называют функциями консольного ввода-вывода.

Управление окном

void window( int left, int top, int right, int bottom); Описывает окно с абсолютными координатами. При некорректных аргументах выполнение игнорируется. Никаких внешних действий на экране не происходит!!!

Управление атрибутом (цветами символа и фона в окне)

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

void textcolor( int color); Цвет символа кодируется целыми значениями из диапазона [0-15].

Пример. textcolor( RED ); // Красный цвет

void textbackground( int color); Цвет фона. Диапазон [0-7].

void textattr( int attr); Одновременное установка цветов символа и фона.

Структура памяти под аргумент attr побитно имеет вид:

7 6 5 4 3 2 1 0

B b b b f f f f ffff – символ, bbb – фон, B – мерцание.

Пример.

textattr( BLACK +( RED < < 4)); // Черный символ на красном фоне

Замечание. Все функции этого пункта только устанавливают цветовой режим, но окраску содержимого окна не производят. Это делают последующие за ними функции консольного ввода-вывода.

Информация о текстовом режиме

void gettextinfo( struct text_info *ptr);

Структура text_info определена в файле coniow.h и имеет вид:

struct text_info{

unsigned short winleft, wintop, winright, winbottom; //Текущее окно

unsigned short attribute, normattr; //Текущий атрибут

unsigned short currmode; //Текстовый режим

unsigned short screenheight, screenwidth; // Размеры экрана

short curx, cury; // Координаты курсора в окне

}

Пример

Формирование окон сообщений, подсказок, полей ввода.

Набор функций:

- message -вывод сообщений,

- status - вывод подсказок,

- diagnos - вывод диагностических сообщений,

- vvod - формирование полей ввода,

- out_text - вывод строки в окно,

- init_window - инициализировать окно,

- clear_window - очистить окно,

- ramka - нарисовать рамку окна.

 

/*****************************/

/* MESSAGE */

/* Вывести сообщение */

/*****************************/

#include < coniow.h>

#define EKRAN BLACK

void message( int nom, // N сообщения

int reg){ // режим: FULL=1-вывод, CLEAR=0-очистить окно

static struct mes{

int beg_x, // Коорди-

beg_y, // наты

end_x, // ок-

end_y, // на

char regim; // r-разрядка, p-плотный

char * text; // Текст сообщения

}def[ ]={ // Описание сообщений

28, 2, 52, 4, 'r', " ВВОД ДАННЫХ",

19, 12, 61, 14, 'p', " Имя файла входных данных",

.........................................

19, 12, 61, 14, 'r', " ВВОД ДАННЫХ ЗАКОНЧЕН"

};

struct mes *p; // Указатель на элемент описания

p=& def[nom-1];

if (reg){

init_window(p-> beg_x, p-> beg_y, p-> end_x, p-> end_y, BLACK ,

LIGHTGRAY );

out_text(2, 2, 200, p-> regim, p-> text);

} else {

clear_window(p-> beg_x, p-> beg_y, p-> end_x, p-> end_y, EKRAN);

}

} // End message

Приведенные ниже функции включены в файл window.c.

/* Вывод строки в окно */

void out_text( int x, // Начальная позиция курсора по X

int y, // Начальная позиция курсора по Y

int kol, // Число выводимых символов

int reg, // Режим: r-разрядка, p-плотный

char *text){ // Текст сообщения

int i;

gotoxy(x, y);

for (i=0; i< kol & & *(text+i)! = '\0'; i++){

if (reg=='r')putch(' ');

if (*(text+i)=='\n'){

y++;

gotoxy(x, y);

} else {

putch(*(text+i));

}

}

} // End out_text

 

Замечание. Символы второй кодовой страницы надо задавать в виде:

\< код символа в 8-й системе счисления>. См. пример ниже.

 

/* Рисование рамки */

void ramka( int width, // ширина(в позициях)

int height){ // высота(в строках)

static unsigned char cont[ ]=" +\226|"; //Символы рамки

int i;

gotoxy(1, 1);

putch(cont[0]);

for (i=2; i< width; i++)putch(cont[1]);

putch(cont[0]);

for (i=2; i< height; i++){

gotoxy(1, i);

putch(cont[2]);

gotoxy(width, i);

putch(cont[2]);

}

gotoxy(1, height);

putch(cont[0]);

for (i=2; i< width; i++)putch(cont[1]);

putch(cont[0]);

} // End ramka

Вопросы для самопроверки и контроля

Вопросы для самопроверки

1. Какой заголовочный файл нужен для работы с окнами?

2. Укажите начальные координаты курсора в текстовом режиме.

Контрольные вопросы

1. Какие функции работают в абсолютных координатах экрана?

2. Что делает функция textattr?

ЗАДАЧИ

Элементарные конструкции

1. Какие нижеприведенных записей можно использовать в качестве имен:

X Begin a[3] 3D_Studuo Step1 sin(x) CTEK a15x Str.X a1 конец _XX x_x

2. Какие из записей ниже являются целыми литералами:

0 +006 -45 3..55 0712 & 034 0xabc 0X12a5 & habc & H12A5

3. Какие из записей ниже можно считать литералами с плавающей точкой:

-123.4 34.05 75. -.05 0.0123 -34.593E-12 -2e5 1D15 d-23 1e1 -1e-1.2 0E-3

4. Записать на языках C и Basic следующие арифметические выражения:

a)

б)

в)

г)

д)

е)

5. Определить количество сотен натурального числа.

6. Дано трехзначное натуральное число n. Записать его в обратном порядке, например, 456 ® 654.


 

7. Записать логическое выражение, принимающее значение true, если точка М (x, y) попадает в заштрихованную область:

a) y б) y

1 1

 

x -1 1 x

1 2

 

-1

в) y г) y

2

-2 1 1 2 x -1 1 x

 

-2 -2

 

8. Записать логическое выражение, принимающее значение true, если из отрезков с длинами x, y, z можно составить треугольник.

9. Начертить на плоскости XY области, в которых перечисленные ниже выражения принимают значения true (выражения записаны на языке C ):

а) x*x+y*y< =1 || x> 0

б) x> y == y> 0

в) x+y< =1 || x> =0 & & ! (y< 0)

г) x*x+y*y< 1 & & y> =x ==y>.5

Простые циклы

1. Вычислить и напечатать таблицу функции:

2x3/(x2+1), если |x|< 3

y =

1.5|tg p/x|, если |x|> =3.

x изменяется от –6 до 6 с шагом Dx=1.

2. Вычислить и напечатать таблицу функции:

e-x sin 2x, если x< 0.4

y =

ln x cos px, если x> =0.4.

x изменяется от –2 до 2 с шагом Dx=0.2.

3. Найти сумму ряда un=n/(n2+1), n=1...¥. Вычисления прекратить при достижения условия un < 10-5.

4. Найти сумму элементов последовательностей, заданных ниже. Вычисления прекратить при выполнении условия: |un|< 10-5.

а) un=xn/(2n)! б) un=x2nsin(xn)/n2.

5. Вычислить cos 15x по формуле:

cos nx = cos (n-1)x cos x – sin (n-1)x sin x,

где cos x = 0.15, sin x = Ö (1 – cos2x).

6. Дано целое M (M > 1). Найти наибольшее целое к, при котором 4k < M.

7. Дан массив: {xi}, i = 1...n. Переставить элементы массива в обратном порядке. Вспомогательный массив не использовать.

8. Дан массив: {xi}, i = 1...n. Найти максимальный по модулю элемент массива.

9. Дан массив: {xi}, i = 1...n. Сформировать массив {yi}, i = 1...n по правилу:

{xn, ..., x3, x1, x2, x4, ..., xn-1}.

10. Дан массив: {xi}, i = 1...n, задающий рост студентов в группе. Определить, выстроены ли они по росту.

11. Дан массив: {xi}, i = 1...n. Определить число " соседств" 2-х положительных чисел.

12. Дан массив: {xi}, i = 1...n. Найти максимальный и минимальный элементы и поменять их местами.

13. Даны массивы: {xi}, i = 1...n, {yi}, i = 1...n. Преобразовать их элементы следующим образом: xi=max(xi, yi), yi= min(xi, yi).

14. Дан массив: {xi}, i = 1...n. Найти сумму элементов, меньших максимального.

15. Дан массив: {xi}, i = 1...n. Поменять местами наибольший из отрицательных и наименьший из положительных элементов.

16. Дан массив: {xi}, i = 1...n. Сформировать массив {yi}, i = 1...n по правилу: расположить все неотрицательные элементы массива x в порядке их следования, затем все отрицательные.

17. Вычислить:

18. Дан целый массив: {xi}, i = 1...n. Выбросить из него все элементы, равные max xi.

19. Дан массив: {xi}, i = 1...n. Найти Sykzk, где yk – отрицательный элемент массива {xi} в порядке следования, zk – неотрицательный элемент того же массива в обратном порядке.

20. Создать целый массив {xi}, i = 1...n, состоящий из чисел Фибоначчи. Числа Фибоначчи вычисляются по формуле: a0=a1=1; an=an-1+an-2.

21. Заданы n материальных точек на плоскости. Каждая точка характеризуется массой m и 2 координатами: x и y. Найти центр " тяжести" этих точек. Расчетные формулы:

xц = Sxi mi / Sxi yц = Syi mi /yi, i = 1...n.

22. Дана матрица {aij}, i =1...n, j = 1...n. Поменять местами элементы строки k с элементами столбца m, сохраняя прежний порядок их следования.

23. Дан упорядоченный по возрастанию значений элементов массив: {xi}, i = 1...n и дано произвольное значение b. Вставить это значение в массив так, чтобы не нарушилась упорядоченность.

24. Дан массив: {xi}, i = 1...n. Преобразовать в массив {xi}, i = 1...n-1 исключением из него минимального элемента массива с сохранением порядка следования остальных элементов массива x.

25. Известны координаты на плоскости n вершин ломаной линии, заданные в порядке обхода. Определить ее длину.

26. Дан массив: {xi}, i = 1...n. Найти возрастающую подпоследовательность наибольшей длины.

27. Дано натуральное число. Выяснить, равен ли квадрат числа сумме его цифр.

28. Дано натуральное число. Является ли оно палиндромом? Примеры палиндромов: 2222, 61116, 04540 и т.д.

29. Клиент вносит в банк ежемесячно некоторые суммы (значение вводится с клавиатуры). Ежеквартально начисляются n процентов на сумму счета. Сколько будет на счете в начале следующего года, если в начале текущего эта сумма составляла N рублей.

Вложенные циклы

1. Даны координаты n точек на плоскости. Найти сумму всех попарных расстояний между точками.

2. Дана матрица {aij}, i =1...m, j = 1...n. Найти индексы максимального элемента. Если их несколько, взять первый из них.

3. Дана матрица {aij}, i =1...n, j = 1...n. Определить, является ли она симметричной, т.е. каждый ее элемент aij при i ¹ j должен быть равен элементу aji.

4. Дано натуральное число n. Вычислить:

1*2+2*3*4+… +n*(n+1)*…2n.

5. Дана матрица {aij}, i =1...m, j = 1...n. Разделить ее элементы на максимальный по модулю элемент.

6. Дана матрица {aij}, i =1...n, j = 1...n. Найти сумму элементов, лежащих на главной диагонали и на двух смежных симметрично расположенных линиях.

7. Дана матрица {aij}, i =1...n, j = 1...n. Найти сумму элементов строк матрицы с отрицательным элементом на побочной диагонали.

8. Дана матрица {aij}, i =1...m, j = 1...n. Сформировать массив {bi}, i = 1...m по правилу:

1, если число положительных элементов i-й строки не меньше числа

bi = отрицательных,

0, в противном случае.

9. Дана матрица {aij}, i =1...m, j = 1…n. Сформировать 2 массива, компоненты которых вычисляются по формулам: xi=max aji, yi=min aji.

10. Дана матрица {aij}, i =1...m, j = 1...n. Определить среднее арифметическое каждого столбца.

11. Дана матрица {aij}, i =1...m, j = 1...n. Сформировать матрицу {bkp}, k =1...m-1, p = 1...n-1 вычеркиванием строки с номером L и столбца с номером N.

12. Дан массив: {xi}, i = 1...n. Отсортировать его по убыванию значений элементов следующим образом:

- найти максимальный элемент и поменять его с первым;

- повторять предыдущий пункт, начиная со второго элемента, третьего и т.д.

13. Дана матрица {aij}, i =1...n, j = 1...n. Найти максимальный среди элементов, лежащих ниже главной диагонали.

14. Дана матрица {aij}, i =1...n, j = 1...n. Найти произведение элементов, лежащих одновременно выше главной и побочной диагонали.

15. Дана матрица {aij}, i =1...m, j = 1...n. Сформировать массив {bi}, i = 1...m по правилу:

1, если ai1> =ai2> =...ain

bi =

0, в противном случае.

16. Дана матрица {aij}, i =1...m, j = 1...n. Найти y = Sxi xm-i+1, i = 1...m, где xiмаксимальный элемент i-й строки.

17. Дана матрица {aij}, i =1...n, j = 1...n. Сформировать массив {bi}, i = 1...n-1 по правилу: bi = количеству отрицательных элементов в i-й линии, параллельной побочной диагонали, проходящей выше нее.

18. Дана матрица {aij}, i =1...m, j = 1...n. Найти второй по величине элемент каждой строки.

19. Дана матрица {aij}, i =1...n, j = 1...n. Поменять местами элементы, симметричные относительно:

- главной диагонали;

- вертикальной оси симметрии (для матрицы m*n);

- побочной диагонали.

20. Дана матрица {aij}, i =1...m, j = 1...n. Поменять местами столбцы, содержащие минимальный и максимальный элементы матрицы.

21. Дана целая матрица {aij}, i =1...m, j = 1...n. Определить количество максимальных по модулю элементов.

22. Дана целая матрица {aij}, i =1...m, j = 1...n. Найти индексы всех максимальных элементов.

23. Дана матрица {aij}, i =1...n, j = 1...n. Вычислить норму матрицы:

а) Взять вместо 10 n.

б)

24. Решить уравнение x3-3x2-5x+1=0 методом деления интервала пополам. Интервал изоляции корня [-1; 1.8]. Точность вычисления e = 10-5.

25. Решить уравнение x+ln(x+0.5)-0.5=0 методом деления интервала пополам. Интервал изоляции корня [0; 2]. Точность вычисления e = 10-5.

26. Дана матрица {aij}, i =1...m, j = 1...n. Найти максимальный среди элементов строк, упорядоченных по убыванию. Если строка не упорядочена, то ее элементы не рассматриваются.

27. Дана матрица {aij}, i =1...m, j = 1...n. Упорядочить элементы каждой строки по убыванию, а сами строки расположить по возрастанию суммы элементов строк.

28. Дан целый массив {xi}, i = 1...n. Получить в порядке возрастания все различные числа в нем.

29. Даны n интервалов на числовой оси, которые, возможно, пересекаются. Преобразовать массив в совокупность непересекающихся интервалов. Найти их количество.

30. Дано натуральное число n. Найти все " тройки" пифагоровых чисел (a2+b2=c2), для которых выполняется условие: a< =b< =c< =n.

31. Даны n точек на плоскости. Выбрать 2 из них такие, что количества точек, лежащих по разные стороны от прямой, проходящей через эти 2 точки, различались наименьшим образом.

32. Построить в пределах экрана треугольник Паскаля. В каждой строке по краям стоят 1, а внутри число равно сумме двух стоящих выше чисел.

1 1

1 2 1

1 3 3 1

1 4 6 4 1

………….

33. Дана матрица {aij}, i =1...n, j = 1...n. Начиная с центра, обойти по спирали по часовой стрелке все ее элементы, включая их в порядке обхода в массив {xi}, i = 1...n*n.

34. Дан массив {aik}, i = 1…n, k = 1…3; где (ai, 1, ai, 2) – координаты центра i-й окружности, ai, 3 – ее радиус. Найти число окружностей, пересекающихся с любой из остальных.

35. Даны целые массивы: {xi}, i = 1...m, {yi}, i = 1...n. Построить:

- пересечение этих множеств,

- объединение их.

Повторяющиеся числа массивов должны быть входить в результат только 1 раз.

Процедуры

Все решения в зависимости от условия задачи оформить в виде функции или подпрограммы.

1. Даны 2 натуральных числа n и m(m< =n). Определить сумму m последних цифр числа n.

2. Известны данные о среднесуточной температуре за каждый день месяца. Определить:

- количество дней, когда температура была ниже 00C;

- среднюю температуру месяца.

3. Даны 4 числа, большие 0. Выяснить, можно ли построить четырехугольник с такими длинами сторон.

4. Определить, является ли заданное натуральное число степенью двойки.

5. Дана матрица {aij}, i =1...m, j = 1...n. Сформировать массив {bi}, i = 1...m, где bi равно числу перемен знака в i-й строке.

6. Найти коэффициенты частного: c0+c1x+...+cn-1xn-1 = (a0+a1x+...anxn) / (b0+b1x).

7. Дана матрица {aij}, i =1...s j = 1...t. Найти максимальное расстояние между строками матрицы. Расстояние Rmn определяется по формуле: |k – l|, где k - № столбца, где расположен максимальный элемент m-й строки, l - № столбца, где расположен максимальный элемент n-й строки. Если таких элементов в строке несколько, то взять первый из них.

8. Дана целая матрица {aij}, i =1...m, j = 1...n. Найти № строки, для которой максимальное число подряд стоящих равных элементов максимально. Если таких строк несколько, то взять последнюю из них.

9. По заданному натуральному числу n определить, является ли число " счастливым". " Счастливым" называют число, состоящее из 2m цифр, у которого сумма первых m цифр равна сумме последних m цифр. Пример. 256193.

10. Дана матрица {aij}, i =1...m, j = 1...n и целые значения k и l. Преобразовать матрицу так, чтобы строка с номером l непосредственно располагалась за строкой с номером k с сохранением порядка следования остальных строк.

11. Дан массив: {xi}, i = 1...n. Переменной L присвоить значение 1, если отрицательные и неотрицательные элементы массива в порядке их следования образуют неубывающую последовательность, 0, если хотя бы одна из этих последовательностей – неубывающая, -1 – в оставшемся случае.

12. Дан массив: {xi}, i = 1...n. Отсортировать его элементы по возрастанию значений методом простых вставок /9, с.105 /.

13. Дана матрица {aij}, i =1...2m, j = 1...2n. Она разбита на 4 неперекрывающихся блока размером m*n. Перестроить матрицу, переставляя блоки по часовой стрелке с сохранением порядка следования элементов. Вспомогательный массив не использовать.

14. Дан массив: {xi}, i = 1...n, целое значение k и произвольное значение R. Элементы массива удовлетворяют условию: xi< =xi+1, i = 1...n-1. Исключить из него элемент с №, равным k, и вставить в него значение R так, чтобы не нарушить условие.

15. Дана матрица {aij}, i =1...m, j = 1...n.

Найти S = min(max aij) – max(min aij).

i j j i

Вспомогательный массив не использовать.

16. Дан массив: {xi}, i = 1...n. Найти номера начального и конечного элементов последней подпоследовательности положительных элементов.

17. Дано целое значение M. Определить, делится ли M нацело на 9. Сумма цифр M должна делиться нацело на 9.

18. В соревновании выступление спортсмена оценивают n(n> 2) судей. Лучшая и худшая оценки отбрасываются. Среднее арифметическое остальныx и составляет оценку спортсмена. Определить ее.

19. Даны 2 массива: {xi}, i = 1...n и {yj}, j = 1...m, упорядоченных по неубыванию. Составить из них массив: {ck}, k = 1...m+n, также упорядоченный по неубыванию.

20. Даны упорядоченный по неубыванию массив: {xi}, i = 1...n и произвольный массив: {yj}, j = 1...m. Слить их в одну упорядоченную по неубыванию последовательность значений: {ck}, k = 1...m+n, скопировав в нее сначала массив x и перенося затем по очереди на нужное место элементы массива y.

21. Дан массив: {xi}, i = 1...n. Перестроить его так: расположить сначала все неотрицательные элементы, затем все отрицательные в порядке их следования в исходном массиве. Вспомогательный массив не использовать.

22. Даны 2 матрицы: {aik}, i =1...m, k = 1...n и {bkj}, k =1...n, j = 1...p. Сформировать матрицу по формуле:

cij = max(min(aik, bkj)), i = 1...m, j = 1...p.

k=1...n

Вспомогательный массив не использовать.

23. Даны 3 массива: {xi}, i=1…l; {yj}, j=1…m; {zk}, k=1…n. Процедура должна вернуть значение true, если отрицательный элемент в массиве z встретится не позднее, чем в массивах x и y, и значение false – в противном случае.

24. Расстояние между двумя множествами точек – это расстояние между двумя наиболее близко расположенными точками этих множеств. Найти расстояние между двумя заданными множествами точек на плоскости.

25. Часовая стрелка образует угол j с лучом, проходящим через центр и через точку, соответствующую 12 часам на циферблате. Определить значение угла для минутной стрелки, а также количество часов и полных минут.

26. Дано время в виде (h, m), где h – число часов, m – число минут. Определить наименьшее число полных минут, через которое часовая и минутная стрелки совпадут.

27. По заданной строке символов, представляющей собой шестнадцатиричную запись положительного целого числа, определить его десятичное значение.

28. Дан целый массив: {xi}, i = 1...n. Определить, является ли эта последовательность чисел периодической, т.е. может ли она быть получено повторением некоторой своей начальной части. Из всех возможных периодов указать наименьший.

29. Найти все простые несократимые дроби, т.е лежащие в диапазоне (0, 1), знаменатель которых не превышает 7. Использовать процедуру нахождения наибольшего общего делителя(НОД).

30. Дана целая матрица {aij}, i =1...m, j = 1...n., состоящая из нулей и единиц. Элемент матрицы равен 1, если на клеточном поле того же размера клетка принадлежит нарисованному на поле прямоугольнику, и равен 0, если нет. Прямоугольники не пересекаются и не касаются друг друга. Найти их количество.

31. Построить матрицу {aij}, i =1...n, j = 1...n, содержащую все простые числа в порядке возрастания.

32. Дано натуральное число n. Определить, имеются ли среди чисел n+1, n+2, …, 2n " близнецы", т.е. простые числа, разница между которыми равна 2.

Работа со строками

1. В последовательности символов заменить каждое вхождение слова " рот" на слово " нос".

2. Дана строка символов. Сформировать из нее строку, содержащую только символы, входящие в другую заданную строку.

3. Дана строка символов. Подсчитать количество входящих в нее символов: ", ", "; ", ": ", пробел, а также количество оставшихся символов.

4. Дано предложение, представляющее собой последовательность слов, разделенных произвольным числом пробелов. Преобразовать его так, чтобы между словами было ровно по одному пробелу.

5. Дана строка знаков и 2 произвольных символа. Произвести замену каждого вхождения первого символа на второй.

6. Дана строка знаков. Определить число различных символов в ней.

7. Дана строка знаков. Определить, можно ли из входящих в нее символов (без повторений! ) составить слово " Привет".

8. Даны 2 строки символов, причем длина первой из них больше длины второй. Определить, содержится ли вторая строка внутри первой как неразрывное целое.

9. Дана строка символов, представляющая собой арифметическое выражение. Определить правильность (число закрывающих должно быть равно числу открывающих) расстановки круглых скобок.

10. Выполнить выравнивание строки, т.е. 1-й символ должен быть прижат к левому краю экрана, последний – к правому, пробелы между словами добавляются равномерно. Полагаем, что длина строки не больше ширины экрана.

11. Определить количество символов в самой длинной последовательности идущих подряд одинаковых символов заданной строки знаков.

12. Имеется последовательность символов. Группы символов, разделенных пробелом(ами), будем считать словами. Выполнить действия:

- подсчитать количество слов;

- подсчитать количество букв " а" в последнем слове;

- количество слов, начинающихся с буквы " б";

- найти количество слов, у которых первый и последний символы совпадают;

- заменить каждое вхождение слова " это" на слово " то";

- найти длину самого короткого слова.

13. Дано натуральное число n(n< 1000). Сформировать строку символов, содержащую его значение на русском языке. Например, для n=769 будет " семьсот шестьдесят девять" .

Разное

1. Дан массив: {xi}, i = 1...n, состоящий из натуральных чисел. Преобразовать массив так, чтобы у каждого исходного числа поменялись местами первая и последняя цифры.

2. Первоклассники на уроке физкультуры не смогли построиться по росту. Найти количество учеников, которые оказались больше следующих в строю соучеников.

3. Дан массив: {xi}, i = 1...n. Найти максимальную длину " пилообразной (зубьями вверх)" подпоследовательности идущих подряд чисел, т.е. ее элементы должны удовлетворять условию:

…[< xk-1> ]xk< xk+1 > xk+2[< xk+3> ]…

4. Чтобы открыть секретный сейф, агент № 007 должен в возрастающем порядке набирать все трехзначные числа, у которых нет одинаковых цифр. Составить программу, которая бы печатала на экране его карманного компьютера такие числа, а также определить, сколько времени понадобится, чтобы открыть сейф, если на набор одного числа он тратит t секунд.

5. Результаты футбольного чемпионата задана в виде целой матрицы размером NxN, диагональные элементы которой равны 0, остальные равны: 3 – победа, 1 – ничья, 0 – поражение. Определить победителя. В случае равенства очков преимущество получает команда, имеющая большее число побед. Если и по этому показателю не выявлен победитель, выдать сообщение о переигровке.

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

7. Дана дата в виде: № дня в месяце, № месяца, год. Проверить ее корректность.

8. Дан порядковый № дня в году и значение года. Определить дату в виде: № дня в месяце, № месяца, год.

9. Дана дата в виде, описанном в предыдущей задаче. Найти порядковый № дня в году.

10. Определить, какой день недели будет 1 сентября текущего года.

11. Определить по заданной дате № дня недели. В расчете исходить из гипотезы, что1/1/1 был понедельник.

12. Найти разницу в днях между 2 заданными датами.

13. Даны координаты n точек на плоскости. Определить № той из них, для которой круг радиуса R содержит максимальное количество точек множества.

14. Даны результаты n (n> 4) бегунов на 100 м, измеренные в сотых долях секунды. Отобрать 4-х лучших для участия в эстафете 4х100 м.

15. На плоскости координатами своих вершин задан выпуклый n-угольник. Вершины упорядочены в порядке обхода по часовой стрелке. Найти площадь n-угольника. Площадь треугольника = Ö p(p-a)(p-b)(p-c); p = (a+b+c)/2, где a, b, c – стороны треугольника.

16. Дана матрица {aij}, i =1...n, j = 1...n. Сформировать матрицу {bij}, i = 1...n, j = 1...n, где bij есть минимальный элемент в треугольнике, образованном главной диагональю, строкой и столбцом, содержащими элемент aij.

17. Дан массив: {xi}, i = 1...n. Определить количество " внутренних" точек массива. Элемент массива называют " внутренней" точкой, если соседние элементы имеют совпадающие с ним знаки.

18. Определить сумму всех чисел Фибоначчи, не превышающих m. Числа Фибоначчи определяются по формуле: a0 = a1 = 1; an = an-1 + an-2. Вспомогательный массив не использовать.

19. Дана матрица {aij}, i =1...n, j = 1...n. Каждую строку матрицы циклически сдвинуть вправо на число позиций, равное № строки.

20. Дана целая матрица размером MxN и задан № строки k. Определить, имеется ли в указанной строке число Фибоначчи.

21. По матрице и № строки определить, что больше: длина максимальной серии положительных элементов или длина максимальной серии отрицательных элементов этой строки.

22. Дана квадратная матрица А. Построить по ней матрицу В по следующему правилу. Через элемент aij проводят 2 прямые, параллельные главной и побочной диагонали. Элемент bij является максимальным в нижнем треугольнике, образованном этими прямыми.

23. Дана матрица А размером MxN. Построить по ней матрицу В по следующему правилу. bij равен сумме элементов матрицы akl, где k> =i и l< =j.

24. Дана целая матрица размером MxN. Перестроить ее, удалив совпадающие и нулевые строки.

25. Заданы положение и массы n материальных точек на плоскости. Найти разбиение этого множества на 2 непустых и непересекающихся множества так, чтобы их центры тяжести находились наиболее близко друг к другу.

 

ПРИЛОЖЕНИЯ

В современных средах разработки программ существуют специальные средства, позволяющие управлять процессом трансляции отдельных модулей, собирать (компоновать) полученные после трансляции объектные файлы в единый загрузочный модуль (расширение.exe ). Загрузочный модуль затем помещается в память компьютера (загружается) и выполняется. Эти средства создают и корректируют файл описания проекта программы. Проект – это набор файлов, используемых при построении приложения. Средства работы с проектами выполняют также и некоторые дополнительные функции, облегчающие разработку.

Приложение 1. Среда разработки MinGW C/C++ 4.8

Среда разработки содержит: компилятор MinGW C/C ++ 4.8.1, отладчик GDB 7.5, текстовый редактор SciTE, справку cppreference.com (июль 2014).

Здесь в качестве оболочки используется текстовый редактор SciTE, дополненный средствами для работы с отладчиком и автоматизированного создания файлов управления процессом построения программы. Специальных средств для создания проекта программы в виде отдельного файла и работы с ним не предусмотрено. Реализация подключения среды разработки MinGW C/C++ 4.8 к программе SciTE выполнена преподавателем кафедры Прикладной математики ЮУрГУ Демидовым А.К.

П1.1. Установка среды

Установочный файл MinGW.7z может быть скачан по адресу: http: //ipc.susu.ac.ru/learn.html, раздел MinIDE v1.1 либо скопирован из директории кафедры Прикладной математики ЮУрГУ h: \ Учебные материалы \ 1 курс \ Информатика и программирование \ MinGW. Файл представляет собой архив, который открывается программой 7-Zip. Папку MinGW в открывшемся окне следует извлечь в нужную директорию. Директория не должна находиться внутри папок, имена которых содержат русские буквы на любом уровне вложенности. То же касается папок с приложениями, для разработки которых используется данная среда.

П1.2. Запуск среды

Программа запускается с помощью командного файла < имя>.{bat | cmd}. Обычно для этой цели используют файл MinIDE.cmd, который должен содержать текст:

set path=< путь к папке установки среды> \MinGW\bin; %path%

" < путь к папке установки\MinGW\SciTE\scite.exe"

Во вложенной папке bin хранятся необходимые файлы для работы среды. К ним относятся:

- g++.exe – компилятор языка С++,

- gcc.exe – компилятор языка С,

- mingw32-make.exe – редактор связей или компоновщик,

- gdb.exe – отладчик

и другие необходимые для работы файлы.

Во вложенной папке SciTE находится программа SciTE.exe, которая является редактором исходного кода и управляет процессом построения, коррекции и отладки проекта, хотя явно файл проекта не создается.

При подготовке решения конкретной задачи необходимо создать для нее отдельную папку в нужной директории и скопировать туда файл MinIDE.cmd. Спецификацию файла можно изменять, например, переименовать его в MinIDE.bat.


Поделиться:



Последнее изменение этой страницы: 2017-04-12; Просмотров: 518; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.213 с.)
Главная | Случайная страница | Обратная связь