Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

КР по ОАиП Вариант №5

.doc
Скачиваний:
6
Добавлен:
01.04.2014
Размер:
737.79 Кб
Скачать

Оглавление

Оглавление 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;

}

Результат работы программы:

Соседние файлы в предмете Основы алгоритмизации и программирования