Дан код программы на C++, перевести этот код на C - C (СИ)
Формулировка задачи:
#include <iostream>
#include <windows.h>
#include <string.h>
using namespace std;
HANDLE hConsole=GetStdHandle(STD_OUTPUT_HANDLE);
struct Avto
{
char marka[10];
};
struct Stek
{
Avto a;
Stek *next;
};
char bufer [255];
char*rus (char*s)
{
CharToOem (s,bufer);
return bufer;
}
void vvod(Avto &x)
{
cin>>x.marka;
}
void Print(Stek *u)
{
int k=0;
Stek *p = u;
if(p==0)
{
cout<<rus("\nВ Гараже НЕТ машин!!!")<<endl;
return;
}
while(p)
{
p->a.marka;
p = p->next;
k++;
}
cout<<rus("\n\tВ гараже ");
if(k<5) cout<<k<<rus(" машины")<<endl;
else cout<<k<<rus(" машин")<<endl;
p = u;
SetConsoleTextAttribute(hConsole, 11);
cout<<rus("\n ГАРАЖ:")<<endl;
while(p)
{
cout<<"\t* ";
cout << p->a.marka<<endl;
p = p->next;
}
cout<<"\t********"<<endl;
SetConsoleTextAttribute(hConsole, 7);
}
void dobavlenie(Stek **u, Avto &x)
{
Stek *t=new Stek;
strcpy(t->a.marka,x.marka);
t->next=*u;
*u=t;
}
bool Zabiraem(Stek**u, Avto &x)
{
if(*u==NULL)
{
return false;
}
Stek*t=*u;
strcpy(x.marka, t->a.marka);
*u=t->next;
delete t;
return true;
}
void vyezjaet_iz_garaja(Stek**u)
{
Stek *v=NULL;
Avto x;
char n[7];
cout<< rus("\n\t Введите машину, которая выезжает:");
cin>>n;
while(*u)
{
if(Zabiraem(u,x))
{
if(strcmp(n, x.marka)==0)
{
cout<< rus(" машина ") << n; cout<<rus(" уехала!!!");
while(Zabiraem(&v, x)) /// возвращаем элементы из стека V в стек U
dobavlenie(u, x);
return;
}
else
{
dobavlenie(&v, x);
}
}
else break;
}
SetConsoleTextAttribute(hConsole, 12);
cout <<rus(" В гараже НЕТ машины ")<<n<<endl;
SetConsoleTextAttribute(hConsole, 7);
while(Zabiraem(&v,x))
dobavlenie (u,x);
}
void Clear(Stek **u)
{
if(*u == 0)
return;
Stek *p = *u;
Stek *t;
while(p)
{
t = p;
p = p->next;
delete t;
}
*u = 0;
}
int main()
{
SetConsoleTextAttribute(hConsole, 7);
cout << "\n" << endl;
Stek *u=NULL;
int n;
Avto x; //переменная x типа avto
do
{
SetConsoleTextAttribute(hConsole, 14);
cout<<rus(" ***********************\n * \tМеню:")<<endl;
cout<<rus(" * 1. Приехала новая машина")<<endl;
cout<<rus(" * 2. Печатать гараж")<<endl;
cout<<rus(" * 3. Машина выезжает")<<endl;
cout<<rus(" * 0. Выход")<<endl;
cout<<rus(" ***********************")<<endl;
cout<<rus("\n\tЗадайте действие: ");
cin>>n;
SetConsoleTextAttribute(hConsole, 7);
switch (n)
{
case 1:
cout<<rus("Введите новое авто: ");
vvod(x);
dobavlenie(&u, x);
cout<<rus("\nАвто Добавлено!\a\n");
break;
case 2:
Print(u);
break;
case 3:
Print(u);
vyezjaet_iz_garaja(&u); break;
case 0:
Clear(&u); break;
default: SetConsoleTextAttribute(hConsole, 12);
cout<<rus("Нет такого ЧИСЛА!!!")<<endl;
SetConsoleTextAttribute(hConsole, 7);
}
cout<<endl;
}
while (n!=0);
return 0;
}
можно без использования графики
Решение задачи: «Дан код программы на C++, перевести этот код на C»
textual
Листинг программы
scanf("%s", x.marka);
Объяснение кода листинга программы
- Код программы начинается с объявления переменной
xтипамарка автомобиля(предположительно структура или класс) - Затем происходит считывание строки с помощью функции scanf в переменную
x.marka(предполагается, чтоmarkaэто поле структурыx) - Значение переменной
x.markaне указано в вопросе, поэтому предполагается, что это строка, которая содержит название марки автомобиля - Оставшиеся действия программы, если они есть, не указаны в вопросе, поэтому предполагается, что код на этом заканчивается