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

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

void FindSpace( char *lpszStr )

{

int nMaxSpace = 0; // колич.макс пробелов

int nCoutSpace = 0; // подсчет текущих пробелов

while( 1 )

{

lpszStr = strstr( lpszStr, " " ); // поиск пробела в строке

if( lpszStr == NULL )

break;

for( int i = 0; i < strlen( lpszStr ); i++ )

{

if( lpszStr[i] == ' ' ) // нашел пробел - увеличил

nCoutSpace++;

else

{

if( nMaxSpace < nCoutSpace ) // заменяю если что максимальное на текущее

nMaxSpace = nCoutSpace;

break;

}

}

lpszStr += nCoutSpace; // убежал от начала строки, строка сместилась

nCoutSpace = 0;

}

printf( "max = %i\n", nMaxSpace );

}

2)Даны шесть целых чисел. Определить максимальное из них. Оформить функцию, находящую максимальное из двух чисел. Использовать эту функцию.

int nMax( int A, int B )

{

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

}

int main( void )

{

int a = 1, b = 4, c = 5, d = 7, e = 2, f = 6;

printf( "%i\n", nMax( nMax( nMax( nMax( nMax( a, b ),c),d ), e ), f ) );

return( 0 );

}

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

void SortMas( int *mas, int N )

{

int buf;

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

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

{

if( mas[i] < mas[j] )

{

buf = mas[i];

mas[i] = mas[j];

mas[j] = buf;

}

}

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

printf( "%i ", mas[i] );

}

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

int MaxSumFind( float *mas, int N )

{

float fMaxSum = 0;

float fSum;

int nIndex = 0;

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

{

fSum = 0;

for( int j = i; j < i + 5; j++ )

fSum += mas[j];

if( fSum > fMaxSum )

{

fMaxSum = fSum;

nIndex = i;

}

}

printf( "%f index = %i\n", fMaxSum, nIndex );

return( nIndex );

}

5)Дан двумерный массив вещественных чисел, состоящий из 15 строк и 2 столбцов. Написать фрагмент программы, находящий номера двух соседних строк, сумма которых минимальна.

int MinSumFindString( float mas[15][2] )

{

int N = 15;

int M = 2;

float fMinSum = mas[0][0] + mas[0][1] + mas[1][0] + mas[1][1];

float fSum;

int nNumStr = 0;

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

{

fSum = 0;

for( int j = i; j < i+2; j++ )

fSum += ( mas[j][0] + mas[j][1] );

if( fSum < fMinSum )

{

fMinSum = fSum;

nNumStr = i;

}

}

printf( "sum = %f index = %i\n", fMinSum, nNumStr );

system( "pause" );

return( nNumStr );

}

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

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

#include <stdio.h>

#include <stdlib.h>

#include <locale.h>

struct Journal

{

int tirash;

int cena;

};

float Execute( Journal *mas, int N )

{

float nSrednCena = 0;

int nCout = 0;

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

if( mas[i].tirash < 10000 )

{

nSrednCena += mas[i].cena;

nCout++;

}

nSrednCena /= (float)nCout;

return( nSrednCena );

}

int main( void )

{

setlocale( LC_ALL, "rus" );

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

Journal mas[3];

mas[0].cena = 50;

mas[0].tirash = 5000;

mas[1].cena = 100;

mas[1].tirash = 20000;

mas[2].cena = 100;

mas[2].tirash = 1000;

// обработка

float fSredn = Execute( mas, 3 );

printf( "Средняя цена таких журналов: %f\n", fSredn );

system( "pause" );

return(0);

}

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