Вы находитесь на странице: 1из 11

Лабораторная работа №10.

Тема: Обработка символьных и строковых данных.


3 - вариант
Задание 1 (программа 10_1).
В заданной строке подсчитать частоту появления букв «a», «b».

Текст программы: ССА


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main() {
char text[30];
printf("Enter text:");
gets_s(text);
int a = 0, b = 0;
for (int i = 0; i < strlen(text);
i++) {
switch (text[i]) {
case 'a': a++; break;
case 'b': b++; break;
}}
printf("\na = %d\nb = %d", a, b);
return 0;
}
Результаты:
Лабораторная работа №11.
Тема: Файлы.
3 - вариант
Задание 1 (программа 11_1).
Выполнить задачу из лабораторной работы 9, считывая исходные
данные из одного файла и записывая полученные результаты в другой
текстовый файл. Файл с исходными данными должен быть подготовлен
предварительно.
9. Даны два одномерных массива А [1..6] и C [1..6]. Получить A 2,
С2, А*С. Подсчитать число четных и число нечетных чисел в
полученных массивах. Перемножение массивов и подсчет выполнить в
подпрограмме. Записать результат в файлы и осуществить чтение с
фалов.

Текст программы: ССА


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void squad(int A[], int B[]) {
for (int i = 0; i < 6; i++) {
A[i] = B[i] * B[i];
}}
void multiply(int A[], int C[], int AC[]) {
for (int i = 0; i < 6; i++) {
AC[i] = A[i] * C[i];
}}
void read(FILE *file, int A[],int n) {
for (int i = 0; i < n; i++) {
fscanf(file, "%d", &A[i]);
}}
void out(FILE *file, int A[]) {
for (int i = 0; i < 6; i++) {
fprintf(file, "%d \t", A[i]);
printf("%d \t", A[i]);
}
fprintf(file, "\n");
printf("\n");
}
int main() {
int A[6];
int C[6];
int A2[6];
int C2[6];
int AC[6];
FILE* f;
f = fopen("input.txt", "rt");
read(f, A, 6);
read(f, C, 6);
fclose(f);
FILE* outf;
outf = fopen("output.txt", "wt");
printf("A:\n");
out(outf,A);
printf("C:\n");
out(outf,C);
printf("A^2:\n");
squad(A2, A);
out(outf,A2);
printf("C^2:\n");
squad(C2, C);
out(outf,C2);
printf("A*C:\n");
multiply(A, C, AC);
out(outf,AC);
fclose(outf);
return 0;
}
Результаты:
Лабораторная работа №12.
Тема: Структуры.
3 – вариант
Задание 1 (программа 12_1).
Дан список студентов группы. Заполнить его следующими
сведениями: фамилия, имя, отчество; имеет ли компьютер (если имеет,
то какой и с какого года). Подсчитать сколько студентов имеют ПК.

Текст программы: ССА


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
struct student {
char lname[15];
char name[15];
char fname[15];
int havepc;
char namepc[15];
int yearpc;
};
int main() {
student ivt[20];
int N = 0;
printf("kolch:");
scanf("%d", &N);
int havepc=0;
for (int i = 0; i < N; i++) {
printf("Enter last name:");
scanf("%s", &ivt[i].lname);
printf("Enter name:");
scanf("%s", &ivt[i].name);
printf("Enter middle name:");
scanf("%s", &ivt[i].fname);
printf("Enter 1 or 0
(0 - not have pc, 1 - have pc):");
scanf("%d", &ivt[i].havepc);
if (ivt[i].havepc) {
printf("Name pc:");
scanf("%s", &ivt[i].namepc);
printf("Year pc:");
scanf("%d", &ivt[i].yearpc);
}
havepc += ivt[i].havepc > 0 ? 1 : 0;
}
printf("\n have pc - %d", havepc);

return 0;
}
Результаты:
Лабораторная работа №13.
Тема: Модульное программирование
3 - вариант
Задание 1 (программа 13_1).
Для задач 8_2 разработать прогрумму, скрыв подпрограммы в
отдельном файле (модуле), использовать ссылки на переменные,
объявленные в другом модуле.
Определить координаты центра тяжести трех материальных точек
с массами m1,m2,m3 и координатами (x1,y1), (x2,y2), (x3,y3) по
формулам:
xc = (m1x1+m2x2+m3x3)/(m1+m2+m3),
yc = (m1y1+m2y2+m3y3)/(m1+m2+m3).
Вычисление координаты оформить функцией с параметрами.
Текст программы: ССА
Файл 13_1.c
#include "Header.h"
int main() {
printf("Enter mass m1:");
scanf("%f", &m1);
printf("Enter mass m2:");
scanf("%f", &m2);
printf("Enter mass m3:");
scanf("%f", &m3);
printf("xc = %f",
getcoord(m1, m2, m3, x1, x2, x3));
printf("\nyc = %f",
getcoord(m1, m2, m3, y1, y2, y3));
return 0;
}

Файл Header.h
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
float m1, m2, m3;
int x1 = 0, y1 = 0,
x2 = 2, y2 = 2,
x3 = 3, y3 = 3;
float getcoord(float m1, float m2,
float m3, int x1, int x2, int x3) {
return (m1 * x1 + m2 * x2 + m3 * x3)
/ (m1 + m2 + m3);
}
Результаты:
Лабораторная работа №14.
Тема: Динамические структуры данных. Списки
3 - вариант
Задание 1 (программа 14_1).
Используя динамическую структуру список, подсчитать
количество цифр в заданном наборе символов.

Текст программы: ССА


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>
typedef struct ls {
char info;
struct ls* next;
};

int main() {
ls* P;
ls* t;
int summ = 0;
char sym;
printf("Enter chars:");
P = NULL;
do {
sym = getchar();
t = new ls;
t->next = P;
P = t;
t->info = sym;
} while (sym != '0');
t = P;
while (t != 0) {
if (isdigit(t->info))summ++;
t = t->next;
}
printf("\nKolch summ: %d", summ);
return 0;
}
Результаты: