Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Козырева И., лабораторные работы.doc
Скачиваний:
4
Добавлен:
16.04.2019
Размер:
2.95 Mб
Скачать

Void main()

{

setlocale(LC_ALL,"Russian");

const int n=100;//размерность массива

int k=n;//кол-во введенных данных

//структура

struct vyp{//вложенная структура выпуск

int god;//год выпуска

char firm[10];//фирма-производитель

};

struct album{//структура муз. альбом

char name[20];//название

int kol;//кол-во песен

struct vyp vyp1;//влож. выпуск

};

struct album mas[n];//массив структур

for (int i=0;i<n;i++){//заполнение

cout<<"Введите название: ";

cin>>mas[i].name;

cout<<"Введите кол-во песен: ";

cin>>mas[i].kol;

cout<<"Введите год выпуска: ";

cin>>mas[i].vyp1.god;

cout<<"Введите фирму-производитель: ";

cin>>mas[i].vyp1.firm;

cout<<"Продолжить ввод? y- да, n-нет. ";

char x;

cin>>x;

if (x=='n'){

k=i+1;

break;

}

else;

}

for (int i=0;i<k;i++)//вывод

cout<<mas[i].name<<"\t"<<mas[i].kol<<"\t"<<mas[i].vyp1.god<<"\t"<<mas[i].vyp1.firm<<endl;

struct album temp;//временная структура

char l;

cout<<"Выберите поле для сортировки: 1 - название, 2 - кол-во песен: ";//диалог с пользователем

cin>>l;

if (l=='1'){//сортировка по названию

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

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

if (strcmp(mas[j].name,mas[j+1].name)>0){

temp=mas[j];

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

mas[j+1]=temp;

}

cout<<"После сортировки: "<<endl;//вывод

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

cout<<mas[i].name<<"\t"<<mas[i].kol<<"\t"<<mas[i].vyp1.god<<"\t"<<mas[i].vyp1.firm<<endl;

}

if (l=='2'){//сортировка по количеству песен

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

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

if (mas[j].kol>mas[j+1].kol){

temp=mas[j];

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

mas[j+1]=temp;

}

cout<<"После сортировки: "<<endl;//вывод

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

cout<<mas[i].name<<"\t"<<mas[i].kol<<"\t"<<mas[i].vyp1.god<<"\t"<<mas[i].vyp1.firm<<endl;

}

else;

}

6 Лабораторная работа №5 Программирование и использование функций

Варианты заданий

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

#include "stdafx.h"

#include <iostream>

#include <locale>

#include <stdio.h>

#include <string.h>

using namespace std;

void podchet(char mas[],int n)//функция подсчета

{

int slov=0;//кол-во слов

int pred=0;//кол-во предложений

for (int i=0;i<n;i++){

if (mas[i]==' ')//подсчет слов

slov++;

if (mas[i]=='.'||mas[i]=='!'||mas[i]=='?')//подсчет предлодений

pred++;

}

cout<<"Символов: "<<n<<", слов: "<<slov+1<<", предложений: "<<pred<<endl;//вывод

}

int main()

{

setlocale(LC_ALL,"Russian");

char *a=new char[];

cout<<"Введите строку: ";//диалог с пользователем

gets(a);

int len=strlen(a);//длина строки

podchet(a,len);//вызов функции

}

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

#include "stdafx.h"

#include <ctype.h>

#include <iostream>

#include <locale>

#include <stdio.h>

#include <string.h>

using namespace std;

void konvert(char mas[],int n)//функция конвертации

{

char *b=new char[];

for (int i=0;i<n;i++){

if (islower(mas[i]))//для букв нижнего регистра

b[i]=toupper(mas[i]);

if (isupper(mas[i]))//для букв верхнего регистра

b[i]=tolower(mas[i]);

if (mas[i]==' ')//для пробела

b[i]=' ';

}

for (int i=0;i<n;i++)//вывод

cout<<b[i];

cout<<endl;

}