Напечатать текст, образованный символами с порядковыми номерами 56, 89, 84 и 69 - C (СИ)
Формулировка задачи:
Напечатать текст, образованный символами с порядковыми номерами 56, 89, 84 и 69 и текст с изменением регистра.
Помогите пожалуйста.
Решение задачи: «Напечатать текст, образованный символами с порядковыми номерами 56, 89, 84 и 69»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
const int N = 200;
int main()
{
char arr[N];
int i = 0, nc = 0, c;
while(1){
c = rand()%36 + 55;
if(c == 56 || c == 69 || c == 84 || c == 89){
arr[i] = c;
printf("%c", c);
++nc;
if(nc % 5 == 0)
printf("\t");
if(nc == N)break;
++i;
}
}
printf("\n");
for(i = 0; i < N; ++i){
if(arr[i] == 56)
printf("%c", 42);
else
printf("%c", arr[i] + 32);
++nc;
if(nc % 5 == 0)
printf("\t");
}
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены две переменные: массив символов
arrи целочисленная переменнаяiдля отслеживания индекса. Размер массиваNравен 200. - В цикле
while(1)случайным образом генерируются числа от 56 до 90 (включительно). - Если сгенерированное число равно 56, 69, 84 или 89, оно записывается в массив
arrи выводится на экран. - Переменная
ncотслеживает количество уже выведенных символов. - Если
ncувеличивается на 5 (то есть, выводится табуляция), и еслиncдостигает 200 (что означает, что в массиве больше нет символов), цикл прерывается. - После первого цикла выводится символ новой строки.
- Во втором цикле перебираются элементы массива
arr. Если элемент равен 56, выводится символ(обратная косая черта). В противном случае выводится символ, значение которого равноarr[i] + 32` (то есть, символу добавляется 32 для получения символа, который следует за ним). - Переменная
ncснова отслеживает количество выводимых символов, и еслиncувеличивается на 5, выводится табуляция. - Если все символы массива были выведены, возвращается 0, что означает успешное завершение программы.