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

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

Лабораторная работа № 18 - student2.ru #include <stdio.h>
#include <locale>
#include <Stdafx.h>
#define N 50
void counting (int mass[][N], intarray_size)
{
int mass2[N] = {0};
for (inti = 0; i<array_size; i++)
{
for (int j = 0; j <array_size; j++)
{
for (int ii = 0; ii <array_size; ii++)
{

for (intjj = 0; jj<array_size; jj++)
{
if (!(i == ii && j == jj ) && (mass[ii][jj] == mass[i][j]) )
{
mass2[mass[i][j]]++;

}
}

}

}
}
for(inti = 0; i< N; i++)
{
if(mass2[i] != 0 )
{
printf ("chislo %d vstreshaetsa %d raz,\n ", i, mass2[i]);
}
}

}

void main ()
{
int mass[N][N], array_size, count = 0;
printf ("vvediterazmermassiva:");
scanf ("%d", &array_size);

for (inti = 0; i<array_size; i++)
{
for (int j = 0; j <array_size; j++)
{
scanf ("%d", &mass[i][j]);
}
}
printf ("\n");

for(inti = 0; i<array_size; i++)
{
for (int j = 0; j <array_size; j++)
{
printf ("%d, ", mass[i][j]);
}
printf ("\n");
}
printf ("\n");

counting (mass, array_size);

}

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

Лабораторная работа № 18 - student2.ru #include <stdio.h>
#include <locale>
#include <Stdafx.h>
#define N 50
void counting (int mass[][N], intarray_size, int number)
{
int count = 0;
for (inti = 0; i<array_size; i++)
{
for (int j = 0; j <array_size; j++)
{
if ( number == mass[i][j])
{
count++;
}
}
}
printf ("chislovstreshaetsa %d raz,\n ", count);

}

void main ()
{

int mass[N][N], array_size, count = 0, number;
printf ("vvediterazmermassiva:");
scanf ("%d", &array_size);

for (inti = 0; i<array_size; i++)
{
for (int j = 0; j <array_size; j++)
{
scanf ("%d", &mass[i][j]);
}
}
printf ("\n");

for(inti = 0; i<array_size; i++)
{
for (int j = 0; j <array_size; j++)
{
printf ("%d, ", mass[i][j]);
}
printf ("\n");
}
printf ("\n");
printf ("vveditechislo:");
scanf ("%d", &number);
counting (mass, array_size, number);

}

(4б) Написать программу нахождения количества строк и столбцов заданной матрицы, состоящих лишь из ненулевых элементов. Массив заполняется пользователем с клавиатуры. Результат вывести на экран.

#include <iostream>

void main(void)

# define N 3

{

setlocale (LC_ALL, "Russian");

int a[N][N], *ua=&a[0][0];

int i, j, stb=0, str=0;

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

{

for (j=0; j<N; j++,ua++)

{printf ("Введите элемент a[%d][%d]: ", i, j);

scanf ("%d", ua);

printf ("\n (%d:%d) %p\n", i, j, ua);

}}

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

{for (j=0; j<N; j++)

{

if (*(*(a+i)+j)==0)

{

str=str+1;

break;}}

}

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

{

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

{

if (*(*(a+j)+i)==0)

{

stb=stb+1;

break;

}}}

printf ("%d строк и %d столбцов, где нету нулей \n", (N-str), (N-stb));

}

Лабораторная работа № 18 - student2.ru

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

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

#include<iostream>

using namespace std;

int main()

#define N 30

{

setlocale(LC_ALL, "Russian");

int mas[N], i, sum=0, *ua, num1, k=0,n;

printf("Введите размер");

scanf("%d", &num1);

ua=&mas[0];

printf ("Введите элемент\n");

scanf("%d",&n);

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

{

printf ("Введите элемент mas[%d] \n", i);

scanf ("%d", ua);

printf("\n %d %p",*ua,ua);

if (*ua==n)

{k++;

ua++;

}}

printf ("\nКоличество %d = %d\n",n, k);

}

Лабораторная работа № 18 - student2.ru

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

Ввести строку в функции main. Написать функцию, в которой подсчитывалось количество введенных символов. Результат вывести на экран.

#include<iostream>

