Комбинированный тип данных - запись (record)

ЗАНЯТИЕ 3

Обработка последовательностей информации без сохранения их в памяти

Не используя тип массив, решить задачи:

38. Вводится последовательность вещественных чисел. Определить, сколько среди них отрицательных и положительных.

39. Вводится текст. Определить, сколько введено символов цифр и сколько букв латинского алфавита.

40. Вводится строка текста. Определить, сколько символов введено до нажатия клавиши <enter>.

41. Вводится последовательность чисел. Определить:

а) разность между минимальным и максимальным значениями;

б) определить порядковые номера максимума и минимума во вводимой последовательности;

в) каким по счету в последовательности идет число, равное x;

г) вывести на экран все числа, попадающие в заданный интервал;

д) определить, упорядочена ли вводимая последовательность.

42. Вводится последовательность символов (текст). Определить, все ли перечисленные задачи №26 можно решить применительно к тексту? Написать соответствующие программы.

43. Вводится строка символов. Определить число вхождений в нее группы букв вида “abc”.

44. Определить частоту попадания букв латинского алфавита в текст.

45. Распечатать таблицу ASCII кодов символов.

ЗАНЯТИЕ 4

Массивы (array), строки (string), множества (set)

46. Написать программы решения задач 1 – 7 занятия 1.

Используя тип массив (array), решить задачи:

47. Перемножить матрицы А и В, результат сохранить в матрице С.

48. Найти среднеарифметическое значение элементов одномерного массива.

49. Дано n чисел. Распечатать их в обратном порядке по m чисел в строке.

50. Двухмерный массив А переписать в массив В в обратном порядке.

51. Поменять местами максимальное и минимальное значения массива.

52. Проверить упорядоченность строк массива. Найти номера неупорядоченных строк.

53. Вводится текст, состоящий из нескольких строк. Определить

а) самую длинную строку в тексте;

б) количество введенных строк;

в) количество пустых строк;

г) номер строки, равной заданной;

д) количество слов в i-й строке (слова разделяются пробелами);

е) найти самое длинное слово в i-й строке.

54. Определить, входит ли подстрока в строку, и с какой позиции.

55. В массиве символов определить максимальное число идущих подряд пробелов.

56. Поменять местами

а) строки наибольшей и наименьшей длины;

б) строки, наибольшую и наименьшую по значению.

57. Дан список фамилий студентов некоторой группы. Сохранить его в массиве. Упорядочить фамилии в списке по алфавиту.

58. Добавить в массив, хранящий список фамилий студентов, новую фамилию, не нарушая упорядоченности списка.

ЗАНЯТИЕ 5

Процедуры, функции

Комбинированный тип данных - запись (record)

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

60. Описать структуру данных ведомость. Заполнить ее. Определить:

а) средний балл группы за экзамен;

б) список студентов, получивших оценку 2.


61. Описать структуру: список студентов и их оценки за сессию по четырем предметам. Реализовать в виде подпрограмм алгоритмы определения:

а) списка претендентов на отчисление (студентов, получивших три двойки за сессию);

