Лабораторная работа 25

№ 3, с. 25

Написать программу, которая читает с клавиатуры строку символов. Необходимо заменить в строке все латинские буквы на следующие по алфавиту буквы, а букву 'z' заменить на 'a'.Вывести результат на экран. Длина строки не вводится, а определяется в программе. Если строка не удовлетворяет условию, выдать сообщение об ошибке и предложить ввести снова.

Код:

#include <stdio.h>

#include <iostream>

using namespace std;

void main()

{ setlocale (LC_ALL, "Rus");

char in_string[500];

int k,i;

printf( "Введите строку: \n");

gets(in_string);

printf( "Строка\n%s\n", in_string);

k=(int)strlen( in_string);

printf("%d\n",k);

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

{

if(in_string[i]=='z')

in_string[i]='a';

if (((in_string[i]>'a')&&(in_string[i]<'z'))||((in_string[i]>'A')&&(in_string[i]<'Z')))

in_string[i] =in_string[i]+1;

}

printf( "Преобразованная строка:\n%s\n", in_string);

}

лабораторная работа 25 - student2.ru

№5, с.26

(5б) Написать программу, которая читает с клавиатуры строку символов. Необходимо перед каждым знаком '=' вставить символ, стоящий за ним, если таковой имеется (если отсутствует – оставить без изменения). Вывести результат на экран. Длина строки не вводится, а определяется в программе. Если строка не удовлетворяет условию, выдать сообщение об ошибке и предложить ввести снова.

#include <stdio.h>

#include <iostream>

void main()

{

setlocale (LC_ALL, "Rus");

char X[300];

int i,n=0;

printf("Введите строку: \n",n);

for(i=0;(X[i]=getchar())!='\n';i++)

n++;

printf("Преобразованная строка: \n");

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

{if(X[i+1]=='=')

{putchar(X[i]);

putchar(X[i+2]);}

else

putchar(X[i]);}

printf("\n");

}

лабораторная работа 25 - student2.ru

Лабораторная работа №8

Написать программу, которая определяет номер строки квадратной матрицы, сумма элементов которой максимальна. Массив заполняется пользователем с клавиатуры. Результат вывести на экран.

#include <stdio.h>

#include <iostream>

#define N 3

void vvod(int a[][N], int m, int n);

void summ(int a[][N], int m, int n);

void vivod (int a[][N], int m, int n);

void main()

{

setlocale (LC_ALL, "Russian");

int b[N][N], m, n, A, max;

printf ("Введите количество строк:\n");

scanf ("%d", &m);

printf ("Введите количество столбцов:\n");

scanf ("%d", &n);

vvod(b, m, n);

лабораторная работа 25 - student2.ru vivod(b, m, n);

summ (b, m, n);

}

void vvod(int a[][N], int m, int n )

{

setlocale (LC_ALL, "Russian");

int i,j;

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

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

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

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

}

void vivod (int a[][N], int m, int n)

{

setlocale (LC_ALL, "Russian");

int i,j;

printf("Полученная матрица:\n");

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

{

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

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

printf("\n");

}}

void summ(int a[][N], int m, int n)

{

int i,j,sum,max,k;

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

{

sum=0;

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

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

if (i==0)

max=sum;

else if (max<sum)

{max=sum;

k=i;}}

printf ("Максимальная сумма %d строки равна %d\n",(k+1), max);

}

Лабораторная № 23

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

#include <iostream>

using namespace std;

void main(void)

{void func (int k);

setlocale(LC_ALL,"Russian");

int k, n;

printf("Введите количество раз");

scanf("%d",&n);

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

func(k);}

void func (int k)

{static int a=0;

a++;

printf("Функция вызвана %d разa\n",a);}

2. В функции одного исходного файла (1.cpp) объявить ссылку на переменную (extern) другого файла (2.cpp). Умножить ее на переменную, введенную в файле 1.cpp и вывести результат на экран.

лабораторная работа 25 - student2.ru 1.cpp

extern int A=10;

2.cpp

#include <iostream>

void main()

{

extern int A;

int P=1, B=5;

P=A*B;

printf ("P=%d\n",P);

}

3.Имеются два файла 1.cpp и 2.cpp. В каждом из файлов ввести с клавиатуры по одной переменной. Вывести на экран переменные другого файла.

