Перевести программу с 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, что означает успешное выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д