Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП_4.docx
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
574 Кб
Скачать
☆

3.2.3. Пример работы программы:

Пример работы представлен на рисунке 14,15,16,17.

Рисунок 7. «Результат при равных первой и второй строках».

Рисунок 8. «Результат в котором первая строка больше второй»

Рисунок 9. «Результат в котором вторая строка меньше первой».

Рисунок 10. «Результат в котором точек меньше одной».

3.3. Задача 3.

Написать программу, которая запрашивает ввод исходной строки. На выходе должно получиться две итоговые строки. В первой строке необходимо поменять местами максимальный и минимальный цифровые символы, а во второй поменять местами максимальный и минимальный буквенные символы (на латинице – минимальный элемент - ‘a’ – код 97, максимальный элемент – ‘z’ – код 122). В случае, если введены только цифры или только буквы, программа должна выдавать соответствующее сообщение.

Решение:

3.3.1. Блок схема

3.3.2. Код программы

#include "stdafx.h"

#include <conio.h>

#include <iostream>

#include <string.h>

Int _tmain()

{

const char* locale = setlocale(LC_ALL,"");

char c[80],sim1,sim2,max,min;

int k2=0,k1=0,i=0,el1=0,el2=0;

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

gets(c);

while (c[i]!='\0')

{

if ((c[i]>='0' && c[i]<='9')&& (el1==0))\\условие которое проверяет есть ли в строке цифровые значения и даёт им начальное максимальное и минимальное значение(el1 – позволяет нам подсчитать что до этого цифровой элемент не встречался)

{

min=c[i];\\ минимальное цифровое значение

max=c[i];\\ максимальное цифровое значение

el1++;

}

if ((c[i]>='a' && c[i]<='z')&& (el2==0))\\аналогично верхниму условию но проверяет наличие в строке буквенных значений,присваивает максимальному и минимальному значению начальное значение.

{

sim1=c[i];\\ миниимальное буквенное значение

sim2=c[i];\\максимальное буквенное значение

el2++;

}

if (c[i]>='0' && c[i]<='9')\\в цикле вычисляются максимальное и минимальное цифровые значения.

{

if (max<c[i])

max=c[i];

if (min>c[i])

min=c[i];

k1++;\\ данная переменная подсчитывает количество цифровых значений

}else if (c[i]>='a' && c[i]<='z')

{

if (sim1<c[i])

sim1=c[i];

if (sim2>c[i])

sim2=c[i];

k2++;\\ переменная подсчитывает количество строковых значений

}

i++;

}

i=0;

if (k1>=2)\\проверка того чтобы количество цифровых символов было как минимум 2.

{

printf("итоговая строка 1: ");

while (c[i]!='\0')\\ цикл предназначен для вывода строки в которой меняются местами максимальное и минимальное цифровые значения.

{

if (c[i]==max)\\ если символ i в строке с совпадает с символом сохранённым в переменной мax, то выводим символ сохранённый в пременной min.

printf("%c",min);

else if (c[i]==min) )\\ если символ i в строке с совпадает с символом сохранённым в переменной мin, то выводим символ сохранённый в пременной max.

printf("%c",max);

else

printf("%c",c[i]);\\ если оба условия не выполняются выводим символ i в строке c

i++;

}

}else\\ если цифровых значений меньше двух то выводится ошибка.

printf("\n введена только 1 цифра либо их нет ! ");

i=0;

if (k2>=2) \\проверка того чтобы количество буквенных символов было как минимум 2.

{

printf("\nитоговая строка 2: ");

while (c[i]!='\0') )\\ цикл предназначен для вывода строки в которой меняются местами максимальное и минимальное буквенные значения.

{

if (c[i]==sim1)\\ если символ i в строке с совпадает с символом сохранённым в переменной sim1, то выводим символ сохранённый в пременной sim2.

printf("%c",sim2);

else if (c[i]==sim2)\\ если символ i в строке с совпадает с символом сохранённым в переменной sim2, то выводим символ сохранённый в пременной sim1.

printf("%c",sim1);

else

printf("%c",c[i]);\\ если оба условия не выполняются выводим символ i в строке c

i++;

}

}else

printf("\n введена только 1 буква либо их нет! ");\\выводит ошибку если количество буквенных значений меньше 2

_getch();

}