лабораторная работа 25 - student2.ru 1.cpp

#include <stdio.h>

int A;

void main(void)

{void Func (int );

int t=0;

printf(" Enter A \n");

scanf("%d",&A);

Func (t);

extern int B;

printf(" N2 = %d\n",B);}

2.cpp

#include <stdio.h>

int B;

void Func (int t)

{printf(" Enter B \n");

scanf("%d",&B);

extern int A;

printf(" N1 = %d\n",A);}

4.Написать функцию вычисления факториала (величина переменной должна быть очень большой) с учетом того, чтобы она выполнялась максимально быстро, переменная должна быть объявлена классом register.

лабораторная работа 25 - student2.ru

#include <iostream>

void main()

{register int i,fact=1,j;

printf("Vvedite i\n");

scanf("%d",&i);

for(j=i;j>=1;j--)

fact=fact*j;

printf("Fact=%d\n",fact);}

Лабораторная № 22(29,30,31)

Написать программу нахождения суммы четных положительных элементов и нечетных положительных, а также произведение положительных. Массив заполняется пользователем с клавиатуры. Результат вывести на экран.

#include <stdio.h>

#include <iostream>

#include <locale>

const int n=3;

int func1 (int arr[n][n], int n);

int func2 (int arr[n][n], int n);

int func_pr (int arr[n][n], int n);

void main()

{

setlocale (LC_ALL, "Rus");

int arr[n][n], *p, i, j;

p=&arr[0][0];

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

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

{

for (j=0; j<n; j++,p++)

{

scanf ("%d", p);

}

}

printf ("Сумма нечетных положительных элементов равна %d\n", func1(arr, n));

printf ("Сумма четных положительных элементов равна %d\n", func2(arr, n));

printf ("Сумма положительных элементов равна %d\n", func_pr(arr, n));

}

int func1 (int arr[n][n], int n)

{

int i, j, sum=0, *p;

p=&arr[0][0];

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

{

for (j=0; j<n; j++,p++)

{

if ((*p%2)&&(*p>0))

{

sum=sum+*p;

}

}

}

return (sum);

}

int func2 (int arr[n][n], int n)

лабораторная работа 25 - student2.ru {

int i, j, sum=0, *p;

p=&arr[0][0];

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

{

for (j=0; j<n; j++,p++)

{

if ((*p%2==0)&&(*p>0))

{

sum=sum+*p;

}

}

}

return (sum);

}

int func_pr (int arr[n][n], int n)

{

int i, j, pr=1, *p;

p=&arr[0][0];

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

{

for (j=0; j<n; j++,p++)

{

if (*p>0)

{

pr=pr**p;

}

}

}

return (pr);

}

№9 стр 21

Написать программу нахождения в заданной матрице седловой точки. Седловая точка - это максимальный элемент в столбце и одновременно минимальный в строке.

лабораторная работа 25 - student2.ru

#include <stdio.h>

#include <iostream>

#include <locale>

const int n=3;

void func_str_min (int arr[n][n], int *b[n], int n);

void func_stl_max (int arr[n][n], int *k[n], int n);

void main()

{

setlocale (LC_ALL, "Rus");

int arr[n][n], *p, *u1[n], *u2[n], i, j;

p=&arr[0][0];

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

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

{

for (j=0; j<n; j++,p++)

{

scanf ("%d", p);

}

}

p=&arr[0][0];

func_str_min (arr,u1,n);

p=&arr[0][0];

func_stl_max (arr,u2,n);

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

{

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

{

if (u1[i]==u2[j])

{

printf (" Элемент [%d][%d]=%d является седловой точкой\n", i, j,*u1[i]);

}

}

}

}

void func_str_min (int arr[n][n], int *b[n], int n)

{

int min, i, j;

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

{

min=*(*(arr+i)+0);

b[i]=&arr[i][0];

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

{

if (min>*(*(arr+i)+j))

{

min=*(*(arr+i)+j);

b[i]=&arr[i][j];

}

}

}

}

void func_stl_max (int arr[n][n], int *k[n], int n)

{

int max, i, j;

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

{

max=*(*(arr+0)+i);

k[i]=&arr[0][i];

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

{

if (max<(*(*(arr+j)+i)))

{

max=*(*(arr+j)+i);

k[i]=&arr[j][i];

}

}

}

}

Наши рекомендации