Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ekzamen_po_PYaVU_1.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
48.94 Кб
Скачать

7)Написать фрагмент программы, подсчитывающий количество нулевых элементов в массиве чисел. Оформить как функцию, принимающую указатель и целое, и возвращающую целое.

int CountZero( int *mas, int N )

{

int nZero = 0;

for( int i = 0; i < N; i++ )

if( mas[i] == 0 )

nZero++;

return( nZero );

}

8) Написать фрагмент программы, удаляющий из одномерного массива целых чисел все вхождения максимального и минимального элементов.

void DelMaxMinElem( int *mas, int N )

{

int nMax = mas[0];

int nMin = mas[0];

int nMaxIndex = 0, nMinIndex = 0;

int nCountMax = 0, nCountMin = 0;

// ищу макс. и мин элементы

for( int i = 0; i < N; i++ )

{

if( nMax < mas[i] ) // поиск максимального элемента

{

nMax = mas[i];

nMaxIndex = i;

nCountMax = 1;

}

if( nMin > mas[i] )// поиск минимального

{

nMin = mas[i];

nMinIndex = i;

nCountMin = 1;

}

}

// удаляю эти элементы

if( nMaxIndex < nMinIndex )

{

// кдаляю мин

N--;

for( int i = nMinIndex; i < N; i++ )

mas[i] = mas[i+1];

// удаляю максим.

N--;

for( int i = nMaxIndex; i < N; i++ )

mas[i] = mas[i+1];

}

else

{

// удаляю максим.

N--;

for( int i = nMaxIndex; i < N; i++ )

mas[i] = mas[i+1];

// кдаляю мин

N--;

for( int i = nMinIndex; i < N; i++ )

mas[i] = mas[i+1];

}

// удаление повтор. мин. эелементов

for( int i = 0; i < N; i++ )

{

if( mas[i] == nMin )

{

for( int j = i; j < N-1; j++ )

mas[j] = mas[j+1];

N--;

i--;

}

}

// удаление повтор.макс.элементов

for( int i = 0; i < N; i++ )

{

if( mas[i] == nMax )

{

for( int j = i; j < N-1; j++ )

mas[j] = mas[j+1];

N--;

i--;

}

}

}

11)Написать фрагмент программы, заменяющий в одномерном массиве целых чисел максимальное значение средним арифметическим его элементов, находящихся на нечетных позициях.

void ExecMatrix( int mas[], int N )

{

int i;

int nSredn = 0;

int nCoutElm = 0;

for( i = 1; i < N; i += 2 )

{

nCoutElm++;

nSredn += mas[i];

}

nSredn /= nCoutElm;

int nMaxIndex = 0;

for( i = 0; i < N; i++ )

if( mas[i] > mas[ nMaxIndex ] )

nMaxIndex = i;

mas[nMaxIndex] = nSredn;

}

12)Написать функцию, принимающую в качестве параметров два целых числа и возвращающую наибольшее из них.

int ReturnMaxParam( int A, int B )

{

return( (A>B)?(A):(B) );

}

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

// привел полный исходник программы

#include <stdio.h>

#include <stdlib.h>

#include <locale.h>

#include <string.h>

struct Student

{

char szFIO[80];

float fBall;

};

void Execute( Student *mas, int N )

{

float nSrednCena = 0;

int nCout = 0;

// сортировка

for( int i = 0; i < N; i++ )

for( int j = 0; j < N; j++ )

if( mas[i].fBall > mas[j].fBall )

{

Student buf = mas[i];

mas[i] = mas[j];

mas[j] = buf;

}

printf( "Ведоость:\n" );

for( int i = 0; i < N; i++ )

{

printf( "%s\n", mas[i].szFIO );

printf( "%f\n", mas[i].fBall );

printf( "-------------\n" );

}

system( "pause" );

}

int main( void )

{

setlocale( LC_ALL, "rus" );

// тут просто вношу данные

Student mas[3];

strcpy( mas[0].szFIO, "Петров Петр Петрович" );

mas[0].fBall = 99.8;

strcpy( mas[1].szFIO, "Иванов Иван Иванович" );

mas[1].fBall = 55;

strcpy( mas[2].szFIO, "Козлов Козел Кощлович" );

mas[2].fBall = 80;

// обработка

Execute( mas, 3 );

return(0);

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]