б) списка отличников для назначения повышенной стипендии.

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

  ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С++ ЗАНЯТИЕ 1 Введение в программирование на С++ 1. Как работает следующая программа?   #include <stdio.h> void main() { int day, year; char month[10]; printf ("Программа работает\n"); scanf ("%d %d", &day, &year); scanf ("%s", month); printf("Сегодня %d %s %d", day, month, year); } Пусть формат ввода даты с экрана имеет вид: 5 septemba 2005 Как следует модифицировать приведенную выше программу для ввода даты?   2. Вводятся два числа. Вывести на экран сумму, разность и большее из чисел.   3. Чему равен результат работы функций printf? а) int i=2; printf(“%d”, i++); printf(“%d”, ++i);   б) int i=1, j=5; printf(“%d”, i+++j); printf(“%d %d %d”, i, i+++j, i); printf(“%d”, ++i+j); printf(“%d %d %d”, i, ++i+j, i);   в) int i=2, k=123; printf(“%d %d”, k>>i, k<<i);   г) int x=20000; int y=x*2; // sizeof(int) = =? y= =? printf(“y=%d”,y); // Как хранятся отрицательные числа?   д) char ch=’a’; printf(“%c, %c, %c, %c\n”, ch, ch+1, ch+2, ch+3); ch=’a’; printf(“%c, %c, %c\n”, ch+1, ch+2, ch+=3); ch=’a’; printf(“%c, %c, %c, %c\n”, ch, ++ch, ++ch, ++ch);   е) printf(“%d, %d, %d, %d\n”, sizeof 4.2, sizeof (5+1), sizeof “5+1”);   4. С клавиатуры вводятся фамилия студента и оценки результатов сдачи экзаменов в формате Sidorov 5 5 4 4 Определить средний балл студента.   5. С клавиатуры вводится текст в следующем формате: Длина=125см, ширина=10см Определить площадь прямоугольника, выделив числа из текста.   ЗАНЯТИЕ 2, 3 Управляющие инструкции языка С++ 6. Распознать вводимый с клавиатуры символ – это цифра, буква латинского алфавита, пробел или другой символ.   7. Вычислить сумму n натуральных чисел тремя способами, используя циклы for, while, do.   8. Если два значения имеют одинаковый знак, то определить их сумму, иначе из большего вычесть меньшее.   9. Напечатать таблицу квадратов натурального ряда чисел по k квадратов в строке, каждый раз вставляя запрос на продолжение. Вид экрана:   1 4 9 16 25 // при к=5 Продолжить(y/n)? // в зависимости от ответа печать следующих 36 49 64 81 100 // значений квадратов или останов   10. Вывести на экран текст, являющейся управляющей строкой функции printf, разорванной клавишей <Enter> при вводе, в одну строку на экране.   11. Присвоить переменной х: а) байтовое значение, все биты которого равны 1; б) двухбайтовое значение, все биты которого равны 1.   12. Распечатать побитовое значение целого беззнакового числа. 13. Вводится числовая последовательность:   а) определить сумму положительных и сумму отрицательных чисел; б) определить сумму четных чисел; в) найти максимальное и минимальное значения; г) организовать поиск заданного значения; д) проверить упорядоченность вводимой последовательности.   14. Вводится символьная последовательность. Решить перечисленные выше задачи в) – д).   15. С клавиатуры вводится текст. Определить количество символов-цифр, букв латинского алфавита и остальных символов текста.   16. Определить значение факториала n!   17. Распечатать таблицу ASCI I кодов символов.   18. Написать функцию, возвращающую: а) сумму двух чисел; б) большее из двух чисел; в) поразрядную конъюнкцию двух чисел.   19. При покупке 1-го килограмма фруктов вы платите 50 руб. При покупке каждого последующего на 2 руб. дешевле предыдущего. Напечатать 10 строк таблицы в виде:   Количество (кг) стоимость (руб.) 1 50 2 98 3 146 .... ЗАНЯТИЕ 4, 5 Массивы и указатели   20. Используя функции, осуществить ввод двухмерного массива целых чисел. Написать функции, реализующие: а) поиск заданного значения; б) определение суммы элементов массива; с) меняющую местами max и min элементы в строках массива.     21. Инициализировать внешний массив в операторе описания и определить сумму элементов массива, возложив задачу подсчета размера массива на компилятор.   22. Массив инициализируется в инструкции описания:   int a[ ][3] = {{1,2,3}, {4,5,6}, {0,2,4}, {6,8,0}};   Найти сумму четных элементов массива.   23. Вычислить сумму элементов двухмерного массива, не используя переменные с индексами.   24. Две строки объединить в одну с помощью указателей. Значения строк известны и объявлены три указателя, которые следует связать соответственно с первой, второй и результирующей строкой:   char str1[ ] = ”Язык программирования”; char str2[ ] = ”Borland C++”; char *p1, *p2, *p3;   25. Вычислить адрес начала, конца массива и его среднего элемента.   26. Организовать ввод в массив текста: a) с помощью функций посимвольного ввода (getchar()); б) с помощью функций ввода строк (gets()); в) с помощью операции ввода cin >>; г) определить самую длинную строку текста; д) поменять самую короткую строку текста с самой длиной; е) осуществить поиск заданной строки в массиве.   27. Найти максимальное значение в массиве, передав его в функцию по адресу и по ссылке.   28. Интерпретировать объявление объектов: 1) int *(*comp[10])(); 2) int (*a)[10]; 3) int *a[10]; 4) int *func()[]; 5) int (*func())[]; 6) int *fun(); 7) int (*func)(); 8) char *(*(*val)())[10]; 9) char **arg; *++*arg; // как вычисляется значение arg? 10) const int n=100; 11) const int * p; 12) int * const p=&x; 13) const int * const p=&n;   29. Написать программу, в которой функция main (int argc, char *argv[]) принимает аргументы из командной строки - n числовых значений и печатает на экране их сумму, причем, если параметры переданы неверно (не принадлежат диапазону типа), то выводится соответствующее сообщение.   30.
for (for (i=0; i<=5; i++) for (j=0; j<10; j++) for (k=0; k<20; k++) {операторы}  
for (for (i=0; i<=20; i++) for (j=0; j<10; j++) for (k=0; k<5; k++) {операторы}  
Определить, какой из двух вложенных операторов цикла работает быстрее:

1) 2)

31. Реализовать рекурсивный алгоритм вычисления ap=a*ap-1.

32. Реализовать метод быстрой сортировки одномерного массива.

ЗАНЯТИЕ 6


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: