Перевести код с Pascal - C (СИ) (158005)
Формулировка задачи:
товарищи) нужна помощь))) из паскаля на си, плиииииз!
uses crt;
const n=4;
type tel=record
name,mark,mag:string;
zena,skid:integer;
st:real;
end;
var x:array[1..n] of tel;
i:integer;
im:string;
min:real;
begin
ClrScr;
for i:=1 to n do
with x[i] do
begin
Write(' Название: ');
Readln(name);
Write(' Марка: ');
Readln(mark);
Write(' Цена: ');
Readln(zena);
Write(' Магазин: ');
Readln(mag);
Write(' Скидка: ');
Readln(skid);
Writeln(' ');
end;
Writeln('Сводная таблица: ');
for i:=1 to n do
x[i].st:=(x[i].zena*x[i].skid)/100;
Writeln('| Назв |Марка |Цена |Магазин | Скид | Стоимость |');
Writeln(' ');
for i:=1 to n do
Writeln('|',x[i].name:6,'|',x[i].mark:6,'|',x[i].zena:6,'|',x[i].mag:6,
'|',x[i].skid:6,'|',(x[i].zena-x[i].st):9:1,'|');
Writeln(' ');
min:=x[1].st;
for i:=1 to n do
if x[i].st<=min then
begin
min:=x[i].st;
im:=x[i].name;
end;
writeln('Самые дешевые телевизоры:');
for i:=1 to n do
if x[i].st=min then
Writeln('|',x[i].name:6,(x[i].zena-x[i].st):9:1,'|');
Readln;
end.Решение задачи: «Перевести код с Pascal»
textual
Листинг программы
#include <stdio.h>
#define n 4
typedef struct tel {
char name[16], mark[16], shop[16];
int price, disc;
float val; } tel;
int main()
{
tel x[n];
unsigned short int i;
float min;
for (i = 0; i < n; i++){
printf("Name: ");
scanf("%s", x[i].name);
printf("Mark: ");
scanf("%s", x[i].mark);
printf("Price: ");
scanf("%d", &(x[i].price));
printf("Shop: ");
scanf("%s", x[i].shop);
printf("Discount: ");
scanf("%d", &(x[i].disc));
printf("\n");}
printf("Free table: \n");
for (i = 0; i < n; i++)
x[i].val = x[i].price * x[i].disc / 100;
printf("| Name |Mark |Price |Shop | Discount | Value |\n\n");
for (i = 0; i < n; i++)
printf("| %6s |%6s |%6d |%6s | %6d | %9.1f |\n\n", \
x[i].name, x[i].mark, x[i].price, x[i].shop, x[i].disc, (x[i].price-x[i].val));
min = x[0].val;
for (i = 1; i < n; i++)
if (x[i].val <= min)
min = x[i].val;
printf("The cheapest TVs: \n");
for (i = 0; i < n; i++)
if (x[i].val == min)
printf("|%6s %9.1f|\n", x[i].name, (x[i].price-x[i].val));
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с консолью и объявляем переменную
n(количество телевизоров) и определяем тип данных для структурыtel. - Создаем массив структур
telс размеромn. - Задаем цикл, который будет выполняться
nраз, гдеi- это номер телевизора. - В каждой итерации цикла, мы запрашиваем у пользователя значения для каждого поля структуры
tel(название, марка, цена, магазин и скидка) и сохраняем их в соответствующие поля массиваx. - После завершения цикла, выводим все значения на экран в формате таблицы.
- Вычисляем значение
valдля каждого телевизора (цена минус значение скидки). - Находим минимальное значение
valсреди всех телевизоров. - Выводим на экран все телевизоры с минимальным значением
val. - Возвращаем 0, чтобы указать, что программа успешно завершилась.