Лабораторная работа № 18
№ 37 стр. 24 Написать программу проверки, есть ли во введенном с клавиатуры массиве элементы с одинаковым значением. Наэкранвывестизначенияэлементовиихколичество.
#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 Написать программу вычисления, сколько раз введенное с клавиатуры число встречается в массиве. Массивзаполняетсяпользователемсклавиатуры. Результатвывестинаэкран.
#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));
}
Лабораторная работа № 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);
}
Лабораторная работа №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
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 и вывести результат на экран.
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. В каждом из файлов ввести с клавиатуры по одной переменной. Вывести на экран переменные другого файла.
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, а также переменная с таким же именем должна быть объявлена в функции, описанной в этом же файле. Переменным должно быть присвоено разное значение. В цикле вывести эти переменные.
#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;
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");
}
}
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>
#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");
}
№ 7
(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>
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. Дан текстовый файл. Подсчитать сколько в нем слов и вывести результат на экран.
#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;
}