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

Void main()

{

setlocale(LC_ALL,"Russian");

char *a=new char[];

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

gets(a);

int len=strlen(a);//длина массива

konvert(a,len);//конвертация

}

  1. Написать функцию перевода десятичного числа в шестнадцатеричное.

#include "stdafx.h" //директивы препроцессора

#include <iostream>

#include <locale>

#include <stdio.h>

using namespace std;

void perevod(int ch)//функция перевода

{

const int n=16;

int a[n];//массив шестнадцатеричных цифр

a[1]=ch/16;//деление

a[2]=ch%16;//остаток от деления

for(int i=2;i<=n-4;i+=2){

a[i+1]=a[i-1]/16;

a[i+2]=a[i-1]%16;

}

cout<<"Число в шестнадцатеричной системе: ";//вывод

for(int i=n-4;i>=2;i-=2)

if (a[i]<10) cout<<a[i];

else switch(a[i]){

case 10:cout<<"A";break;

case 11:cout<<"B";break;

case 12:cout<<"C";break;

case 13:cout<<"D";break;

case 14:cout<<"E";break;

case 15:cout<<"F";break;

}

cout<<endl;

}

Void main()

{

setlocale(LC_ALL,"Russian");

int b;

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

cin>>b;

perevod(b);//вызов функции

}

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

#include "stdafx.h"

#include <iostream>

#include <locale>

#include <stdio.h>

#include <string.h>

using namespace std;

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

{

int prob=0;//кол-во пробелов

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

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

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

prob++;

if (mas[i]=='\t')//подсчет симв. табуляции

tab++;

}

cout<<"Пробелов: "<<prob<<", символов табуляции: "<<tab<<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 <iostream>

#include <locale>

#include <stdio.h>

#include <string.h>

using namespace std;

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

{

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

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

if (mas[i]=='\t')//подсчет симв. табуляции

tab++;

}

char *b=new char[n+tab*(p+1)];//вспомогательный массив

for (int i=0;i<n+tab*(p+1);i++)//проверка и замена

if (mas[i]!='\t')

b[i]=mas[i];

else for (int j=0;j<p;j++)

b[i+j]=' ';

puts(b);//вывод

}

int main()

{

setlocale(LC_ALL,"Russian");

char *a=new char[];

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

gets(a);

int pro;

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

cin>>pro;

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

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

}

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

#include "stdafx.h"

#include <iostream>

#include <locale>

#include <stdio.h>

#include <string.h>

using namespace std;

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

{

cout<<"Измененная строка: ";

for (int i=n;i>=0;i--)

cout<<mas[i];//вывод

cout<<endl;

}

int main()

{

setlocale(LC_ALL,"Russian");

char *a=new char[];

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

gets(a);

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

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

}

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

#include "stdafx.h"

#include <iostream>

#include <locale>

#include <stdio.h>

#include <string.h>

using namespace std;

void d(int a)//функция подсчета дня года

{

int k;

int m[12]={31,28,31,30,31,30,31,31,30,31,30,31};//массив месяцев

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

if (a<=m[i]){

k=i;

break;

}

else a=a-m[i];

switch(k){//вывод

case 0:cout<<a<<" января"<<endl; break;

case 1:cout<<a<<" февраля"<<endl;break;

case 2:cout<<a<<" марта"<<endl;break;

case 3:cout<<a<<" апреля"<<endl;break;

case 4:cout<<a<<" мая"<<endl;break;

case 5:cout<<a<<" июня"<<endl;break;

case 6:cout<<a<<" июля"<<endl;break;

case 7:cout<<a<<" августа"<<endl;break;

case 8:cout<<a<<" сентября"<<endl;break;

case 9:cout<<a<<" октября"<<endl;break;

case 10:cout<<a<<" ноября"<<endl;break;

case 11:cout<<a<<" декабря"<<endl;break;

}

}

int main()

{

setlocale(LC_ALL,"Russian");

int den;//день

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

cin>>den;

d(den);//вызов функции

}

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

#include "stdafx.h"

#include <string.h>

#include <iostream>

#include <conio.h>

using namespace std;

void sort(char str[], int ss){

const int n=4;

char word[n][20];// массив слов

int k=0;//количество слов в строке

for(int i=0;i<ss;i++){ // Пока не конец строки

int j=0; // Количество символов в слове word[k]

while(str[i]!=' ' && str[i]!='\0')//Пока текущий символ не пробел и не нуль-символ

word[k][j++]=str[i++]; // Формирование k-го слова в массиве word

word[k++][j]='\0'; // Нуль-символ в конец слова

}

char temp[20];//временная переменная

int k1=n;

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

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

if (strcmp(word[j],word[j+1])>0){

strcpy(temp,word[j]);

strcpy(word[j], word[j+1]);

strcpy(word[j+1],temp);

}

for(int i=0;i<n;i++)//вывод отсортированного массива

cout<<word[i]<< " ";

}

void main(void)

{

setlocale(LC_ALL,"Russian");

char st[80];//строка

cout<<"Введите строку >";

cin.get(st,80);

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

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

}

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

#include "stdafx.h"

#include <iostream>

#include <locale>

#include <stdio.h>

#include <string.h>

using namespace std;

void denn(int a, int b)//функция подсчета дня года

{

int kol=0;

int m[12]={31,28,31,30,31,30,31,31,30,31,30,31};//массив месяцев

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

kol+=m[i];

kol+=b;

cout<<kol<<" день года"<<endl;//вывод

}

int main()

{

setlocale(LC_ALL,"Russian");

int mes;//месяц

int den;//день

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

cin>>mes;

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

cin>>den;

denn(mes,den);//вызов функции

}

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

#include "stdafx.h"

#include <iostream>

#include <locale>

#include <stdio.h>

#include <string.h>

using namespace std;

void del(char mas[],int n,char c)//функция удаления

{

cout<<"Измененная строка: ";

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

if (mas[i]!=c)

cout<<mas[i];//вывод

cout<<endl;

}

int main()

{

setlocale(LC_ALL,"Russian");

char *a=new char[];

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

gets(a);

char x;

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

cin>>x;

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

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

}