Перевести программу с C++ - C (СИ) (73277)
Формулировка задачи:
Программа.
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream>
#define N 10 //количество шариков каждого вида
int main()
{
setlocale(LC_ALL, "Russian"); // русский язык
int x,nk=10,ns=10,nz=10;
char mas[N*3],mas1[N*3];
//случайный порядок
for (int i=0;i<N*3;i++){
if (nk>0 && ns>0 && nz>0){
x=int(rand()/(RAND_MAX/(N/3))); //случайное число от 0 до 2
if (x==0)
mas[i]='К',nk--;
else if (x==1)
mas[i]='С',ns--;
else
mas[i]='З',nz--;
}
else if (nk==0 && ns>0 && nz>0){
x=int(rand()/(RAND_MAX/(N/5))); //случайное число от 0 до 1
if (x==0)
mas[i]='С',ns--;
else
mas[i]='З',nz--;
}
else if (nk>0 && ns==0 && nz>0){
x=int(rand()/(RAND_MAX/(N/5))); //случайное число от 0 до 1
if (x==0)
mas[i]='К',nk--;
else
mas[i]='З',nz--;
}
else if (nk>0 && ns>0 && nz==0){
x=int(rand()/(RAND_MAX/(N/5))); //случайное число от 0 до 1
if (x==0)
mas[i]='К',nk--;
else
mas[i]='С',ns--;
}
else if (nk==0 && ns==0 && nz>0)
mas[i]='З',nz--;
else if (nk==0 && ns>0 && nz==0)
mas[i]='С',ns--;
else if (nk>0 && ns==0 && nz==0)
mas[i]='К',nk--;
printf("%c ",mas[i]);
}
printf("\n");
//сортировка
for (int i=0;i<N*3;i++){
if (i%3==0)
mas1[i]='К';
if (i%3==1)
mas1[i]='С';
if (i%3==2)
mas1[i]='З';
printf("%c ",mas1[i]);
}
getch();
return 0;
}
Нужно чтобы программа работала на обычном C с компилятором от GCC.
Решение задачи: «Перевести программу с C++»
textual
Листинг программы
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include <locale.h>
#define N 10 //количество шариков каждого вида
int main()
{
int i,x,nk=10,ns=10,nz=10;
char mas[N*3],mas1[N*3];
//случайный порядок
for (i=0;i<N*3;i++){
if (nk>0 && ns>0 && nz>0){
x=rand()/(RAND_MAX/(N/3)); //случайное число от 0 до 2
if (x==0)
mas[i]='1',nk--;
else if (x==1)
mas[i]='4',ns--;
else
mas[i]='2',nz--;
}
else if (nk==0 && ns>0 && nz>0){
x=rand()/(RAND_MAX/(N/5)); //случайное число от 0 до 1
if (x==0)
mas[i]='4',ns--;
else
mas[i]='2',nz--;
}
else if (nk>0 && ns==0 && nz>0){
x=rand()/(RAND_MAX/(N/5)); //случайное число от 0 до 1
if (x==0)
mas[i]='1',nk--;
else
mas[i]='2',nz--;
}
else if (nk>0 && ns>0 && nz==0){
x=rand()/(RAND_MAX/(N/5)); //случайное число от 0 до 1
if (x==0)
mas[i]='1',nk--;
else
mas[i]='4',ns--;
}
else if (nk==0 && ns==0 && nz>0)
mas[i]='2',nz--;
else if (nk==0 && ns>0 && nz==0)
mas[i]='4',ns--;
else if (nk>0 && ns==0 && nz==0)
mas[i]='1',nk--;
printf("[3%cm* ",mas[i]);
}
printf("\n");
//сортировка
for (i=0;i<N*3;i++){
if (i%3==0)
mas1[i]='1';
if (i%3==1)
mas1[i]='4';
if (i%3==2)
mas1[i]='2';
printf("[3%cm* ",mas[i]);
}
getchar();
return 0;
}
Объяснение кода листинга программы
- Объявлены переменные: i,x,nk,ns,nz,mas,mas1,N,rand(),RAND_MAX,printf(),getchar()
- Определены константы: #define N 10
- Задается случайный порядок шариков
- При условии nk>0, ns>0, nz>0 выполняется блок кода - Переменная x принимает случайное значение от 0 до 2 - В зависимости от значения x, переменная mas[i] принимает значение '1', '4' или '2' - Если значение x равно 0, то уменьшается значение переменной nk на 1 - Если значение x равно 1, то уменьшается значение переменной ns на 1 - В остальных случаях уменьшается значение переменной nz на 1
- При условии nk==0, ns>0, nz>0 выполняется блок кода - Переменная x принимает случайное значение от 0 до 1 - В зависимости от значения x, переменная mas[i] принимает значение '4' или '2' - Если значение x равно 0, то уменьшается значение переменной ns на 1
- При условии nk>0, ns==0, nz>0 выполняется блок кода - Переменная x принимает случайное значение от 0 до 1 - В зависимости от значения x, переменная mas[i] принимает значение '1' или '2' - Если значение x равно 0, то уменьшается значение переменной nk на 1
- При условии nk==0, ns==0, nz>0 выполняется блок кода - Переменная mas[i] принимает значение '2' - Уменьшается значение переменной nz на 1
- При условии nk>0, ns>0, nz==0 выполняется блок кода - Переменная x принимает случайное значение от 0 до 1 - В зависимости от значения x, переменная mas[i] принимает значение '1' или '4' - Если значение x равно 0, то уменьшается значение переменной nk на 1
- При условии nk==0, ns>0, nz==0 выполняется блок кода - Переменная mas[i] принимает значение '4' - Уменьшается значение переменной ns на 1
- При условии nk>0, ns==0, nz==0 выполняется блок кода - Переменная mas[i] принимает значение '1' - Уменьшается значение переменной nk на 1
- Выводится сообщение
[3%cm*с использованием функции printf() - Происходит сортировка массива mas1
- Если значение i%3 равно 0, то переменная mas1[i] принимает значение '1'
- Если значение i%3 равно 1, то переменная mas1[i] принимает значение '4'
- Если значение i%3 равно 2, то переменная mas1[i] принимает значение '2'
- Выводится сообщение
[3%cm*с использованием функции printf()
- Программа ожидает ввода с помощью функции getchar()
- Возвращается 0, что означает успешное выполнение программы