Програмиране 2
Изпитен билет 4
ИМЕ:____________________________________________________
Ф№______________ КУРС__________ СПЕЦИАЛНОСТ_________________
Задача 1. Дадени са следните декларации:
int a[200];
double s;
char m[10][10];
struct student
{
char m_name[60];
int m_fnom,m_kurs;
double m_mark;
} st;
Какви са резултатите от изпълнението на следните функции:
sizeof(a) sizeof(s) sizeof(m) sizeof(st)
Задача 2. В дадена програма се налага да се обработва текстова величина, за която не се знае предварително колко знака съдържа. Какъв трябва да бъде типът на променливата, в която ще се съхранява тази стойност. Напишете декларацията на променливата.
Задача 3. Дадена е следната декларация на глобални променливи:
int a[100][100],n;
Напишете функция, която приема като параметри четири цели числа r1,c1,r2,c2 и намира максималния от всички елементи на матрицата a, разположени между редовете r1 и r2 и колоните c1 и c2.
Задача 4. Следната функция намира минималния от всички елементи над главния диагонал на матрицата а с n реда и n колони. Променете функцията така, че да намира максималния от всички елементи на матрицата, които са под главния и диагонал.
int minimaln()
{
int minn=a[0][0];
int i,j;
for (i=0;i
for(j=i;j
if(a[i][j]minn=a[i][j];
return minn;
}
Задача 5. Следната рекурсивна функция намира сбора на четните цифри на параметъра си. Променете функцията така, че да пресмята произведението на нечетните цифри на параметъра си.
int countSum(int n)
{
int r;
if(n==0)return 0;
r=countSum(n/10);
if ((n%10)%2==0)return r+n%10;
return r;
}
Задача 6. Следната функция трябва да разменя стойностите на параметрите си. При стартирането и с параметри a и b се оказва, че стойностите на двете променливи са останали същите. Каква е причината за неуспешното действие на функцията? Коригирайте я така, че да реализира промените.
int swapNumber(int x, int y)
{
int z=x;
x=y;
y=z;
}
Дадена е декларацията на следната структура:
struct student
{
char m_name[60];
int m_fnom;
int m_kurs;
char m_spec[60];
double m_mark;
void read(),print();
};
Задача 7.Напишете реализациите на функциите read и print, които съответно въвеждат и извеждат стойност на променлива от тип student. Приемете, че реализациите се описват извън декларацията на структурата.
Задача 8. В декларацията на структурата заменете m_mark с масив от оценки по всички дисциплини и допълнете в декларацията на структурата още една компонента, която съдържа броя на дисциплините, по които студентът е получил оценки.
Допълнете декларацията на структурата с функция, която връща средния успех на студента.
Напишете реализацията на последната функция.
Задача 9. Дадена е следната функция:
void Add()
{
FILE*f;
student st;
st.read();
if ((f=fopen("student.dat","w"))==NULL) cout << "ERROR\n";
else
{
fwrite(&st,sizeof(st),1,f);
fclose(f);
}
}
Която трябва да добавя нов студент във файла student.dat. при опит за изпълнение, се оказва, че във файла винаги остава само последния добавен студент. Каква е причината за некоректното поведение на функцията? Коригирайте я така, че да извършва правилно промените.
Задача 10. Във файла student.dat са записани данните за студенти от описания по-горе тип. Напишете функция, която създава нов файл studspec.dat, в който по въведена от клавиатурата специалност се записват данните за всички студенти от тази специалност.
Сподели с приятели: |