КР по ОАиП Вариант №5
.docОглавление
Оглавление 2
Задачи с матрицами. 3
Задачи со строками. 7
Задачи с матрицами.
5. В массиве длиной N в случайном порядке находятся элементы «к» (красный), «б» (белый) и «с» (синий). Переставить их в порядке следования цветов голландского национального флага, чтобы вначале были все красные, затем белые и после них — синие. Допустимые операции — проверка цвета и обмен местами значений двух элементов. Иными словами, надо запрограммировать примитивного робота, который даже считать не умеет.
Блок-схема алгоритма программы.
Листинг программы:
/*
5. В массиве длиной N в случайном порядке находятся элементы «к» (красный),
«б» (белый) и «с» (синий). Переставить их в порядке следования цветов
голландского национального флага, чтобы вначале были все красные,
затем белые и после них — синие.
Допустимые операции — проверка цвета и обмен местами значений двух элементов.
Иными словами, надо запрограммировать примитивного робота, который даже считать не умеет.
*/
#include <conio.h>
#include <stdio.h>
// главная функция программы
void main()
{
char mas[100], ch;
int n,i,j;
// ввод исходных данных
printf("\nVvedite dlinu massiva = ");
scanf("%d",&n);
printf(" Vvod massiva (k,b,s)\n");
for(i=0;i<n;i++)
{do
{
// цикл до тех пор пока правильно не введут цвета
printf("massiv[%i] = ",i+1);
scanf("%s",&ch);
}
while(ch!='k' && ch!='b' && ch!='s' );// проверка правильности ввода
mas[i]=ch;
}
// цикл сортировки
for(i=0;i<n-1;i++)
{ j=i+1;
while(j>0)
{// если нашли необходимый элемент,поднимаем его до тех пор пока не всплывет красный цвет
if(mas[j]=='k' && (mas[j-1]=='s' || mas[j-1]=='b'))
{ // если удовлетворяет условию
ch=mas[j-1];
mas[j-1]=mas[j];
mas[j]=ch;
}
j--;
}
j=i+1;
while(j>0)
{// если нашли необходимый элемент,поднимаем его до тех пор пока не всплывет белый цвет
if(mas[j]=='b' && mas[j-1]=='s' )
{ // если удовлетворяет условию
ch=mas[j-1];
mas[j-1]=mas[j];
mas[j]=ch;
}
j--;
}
}
// вывод результата
printf("\nRezultat:\n");
for(i=0;i<n;i++)
printf(" %c",mas[i]);
}
Результат работы программы:
Задачи со строками.
5. Написать программу, которая, анализируя массив, состоящий из строк, выводит на экран количество слов женского, мужского и среднего рода. Стандартных функций работы со строками не использовать.
Блок-схема алгоритма программы.
Листинг программы:
/*
5. Написать программу, которая, анализируя массив,
состоящий из строк, выводит на экран количество
слов женского, мужского и среднего рода.
Стандартных функций работы со строками не использовать.
*/
#include <conio.h>
#include <stdio.h>
// главная функция программы
int main()
{
char str[50][50];
char ch;
int i,n,j;
int sr=0,m=0,z=0;
// ввод исходных данных
printf("\n\nVvedite kollichestvo strok - ");
scanf("%d",&n);
printf("\nVvedite slova v stroke:\n");)
scanf("%c",&ch);
for(i=0;i<n;i++)
{
j=0;
str[i][j]='\0';
do
{
scanf("%c",&ch);
str[i][j]=ch;
j++;
}
while(ch!='\n');
str[i][j-1]='\0';
}
for(i=0;i<n;i++)
{
j=1;
while(str[i][j]!='\0')
{
if((str[i][j-1]=='o' && str[i][j]==' ')||(str[i][j]=='o' && str[i][j+1]=='\0'))
sr++;
else if(((str[i][j-1]=='a' || str[i][j-1]=='e') && str[i][j]==' ')||(str[i][j+1]=='\0' && (str[i][j]=='a' || str[i][j]=='e')))
z++;
else if(str[i][j]==' ' || str[i][j+1]=='\0')
m++;
j++;
}
}
// вывод результата
printf("\nRezultat:\n");
printf("\n\n Srednir rod - %i raz",sr);
printf("\n Muzskoi rod - %i raz",m);
printf("\n Zenskii rod - %i raz",z);
getch();
return 0;
}
Результат работы программы: