
- •1)Дана строка символов. Написать фрагмент программы, считающий и выводящий на экран максимальное количество идущих подряд пробелов.
- •7)Написать фрагмент программы, подсчитывающий количество нулевых элементов в массиве чисел. Оформить как функцию, принимающую указатель и целое, и возвращающую целое.
- •8) Написать фрагмент программы, удаляющий из одномерного массива целых чисел все вхождения максимального и минимального элементов.
- •11)Написать фрагмент программы, заменяющий в одномерном массиве целых чисел максимальное значение средним арифметическим его элементов, находящихся на нечетных позициях.
- •12)Написать функцию, принимающую в качестве параметров два целых числа и возвращающую наибольшее из них.
- •9)Данные о студентах (фио, средний балл) хранятся в массиве структур. Написать фрагмент программы, печатающий на экране ведомость, упорядочив вывод в порядке убывания среднего балла.
- •10)Написать фрагмент программы, заменяющий в произвольной квадратной матрице строку с минимальным элементом матрицы нулями.
- •13)Написать функцию, принимающую в качестве параметров три целых числа и возвращающую наибольшее из них.
- •14)Данные о товарах (наименование, цена) хранятся в массиве структур. Написать фрагмент программы, выводящий на экран прайс-лист в порядке возрастания цены (от дешевого к дорогому).
- •20)Напишите программу, которая вычисляет площадь треугольника, если известны его высота и основание (высоту и основание запросить с клавиатуры).
- •22)Написать фрагмент программы, находящий 5 наибольших элементов массива целых чисел.
- •21)Данные о книгах хранятся в массиве структур (автор, название, количество страниц). Написать фрагмент программы, выводящий на экран данные о книгах, имеющих более 300 страниц.
- •24)Написать фрагмент программы, находящий в одномерном массиве, состоящем из n вещественных элементов, среднее значение всех элементов и заменяющий им наименьший элемент.
- •26)Написать фрагмент программы, подсчитывающий в массиве целых чисел, размером n, максимальное количество идущих подряд нулевых элементов.
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);
}