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

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

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

int main()

{

const int N=5;

char text[N][80];

int length[N], n=0, a=0;

do

{

int j=0;

while((text[n][j] = getchar()) != '\n') j++;

text[n][j] = '\0';

length[n] = j;

if (text[n][0] == '\0') break;

n++;

} while(n<N);

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

for(int j=0; j<length[i]-1; j++)

if(strchr(" ,.!?", text[i][j]) != NULL)

{

text[i][j+1]=' ';

j++;

}

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

{

for(int j=0; j<length[i]; j++)

printf("%c", text[i][j]);

printf("\n");

}

getch();

}

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

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] и натуральное число х. Вывести номера строк матрицы, в которых встречается заданное число х. Определение, является ли строка матрицы таковой, оформить как функцию. Ввод и вывод элементов матрицы оформить как функцию. Использовать динамическую память. Глобальных переменных не использовать.

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

return;

}

}

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 символов. Вывести те строки текста, в которых встречаются гласные буквы. Определение, является ли строка текста таковой, оформить как функцию. Глобальных переменных не использовать.

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

void vvod(int **x,int nx)

{

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

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

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

}

void vivod(int **x,int nx)

{

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

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

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

}

bool opr_mat(int **x,int nx)

{

int i,j;

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

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

if(i==j)

{

if(x[i][j]!=1)

return false;

}

else

if(x[i][j]!=0)

return false;

return true;

}

Int main()

{

setlocale(LC_ALL,"Russian");

int n, m, t;// переменные для размерности массивов

int **a, **b, **c;// указатели на указатели массивов

int i; //счетчик цикла

printf ( "\nВведите pазмеpность массива а : " );

scanf ( "%d", &n);

printf ( "\n Введите pазмеpность массива b : " );

scanf ( "%d", &m);

printf("\n Введите размерность массива с : ");

scanf ( "%d", &t);

//выделение динамической памяти

a = new int*[n];

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

a[i] = new int [n];

b = new int*[m];

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

b[i] = new int [m];

c = new int*[t];

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

c[i] = new int [t];

printf ( "\n Введите массив а : " );

vvod ( a , n );

printf ( "\n Введите массив b : " );

vvod ( b , m );

printf ( "\n Введите массив с : " );

vvod ( c , t );

printf ( "\n Массив а :" );

vivod ( a, n );

printf ( "\n Массив b :" );

vivod ( b, m );

printf( "\n Массив с :" );

vivod ( c, t );

printf("\nМассив a является ");

if(opr_mat(a,n))

printf("единичным");

else

printf("не единичным");

printf("\nМассив a является ");

if(opr_mat(b,m))

printf("единичным");

else

printf("не единичным");

printf("\nМассив a является ");

if(opr_mat(c,t))

printf("единичным");

else

printf("не единичным");

getch();

return 0;

}

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

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. все симметричные строки (палиндромы) текста.

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

using namespace std;

int poly(string str);

Int main()

{

int k=0;

string max, min, str;

Ifstream fout;

fout.open("f_out.txt");

If (!fout.Is_open())

{

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

cout<<"Program terminating \n";

exit(EXIT_FAILURE);

}

getline(fout, str);

max=str;

min=str;

while (fout.fail()==false)

{

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

min=str;

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

max=str;

if (poly(str)) cout<<str<<endl;

getline(fout, str);

}

cout<<max<<endl;

cout<<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 символов, определить номера строк в которых встречаются знаки препинания. Считать, что в тексте встречаются только следующие знаки препинания: точка, запятая, точка с запятой, вопросительный знак, восклицательный знак, тире.

using namespace std;

int prep(string str);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]