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

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);

Int main()

{

int k=0;

string min, max, str;

getline(cin, str);

max=str;

min=str;

while (cin.fail()==false)

{

if (min.size()>str.size())

min=str;

if (max.size()<str.size())

max=str;

if (poly(str)) cout<<"polindrojm: "<<str<<endl;

getline(cin, str);

}

cout<<"Max: "<<max<<endl;

cout<<"Min: "<<min<<endl;

getch();

}

int poly(string str)

{

int n=str.size();

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

{

if (str[i]!=str[n-i-1])

return 0;

}

return 1;

}

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

#include <iostream>

#include <fstream>

#include <conio.h>

#include <string>

#include <vector>

using namespace std;

int prep(string str);

Int main()

{

vector<string> a;

string str;

getline(cin, str);

while (cin.fail()==false)

{

a.push_back(str);

getline(cin, str);

}

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

if (prep(a[i])) cout<<a[i]<<endl;

getch();

}

int prep(string str)

{

const char* s=".,;-!?";

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

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

return 1;

return 0;

}

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

#include <iostream>

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

void vvod(int **x,int nx)

{

int i,j;

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

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

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

}

void vivod(int **x, int nx)

{

int i,j;

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

{

printf("\n");

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

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

}

}

void sum(int **x,int nx)

{

int i,j;

int p=0;

int *s=new int[nx];

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

s[i]=0;

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

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

s[i]=s[i]+x[i][j];

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

if(s[i]==s[p])

printf("\nYes");

else

printf("\nNo");

}