Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб. 5 ОП (Вариант 30, 20)

.docx
Скачиваний:
1
Добавлен:
30.08.2024
Размер:
105.68 Кб
Скачать

Задание 1 (Вариант 30):

#include <stdio.h>

#include <iostream>

#include <clocale>

#include <Windows.h>

#include <stdlib.h>

#include <string.h>

#include <iomanip>

#define N 255

using namespace std;

/*

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

Тестовая программа:

Ввести текст (несколько строк) с клавиатуры, признак окончания – слово «end». Данные размещать в динамической области.

Изменить текст: слова, начинающиеся с заглавной буквы переместить в начало строки. Вывести текст на экран и отформатировать: После точки начинать с «красной строки»

*/

void main() {

int k = 0;

setlocale(0, "Russian");

char* ptr_text[N];

char buff[N] = { ' ' };

printf("Введите несколько строк на латинице, окончание ввода - end\n");

do

{

gets_s(buff);

ptr_text[k] = (char*)malloc(strlen(buff) + 1);

strcpy_s(ptr_text[k], strlen(buff) + 1, buff);

k++;

} while (!(buff[0] == 'e' && buff[1] == 'n' && buff[2] == 'd') && (k < N));

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

for (int j = 0; ptr_text[i][j] != '\0'; j++) {

if (isupper(ptr_text[i][0])) {

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

if (ptr_text[i][j] == '.') {

printf("\n");

}

}

}

printf(" ");

}

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

for (int j = 0; ptr_text[i][j] != '\0'; j++) {

if (isupper(ptr_text[i][0]) == 0) {

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

if (ptr_text[i][j] == '.') {

printf("\n");

}

}

}

printf(" ");

}

}

Задание 2 (Вариант 20):

#include <iostream>

#include <iomanip>

#include <iostream>

#include <iomanip>

#include <clocale>

#include <time.h>

/*

Создать динамическую вещественную матрицу NxM (N и M ввести с клавиатуры Размещение в памяти как в примере 3.

Создать функцию, которая формирует массив результатов – возвращает указатели на максимальные элементы в заштрихованной области .

*/

void init_matrix(double *matrix, int N, int M) {

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

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

matrix[i * M + j] = rand() % 100/3.1;

}

}

void print_matrix(double *matrix, int N, int M) {

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

for (int j = 0; j < M; j++){

if (i+j<(N+M)/2){

printf("\x1B[32m%f\033[0m\t",matrix[i * M + j]);

}

else{

printf("%f\t",matrix[i * M + j]);

}

}

printf("\n");

}

}

double **max(double *matrix, int N, int M){

double **maxmat = new double *[N];

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

maxmat[i]=&matrix[i*M];

for (int j=0; j<M;j++){

if ((i+j < (N+M)/2) && (matrix[i * M + j] > *maxmat[i]))

*maxmat[i] = matrix[i * M + j];

}

}

return maxmat;

}

int main(){

srand(time(0));

setlocale(LC_ALL, "Russian");

int N, M;

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

scanf("%d",&N);

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

scanf("%d",&M);

double *matrix=new double[N*M];

init_matrix(matrix,N,M);

printf("Матрица:\n");

print_matrix(matrix,N,M);

printf("Максимальные значения каждой строки в закрашенной области:\n");

double **Max = max(matrix,N,M);

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

printf("%f",*Max[i]);

printf(" ");

}

delete [] matrix;

delete [] Max;

return(0);

}