#include<string.h>

#include<locale>

void kol(char A[], char *p[])

{

int k=0;

char *pm;

pm=A;

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

{

p[i]=pm;

pm++;

}

pm=A;

for(int i=0; *p[i]!='\0'; i++)

k++;

printf("Количество символов=%d\n",k);

}

void main()

{

char A[25];

char *p[25];

setlocale (LC_ALL, "Rus");

gets(A);

puts(A);

kol(A,p);

}

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

Лабораторная работа № 18 - 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 и вывести результат на экран.

Лабораторная работа № 18 - 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. В каждом из файлов ввести с клавиатуры по одной переменной. Вывести на экран переменные другого файла.

Лабораторная работа № 18 - 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);}

5.Написать программу, в которой объявлена переменная variant1, а также переменная с таким же именем должна быть объявлена в функции, описанной в этом же файле. Переменным должно быть присвоено разное значение. В цикле вывести эти переменные.

Лабораторная работа № 18 - student2.ru

#include <iostream>

using namespace std;

void func();

int variant1 = 16;

void main()

{

setlocale(LC_ALL,"Russian");

int variant1= 3;

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

{

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

variant1++;

func();}

}

void func()

{

printf("variant1 в функции =%d\n",variant1);

variant1++;

}

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

#include <iostream>

using namespace std;

Лабораторная работа № 18 - student2.ru int const n=5;

void main()

{

setlocale(LC_ALL,"rus");

int Arr[n][n],i=0, j, k = 0, p=1;

while (i < n*n)

{

k++;

for (j=k-1;j<n-k+1;j++)

{

Arr[k-1][j]=p++;

i++;

}

for (j=k;j<n-k+1;j++)

{

Arr[j][n-k]=p++;

i++;

}

for (j=n-k-1;j>=k-1;j--)

{

Arr[n-k][j]=p++;

i++;

}

for (j=n-k-1;j>=k;j--)

{

Arr[j][k-1]=p++;

i++;

}

}

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

{

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

{

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

}

printf("\n");

}

}

Лабораторная работа № 18 - student2.ru 7.(7б) Написать программу, которая демонстрирует отличие автоматических переменных от статических переменных.

#include <iostream>

void func();

void main()

{setlocale(LC_ALL,"Rus");

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

func();

}

void func()

{

int y=2;

static int x = 0; ++x;

++y;

printf("Значение static int x=%d\n",x);

printf("Значение int y=%d\n",y);

}

№1

(7б) Написать программу, которая читает строку символов с клавиатуры. Необходимо удалить из строки все цифры и дописать их в конец строки и вывести результат на экран. Длина строки не вводится, а определяется в программе.

#include <iostream>

Лабораторная работа № 18 - student2.ru #include <ctype.h>

using namespace std;

void main(void)

{

setlocale(LC_ALL,"Rus");

char string[300];

char Result[300]={0};

char res[300]={0};

int k;

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

gets(string);

k=(int)strlen(string);

char *ptr = Result,*ua=res;

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

{

if (!isdigitstring[i]))

*ptr++ = string[i];

else *ua++=string[i];}

cout<<endl<<"Результат: "<<Result<<res<<endl;

}

№ 2

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

#include <stdio.h>

#include <iostream>

void main()

{

setlocale (LC_ALL, "Rus");

char X[300];

int i,n=0,k=0;

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

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

n++;

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

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

{

if(X[i]==' ')

{

k++;

if (k%4==0)

{

putchar(X[i]);

putchar('.');

}

}

else

putchar(X[i]);

}

printf("\n");

}

Лабораторная работа № 18 - student2.ru

№ 7

Лабораторная работа № 18 - student2.ru (7б) Написать программу, которая читает с клавиатуры строку символов. Необходимо каждую закрывающую скобку ')', для которой нет парной открывающей '(', заменить на '?'. Вывести результат на экран. Длина строки не вводится, а определяется в программе.

#include <conio.h>

#include <iostream>

using namespace std;

void main ()

{

setlocale(LC_ALL,"Rus");

int i,k = 0,n;

char string[300];

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

gets(string);

n=(int)strlen(string);

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

{

if (string[i]=='(')

k++;

if (string[i]==')')

k--;

if (k<0) {

string[i]='?';

k++;

}

}

printf("Результат:%s",string);

getch ();

}

12.Написать программу, которая читает с клавиатуры строку символов. Необходимо заменить все цифры знаком '+', если в строке цифр больше, чем латинских букв. В противном случае заменить все латинские буквы знаком '-'. Вывести результат на экран. Длина строки не вводится, а определяется в программе.

#include <iostream>

#include <ctype.h>

Лабораторная работа № 18 - student2.ru using namespace std;

void main(void)

{

setlocale(LC_ALL,"Rus");

char s[300];

char Result[300]={0};

char res[300]={0};

int k,b,sim;

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

gets(s);

k=(int)strlen(s);

char *ptr = Result,*ua=res;

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

{

if (!isdigit(s[i]))

*ptr++ = s[i];

else *ua++=s[i];}

b=(int)strlen(Result);

sim=(int)strlen(res);

if(sim>b)

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

{if((s[i] == '1' || s[i] == '2' ||

s[i] == '3' || s[i] == '4' ||

s[i] == '5' || s[i] == '6' ||

s[i] == '7' || s[i] == '8' ||

s[i] == '9' || s[i] == '0'))

s[i]='+';}}

else {for(int i=0;i<k;i++)

{if((s[i] == '1' || s[i] == '2' ||

s[i] == '3' || s[i] == '4' ||

s[i] == '5' || s[i] == '6' ||

s[i] == '7' || s[i] == '8' ||

s[i] == '9' || s[i] == '0'))b;

else s[i]='-';

}}

cout<<endl<<"Результат: "<<s<<endl;

}

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

4. Даны текстовые файлы f и g. Необходимо поменять местами содержимое этих файлов (предварительно файлы f и g необходимо заполнить). Используйте вспомогательный файл h. Результат вывести на экран.

#include <conio.h>

#include <stdio.h>

#include <iostream>

int main()

{

setlocale(LC_ALL,"Rus");

char s[100]={0},s1[100]={0},s2[100]={0};

char *uk=s,*ua=s1,*ul=s2;

FILE *file,*f2,*f3;

if ((file = fopen("f.txt","r")) == NULL)

printf("Файл невозможно открыть или создать\n");

else{

while (!feof(file))

{fscanf (file,"%c",&*uk);

uk++;

}}

fclose(file);

printf("%s\n",s);

if ((f2= fopen("h.txt","w")) == NULL)

printf("Файл невозможно открыть или создать\n");

else{ fprintf(f2,"%s",s);

fclose(f2);

}

if ((f3= fopen("g.txt","r")) == NULL)

printf("Файл невозможно открыть или создать\n");

else{while (!feof(file))

{fscanf (file,"%c",&*ua);

ua++;

}}

fclose(f3);

if ((file= fopen("f.txt","w")) == NULL)

printf("Файл невозможно открыть или создать\n");

else{ fprintf(f2,"%s",s1);}

fclose(file);

if ((f2= fopen("h.txt","r")) == NULL)

printf("Файл невозможно открыть или создать\n");

else{while (!feof(file))

{fscanf (file,"%c",&*ul);

ul++;

}}

fclose(f2);

if ((f3= fopen("g.txt","w")) == NULL)

printf("Файл невозможно открыть или создать\n");

else{ fprintf(f3,"%s",s2);}

fclose(f3);

return 0;

}

13. Дан текстовый файл. Подсчитать сколько в нем слов и вывести результат на экран.

Лабораторная работа № 18 - student2.ru Лабораторная работа № 18 - student2.ru

#include <iostream>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define STRMAX 128

int main()

{setlocale(LC_ALL,"Rus");

FILE *file;

int cn=0;

char sl[STRMAX];

char *pt;

if ((file = fopen("A.txt","r")) == NULL)

printf("Файл невозможно открыть или создать\n");

else{

while (fgets(sl,STRMAX-1,file)!=NULL)

{pt=strtok(sl, ".,; !?\r\n");

while(pt!=NULL)

{cn++;

pt=strtok(NULL,".,; !?\r\n");

}}

printf("Число слов %d\n",cn);

}

fclose(file);

return 0;

}

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