Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практическая часть.docx
Скачиваний:
0
Добавлен:
24.12.2019
Размер:
38.67 Кб
Скачать

Практическая часть:

  1. В произвольном тексте на английском языке, содержащем не более 10 строк, в каждой строке не более 80 символов. Заменить первую букву каждого слова символом «пробел». Слово – это группа символов, заключенная между разделителями (пробел, запятая, точка и т.д.). Полученный текст напечатать.

  2. В произвольном тексте на русском языке, содержащем не более 10 строк, в каждой строке не более 80 символов, заменить все гласные буквы текста символом пробела. Полученный текст напечатать.

#include <vector>

#include <string>

#include <iostream>

#include <conio.h>

using namespace std;

int main()

{

vector<string> a;

string t;

getline(cin, t);

while(cin.fail()==false)

{

a.push_back(t);

getline(cin, t);

}

for (int i=0; i<a.size(); i++)

for (int j=0; j<a[i].size(); j++)

if (a[i][j]=='a'||a[i][j]=='i'||a[i][j]=='e'||a[i][j]=='u'||a[i][j]=='o')

a[i][j]=' ';

for (int i=0; i<a.size(); i++)

cout<<a[i]<<endl;

getch();

}

  1. Дано: целочисленная матрица A[N,M] и натуральное число х. Вывести номера строк матрицы, в которых встречается заданное число х. Определение, является ли строка матрицы таковой, оформить как функцию. Ввод и вывод элементов матрицы оформить как функцию. Использовать динамическую память. Глобальных переменных не использовать.

#include <iostream>

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

void vvod(int **a, int na, int ma)

{

int i,j;

for(i=0;i<na;i++)

for(j=0;j<ma;j++)

scanf("%d",&a[i][j]);

}

void vivod(int **a, int na, int ma)

{

int i,j;

for(i=0;i<na;i++)

{

printf("\n");

for(j=0;j<ma;j++)

printf("%5d",a[i][j]);

}

}

void poisk(int **a,int na, int ma, int &x)

{

int i,j;

for(i=0;i<na;i++)

for(j=0;j<ma;j++)

if(a[i][j]==x)

printf("\nNomer stroki:%d",i);

}

Int main()

{

int x,n,m;

int **a;

int i,j;

printf("\nVvedite x:");

scanf("%d",&x);

printf("\nVvedite razmer matrici:");

scanf("%d%d",&n,&m);

a=new int*[n];

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

a[i]=new int[m];

printf("\nVvedite a:");

vvod(a,n,m);

printf("a:");

Vivod(a,n,m);

poisk(a,n,m,x);

getch();

}

  1. В произвольном тексте на русском языке, содержащем не более 10 строк, в каждой строке не более 80 символов. Вывести те строки текста, в которых встречаются гласные буквы. Определение, является ли строка текста таковой, оформить как функцию. Глобальных переменных не использовать.

#include <iostream>

#include <string>

#include <fstream>

#include <ctype.h>

#include <cstdlib>

using namespace std;

int search(string &str);

Int main()

{

string str;

ifstream fout;

fout.open("f_out.txt");

if (!fout.is_open())

{

cout<<"There is no file F_OUT.TXT";

exit(EXIT_FAILURE);

}

getline(fout, str);

int k=0, i=0;

while (fout.fail()==false)

{

i++;

if (search(str)==1)

{

k++;

cout<<i;

}

getline(fout, str);

}

if (k==0)

cout<<"There is no such strings \n";

}

Int search(string &str)

{

const char *glas="EeUuYyIiOoAa";

for (int i=0; i<str.size(); i++)

if (strchr(glas, str[i]))

return 1;

return 0;

}

  1. Дано: три целочисленные квадратные матрицы. Определить, есть ли среди них единичная матрица. Определение, является ли матрица единичной, оформить как функцию. Единичная матрица квадратная матрица, элементы главной диагонали которой равны единице, а остальные равны нулю. Использовать динамическую память. Глобальных переменных не использовать.

#include <iostream>

#include <math.h>

#include <conio.h>

#include <iomanip>

using namespace std;

double f(double x);

Int main()

{

double a, b, x, e=0.0001;

cout<<"Enter A (begin of the interval)"<<endl;

cin>>a;

cout<<"Enter B (end of the interval)"<<endl;

cin>>b;

cout<<"Enter e (accuracy)"<<endl;

cin>>e;

if (f(a)*f(b)>0)

{

cout<<"This interval doesn't have a solution!"<<endl;

getch();

return 0;

}

do

{

x=a-(f(a)/(f(b)-f(a)))*(b-a);

if (f(x)*f(a)>0) a=x; else b=x;

}

while (abs(f(x))>e);

cout<<"x= "<<x;

cout.setf(ios::fixed);

cout<<"f(x)= "<<f(x);

getch();

return 0;

}

double f(double x)

{

double t=x*x*x-0.2*x*x+0.2*x-1.2;

return t;

}

  1. Дана прямоугольная матрица. Найти номера строки и столбца для элемента матрицы, наиболее близкого к среднему арифметическому значению всех ее элементов. Поиск среднего арифметического значения матрицы оформить как функцию. Считать, что такой элемент один. Глобальных переменных не использовать.

#include <iostream>

#include <ctime>

#include <cstdlib>

#include <math.h>

#include <conio.h>

using namespace std;

double sred_arifm(double **a,int n,int m);

Int main()

{

srand(time(NULL));

double x, dif, sred;

int n, m, j, i, si=0, sj=0;

cin>>n>>m;

double **a=new double*[n];

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

{

a[i]=new double[m];

for (j=0; j<m; j++)

a[i][j]=(rand()%100)/3.;

}

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

for (j=0; j<m; j++)

cout<<a[i][j]<<" ";

cout<<endl;

}

sred=sred_arifm(a, n, m);

dif=fabs(sred-a[0][0]);

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

for (j=0; j<m; j++)

if (fabs(sred-a[i][j])<dif)

{

dif=fabs(sred-a[i][j]);

si=i;

sj=j;

}

cout<<si<<" "<<sj;

getch();

}

double sred_arifm(double **a,int n,int m)

{

double sum=0;

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

for (int j=0; j<m; j++)

sum=sum+a[i][j];

sum=sum/(n*m);

return sum;

}

  1. В произвольном тексте, содержащем не более 10 строк, в каждой строке не более 80 символов. Вывести:

    1. самую длинную строку текста;

    2. самую короткую строку текста;

    3. все симметричные строки (палиндромы) текста.

Определение, является ли строка симметричной оформить как функцию. Глобальных переменных не использовать.

#include <iostream>

#include <fstream>

#include <string>

#include <conio.h>

using namespace std;

int poly(string str);