
Programmirovanie_i_osnovyi_algo
.pdfпараметров. С целью обработки ошибок предусмотреть кон троль значений, возвращаемых функциями библиотеки Си ^^fopen^\ ^^fscanf^ и операцией new. Подключить необходимые стандартные заголовочные файлы.
Вариант 2, Определен следующий указатель на начало ли нейного списка:
stJTuct Node |
|
// |
NODE: узел |
линейного |
списка |
|
{ |
*рЫпк; |
// |
Pointer |
LINK: |
|
|
Node |
узел |
|||||
dovible |
In fo ; |
// |
указатель |
на очередной |
||
// |
INFOrmat |
ion: |
инф ормация |
|||
} |
*start; |
|
|
|
|
|
Написать прототип, определение и пример вызова функции, которая должна определить, сколько в линейном списке имеется элементов с отрицательными значениями. В частном случае, перед вызовом этой функции линейный список может быть пуст.
Все исходные данные (указатель на начало линейного спи ска) и все результаты работы функции (количество найденных элементов) должны передаваться через список параметров — это обязательное требование.
Вариант |
3. Определен |
следующий |
указатель |
на |
начало ли |
||
нейного списка: |
|
|
|
|
|
|
|
stxnict Node |
|
// |
NODE: узел |
линейного |
|
списка |
|
{ |
*pL±nk; |
// |
Pointer |
LINK: |
|
|
|
Node |
|
|
|||||
|
// |
указатель |
на очередной |
узел |
|||
float |
|
||||||
In fo; |
// |
INFOrma tion: |
информа |
ция |
|||
} |
*start/ |
|
|
|
|
|
|
Написать прототип, определение и пример вызова функции, которая должна определить, сколько в линейном списке имеется элементов, в которых хранится заданное значение add. В частном случае, перед вызовом этой функции линейный список может быть пуст.
Все исходные данные (add^ указатель на начало линейного списка) и все результаты работы функции (количество найден ных элементов) должны передаваться через список параметров — это обязательное требование.
Вариант 4. Определен следующий /-^азатель на начало ли нейного списка:
380
struct |
Node |
|
// |
NODE: узел |
линейного |
списка |
|
{ |
Node |
*pLlnk; |
// |
Pointer |
LINK: |
|
|
|
узел |
||||||
|
±nt |
Info; |
// |
указатель |
на очередной |
||
} |
// |
INFOrmation: |
информация |
||||
|
*start; |
|
|
|
|
|
Написать прототип, определение и пример вызова функции, которая должна в начало линейного списка добавить еще один эле мент, в котором будет храниться значение add. В частном случае, перед вызовом этой функции линейный список может быть пуст.
Все исходные данные {add^ указатель на начало линейного списка) и все результаты работы функции (указатель на начало линейного списка) должны передаваться через список парамет ров. С целью обработки ошибок предусмотреть контроль значе ния, возвращаемого операцией new.
|
Вариант |
5. Определен |
следующий |
указатель на |
начало ли |
||
нейного списка: |
|
|
|
|
|
|
|
struct |
Node |
|
// |
NODE: узел |
линейного |
списка |
|
{ |
Node |
*pLink; |
// |
Pointer |
LINK: |
|
|
|
узел |
||||||
|
float |
Info; |
// |
указатель |
на очередной |
||
} |
// |
INFOrmation: |
информация |
||||
|
*start; |
|
|
|
|
|
Написать прототип, определение и пример вызова функции, которая должна в конец линейного списка добавить еще один эле мент, в котором будет храниться значение add. В частном случае, перед вызовом этой функции линейный список может быть пуст.
Все исходные данные {add, указатель на начало линейного списка) и все результаты работы функции (указатель на начало линейного списка) должны передаваться через список парамет ров. С целью обработки ошибок предусмотреть контроль значе ния, возвращаемого операцией new.
Вариант 6. Определен следующий структурный тип:
struct |
Node |
|
// |
NODE: |
|
|
|
|
{ |
|
^pLink; |
// |
узел |
линейного |
списка |
на |
|
Node |
// |
Pointer |
LINK: указатель |
|||||
|
t |
|
// |
очередной |
узел |
списка |
|
|
in |
Info; |
// |
INFOrm at |
ion: |
|
|
||
|
|
|
// |
содержательная |
информация |
} ;
В текстовом файле операционной системы "TestS.in" содер-
381
жится некоторое количество целых чисел, разделенных символами пробельной группы ( ' ', V , '\«' ).
Написать прототип, определение и пример вызова функции, которая должна BBCCTJI ИЗ файла ''TestS.in'' содержащиеся в нём це лые числа и запомнить их в узлах линейного списка, в котором каж дый узел (динамически размещенная в памяти структура) имеет тип Node. При этом первое прочитанное число должно находиться в первом от начала узле линейного списка, второе число - во втором узле и т.д.
Все исходные данные (указатель на "имя. расширение** файла ввода) и все результаты работы функции (указатель на начало линейного списка) должны передаваться через список параметров. С целью обработки ошибок предусмотреть кон троль значений, возвращаемых функциями библиотеки Си
^^fopen^\ ^^fscanf^ и операцией new. |
Подключить необходимые |
|||||
стандартные заголовочные файлы. |
|
|
|
|||
Вариант 7. Определен следующий указатель на начало ли |
||||||
нейного списка: |
|
|
|
|
|
|
зЬгасЬ Node |
|
// |
NODE: узел |
линейного |
списка |
|
{ |
*рЫпк; |
// |
Pointer |
LINK: |
|
|
Node |
узел |
|||||
float |
Info; |
// |
указатель |
на очередной |
||
// |
INFOrmation: |
информация |
||||
} |
*start; |
|
|
|
|
|
Написать прототип, определение и пример вызова функции, которая в процессе просмотра списка выводит данные (числа) в файл на магнитном диске ^'f.ouV\ не разрушая информацию в линей ном списке. В частном случае, перед вызовом этой функции линей ный список может быть пуст.
Все исходные данные (указатель на начало линейного спи ска, указатель на **имя. расширение** файла вывода) должны пе редаваться через список параметров. С целью обработки ошибок предусмотреть контроль значения, возвращаемого функцией библиотеки Си ^^fopen^\ Подключить необходимые стандартные заголовочные файлы.
|
Вариант |
8. Определен |
следующий |
указатель на |
начало ли |
||
нейного списка: |
|
|
|
|
|
|
|
struct |
Node |
|
// |
NODE: узел |
линейного |
списка |
|
{ |
Node |
*рЫпк; |
// |
Pointer |
LINK: |
|
|
|
|
||||||
|
|
|
// |
указатель |
на очередной |
узел |
382
float |
Info; |
// INFOrm at ion: информа ция |
I |
*start; |
|
Написать прототип, определение и пример вызова функции, которая в процессе просмотра списка выводит данные (числа) в файл на магнитном диске "f.ouf\ одновременно освобождая память, занятую линейным списком. В частном случае, перед вызовом этой функции линейный список может быть пуст.
Все исходные данные (указатель на начало линейного спи ска, указатель на **имя. расширение** файла вывода) и результа ты работы функции (указатель на начало линейного списка) должны передаваться через список параметров. С целью обра ботки ошибок предусмотреть контроль значения, возвращаемо го функцией библиотеки Си ^^fopen^\ Подключить необходимые стандартные заголовочные файлы.
Вариант |
9. Определен |
следующий |
указатель |
на |
начало ли |
|||
нейного списка: |
|
|
|
|
|
|
|
|
stxnjct |
Node |
|
// |
NODE: узел |
линейного |
|
списка |
|
{ |
|
*рЫпк; |
// |
Pointer |
LINK: |
|
|
|
Node |
|
|
узел |
|||||
float |
|
|
// |
указатель |
на очередной |
|||
|
Info; |
// |
INFOrm ation |
: информа |
ция |
|||
} |
|
*start; |
|
|
|
|
|
|
Написать прототип, определение и пример вызова функции для удаления из списка к последних элементов с освобождением занятой ими памяти. В частном случае, перед вызовом этой функции линейный список может быть пуст или может содержать любое ко личество элементов.
Все исходные данные (указатель на начало линейного спи ска, количество удаляемых элементов) и результаты выполне ния функции (указатель на начало линейного списка) должны передаваться через список параметров.
Вариант 10. Определен следующий указатель на начало ли нейного списка:
stjract |
Node |
|
// |
NODE: узел |
линейного |
списка |
|
( |
|
*рЫпк; |
// |
Pointer |
LINK: |
|
|
Node |
|
узел |
|||||
|
|
|
// |
указатель |
на очередной |
||
float |
|
Info; |
// |
INFOrm ation: |
информа ция |
||
|
|
*start; |
|
|
|
|
|
Написать прототип, определение и пример вызова функции
383
для удаления из списка к первых элементов с освобождением заня той ими памяти. В частном случае, перед вызовом этой функции ли нейный список может быть пуст или может содержать любое коли чество элементов.
Все исходные данные (указатель на начало линейного спи ска, количество удаляемых элементов) и результаты выполне ния функции (указатель на начало линейного списка) должны передаваться через список параметров.
Вариант 11, Определен следующий указатель на начало ли нейного списка:
stmict |
Node |
|
// |
NODE: узел |
линейного |
списка |
||
{ |
|
*pLink/ |
// |
Pointer |
LINK: |
|
|
|
Node |
|
|
узел |
|||||
|
|
|
// |
указатель |
на очередной |
|||
±nt |
|
In fo ; |
// |
INFOrm ati |
|
on : ин форма |
ция |
|
} |
|
*start; |
|
|
|
|
|
|
Написать прототип, определение и пример вызова функции для вставки в линейный список после каждого элемента, в котором хранится значение find, элемента, в котором будет храниться значе ние add. В частном случае, перед вызовом этой функции линейный список может быть пуст или может содержать любое количество элементов.
Все исходные данные (find^ add^ указатель на начало ли нейного списка) должны передаваться через список параметров. С целью обработки ошибок предусмотреть контроль значения, возвращаемого операцией new.
Вариант 12. Определен следующий указатель на начало ли нейного списка:
stmjct |
Node |
|
// |
NODE: узел |
линейного |
списка |
|||
{ |
Node |
|
*рЫпк; |
// |
Pointer |
LINK: |
|
|
|
|
|
|
узел |
||||||
|
±nt |
|
In fo ; |
// |
указатель |
на очередной |
|||
|
|
// |
INFOrm at Ion: |
информа |
ция |
|
|||
} |
|
|
*start; |
|
|
|
|
|
|
Написать прототип, определение и пример вызова функции для удаления из линейного списка элемента, следующего после каж дого элемента, в котором хранится знгченне find. В частном случае, перед вызовом этой функции линейный список может быть пуст или может содержать любое количество элементов.
Все исходные данные (Jind^ указатель на начало линейного списка) должны передаваться через список параметров.
384
Вариант 13. Определен следующий указатель на начало ли нейного списка:
stxract |
Node |
|
// |
NODE: узел |
линейного |
списка |
|
{ |
|
*pLink; |
// |
Pointer |
LINK: |
|
|
Node |
|
узел |
|||||
±nt |
|
Info; |
// |
указатель |
на очередной |
||
|
// |
INFOrmation: |
информация |
||||
} |
|
*start; |
|
|
|
|
|
Написать прототип, определение и пример вызова функции для удаления из линейного списка элемента, предшествующего каж дому элементу, в котором хранится значение y?«(i. В частном случае, перед вызовом этой функции линейный список может быть пуст или может содержать любое количество элементов.
Все исходные данные {find^ указатель на начало линейного списка) и результаты выполнения функции (указатель на нача ло линейного списка) должны передаваться через список пара метров.
Вариант 14. Определен следующий указатель на начало ли нейного списка:
зЬгасЬ |
Node |
|
// |
NODE: узел |
линейного |
списка |
|
{ |
|
*pLink; |
// |
Pointer |
LINK: |
|
|
Node |
|
узел |
|||||
|
|
|
// |
указатель |
на очередной |
||
|
|
Info; |
// |
INFOrm at ion: |
информа ция |
||
} |
|
*start; |
|
|
|
|
|
Написать прототип, определение и пример вызова функции для вставки в линейный список перед каждым элементом, в котором хранится значение find, элемента, в котором будет храниться значе ние add. В частном случае, перед вызовом этой функции линейный список может быть пуст или может содержать любое количество элементов.
Все исходные данные (find, add^ указатель на начало ли нейного списка) и результаты выполнения функции (указатель на начало линейного списка) должны передаваться через список параметров. С целью обработки ошибок предусмотреть кон троль значения, возвращаемого операцией new.
Вариант 15. Определен следующий указатель на начало ли нейного списка:
stzTict Node |
// NODE: узел линейного |
списка |
385
Node |
*pL±nk; |
// |
Pointer |
LINK: |
узел |
|
|
|
// |
указатель |
на очередной |
||
±nt |
Info; |
/ / |
INFOrm at ion: |
мнформа ция |
|
|
} |
*start; |
|
|
|
|
|
Написать прототип, определение и пример вызова функции для удаления из линейного списка второго, четвертого и т.д. эле ментов. В частном случае, перед вызовом этой функции линейный список может быть пуст или может содержать любое количество элементов.
Вариант 16. Определен следующий указатель на начало ли нейного списка:
struct |
Node |
|
// |
NODE: узел |
линейного |
списка |
|
{ |
Node |
*рЫпк; |
// |
Pointer |
LINK: |
|
|
|
узел |
||||||
|
±nt |
Info/ |
// |
указатель |
на очередной |
||
|
/ / |
INFOrm at ion: |
ин форма ция |
||||
} |
|
*start; |
|
|
|
|
|
Написать прототип, определение и пример вызова функции для модификации каждого из элементов линейного списка, в кото ром хранится значение find. Модификация подобных элементов за ключается в хранении в них значения add. В частном случае, перед вызовом этой функции линейный список может быть пуст или мо жет содержать любое количество элементов.
Все исходные данные (find^ add^ указатель на начало ли нейного списка) должны передаваться через список параметров.
Вариант 17. Определен следующий указатель на начало ли нейного списка:
stxract |
Node |
|
// |
NODE: узел |
линейного |
списка |
|
{ |
|
*pLink; |
// |
Pointer |
LINK: |
|
|
Node |
|
узел |
|||||
±nt |
|
Info; |
// |
указатель |
на очередной |
||
|
// |
INFOrm at ion: |
информа ция |
||||
} |
|
*start; |
|
|
|
|
|
Написать прототип, определение и пример вызова функции для удаления первого и последнего элементов списка с освобожде нием занятой ими памяти. В частном случае, перед вызовом этой функции линейный список может быть пуст или может содержать любое количество элементов.
Все исходные данные (указатель на начало линейного спи ска) и результаты работы функции (указатель на начало линей-
386
ного списка) должны передаваться через список параметров.
Вариант 18. Определен следующий указатель на начало ли нейного списка:
stjTuct Node |
|
// |
NODE: узел |
линейного |
списка |
|
{ |
*pLink; |
// |
Pointer |
LINK: |
|
|
Node |
узел |
|||||
|
Infor |
// |
указатель |
на очередной |
||
|
// |
INFOrmation: |
информация |
|||
} |
ms tart; |
|
|
|
|
|
Написать прототип, определение и пример вызова функции для вставки новых элементов и в начало (в него помещается значе ние addjbeg), и в конец (в него помещается значение add_end) ли нейного списка. В частном случае, перед вызовом этой функции ли нейный список может быть пуст или может содержать любое коли чество элементов.
Все исходные данные {addbeg^ add_end указатель на нача ло линейного списка) и результаты работы функции (указатель на начало линейного списка) должны передаваться через список параметров. С целью обработки ошибок предусмотреть кон троль значения, возвращаемого операцией new.
Вариант |
19. Определен |
следующий |
указатель на |
начало ли |
||
нейного списка: |
|
|
|
|
|
|
stxTict Node |
|
// |
NODE: узел |
линейного |
списка |
|
{ |
*pLlnk; |
// |
Pointer |
LINK: |
|
|
Node |
узел |
|||||
±nt |
Info; |
// |
указатель |
на очередной |
||
// |
INFOrmation: |
информация |
||||
} |
*start; |
|
|
|
|
|
Написать прототип, определение и пример вызова функции для вставки в линейный список после каждого элемента, в котором хранится значение/?/7(i, двух элементов, в которых будут храниться значения addl и add2, В частном случае, перед вызовом этой функ ции линейный список может быть пуст или может содержать любое количество элементов.
Все исходные данные {find^ addl^ add2^ указатель на начало линейного списка) должны передаваться через список парамет ров. С целью обработки ошибок предусмотреть контроль значе ния, возвращаемого операцией new.
Вариант 20. Определен следующий указатель на начало ли нейного списка:
387
stmict |
Node |
|
// |
NODE: узел |
линейного |
списка |
|
{ |
|
*pLink; |
// |
Pointer |
LINK: |
|
|
Node |
узел |
||||||
xnt |
|
Info; |
// |
указатель |
на очередной |
||
|
// |
INFOrmation: |
информация |
||||
} |
|
*start; |
|
|
|
|
|
Написать прототип, определение и пример вызова функции для вставки в линейный список перед каждым элементом, в котором хранится значение yz«<i, двух элементов, в которых будут храниться значения addl и add2. В частном случае, перед вызовом этой функ ции линейный список может быть пуст или может содержать любое количество элементов.
Все исходные данные (Jlnd^ addl^ add2^ указатель на начало линейного списка) и результаты выполнения функции (указа тель на начало линейного списка) должны передаваться через список параметров. С целью обработки ошибок предусмотреть контроль значения, возвращаемого операцией new.
П.1.1.11. Препроцессор, перечисления, функции с умалчиваемыми значениями аргументов, перегрузка функций, шаблоны функций, перегрузка операций. Варианты тестов
Вариант 1, Директивы препроцессора. Укажите, как следует оформить заголовочный файл, чтобы приведенная ниже запись не приводила к возникновению ошибки:
#include |
"flle.h'' |
#include |
"file.h'' |
Укажите как будет выглядеть модифицированный заголовоч ный файл.
Вариант 2. Перечисления. Будет ли корректной приведенная ниже программа:
^include <stdio.h>
±nt main ( jroid )
{
enum |
t{ |
c=-l, |
pasc=4, |
ada, modula2, |
forth=4 |
} ; |
|
t |
m; |
m |
= a da; |
|
|
|
|
printfi |
"\n m |
- |
%d", |
m ) ; |
|
|
|
return |
0; |
|
|
|
|
|
|
}
Что при этом будет выведено на экран?
388
Вариант 3. Функции с умалчиваемыми значениями пара метров. Имеется следующий фрагмент программного кода:
voxd. DrawCircle |
( izit |
к=100, |
Int |
у=100, |
±nt |
radius=100 |
) ; |
Является ли запись прототипа функции правильной (обоснуйте ответ)? Являются ли правильными приведенные ниже вызовы функ ции? В случае положительного ответа укажите, с какими значения ми параметров функция будет выполняться?
DrawCircle( |
) |
; |
|
|
DrawCircle( |
200 |
) ; |
|
|
DrawCircle( |
200, |
300 |
) ; |
|
DrawCircle( |
200, |
300, |
400 ) ; |
|
DrawCircle( |
, |
, |
400 |
) ; |
Являются ли правильными приводимые ниже записи прототи пов функций (обоснуйте ответ)?
void. |
DrawCircle |
( |
int |
х , |
int |
у=100, |
Int |
rad ) ; |
|
|
void. |
DrawCircle |
( |
int |
x, |
int |
y=100, |
int |
radlus=100 |
) ; |
|
void |
DrawCircle |
( |
int |
x, |
int |
y, |
int |
radlus=100 |
) ; |
Вариант 4. Шаблоны функций, В одномерном массиве, со стоящем из п элементов, вычислить сумму отрицательных элемен тов. Исходные данные и полученные результаты обязательно передавать через список параметров. Написать прототип, опреде ление шаблона функций и пример ее вызова для типов int, float и double.
Вариант 5. Перегрузка операций для пользовательских ти пов. Определен следующий пользовательский тип для работы с ком плексными данными:
struct |
CMP |
// |
CoMPlex: |
|
комплексный |
тип |
( |
|
|
|
|
|
|
dovible |
г; |
// |
Вещественная |
часть |
|
|
double |
i; |
// |
Мнимая |
часть |
|
} ;
Написать определение функции, перегружающей операцию суммирования комплексных данных, и пример вызова этой функ ции. Имейте ввиду, что вещественная часть суммы равна сумме ве щественных частей операндов. Аналогично — для мнимых частей.
Вариант б. Перегрузка операций для пользовательских ти пов. Определен следующий пользовательский тип для работы с ком плексными данными:
389