Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2013, 07:09   #1
Евгений Баранников
 
Регистрация: 16.05.2013
Сообщений: 3
По умолчанию Перевести с Pascal в C++

Ребят помогите пожалуйста перевести программу в С++ нужно использовать оператор switch:
Код:
uses crt;
var x:real;
res:real;
y:word;
begin
clrscr;
write('Введите число в метрах, которое нужно преобразовать: '); Readln(x);
writeln('Введите во что преобразовывать: ');
writeln('[1] - Декаметр');
writeln('[2] - Гектаметр');
writeln('[3] - Километр');
writeln('[4] - Мириаметр');
writeln('[5] - Мегаметр');

readln(y);

case y of
1: begin res:=x*0.10; writeln('В ',x:3:2,' м ', res:3:2, ' Декаметров'); end;
2: begin res:=x*0.01; writeln('В ',x:3:2,' м ',res:3:2, ' Гектаметров'); end;
3: begin res:=x*0.001; writeln('в ',x:3:2,' м ',res:3:2,' Километров '); end;
4: begin res:=x*0.0001; writeln('В ',x:3:2,' м ',res:3:2,' Мириаметров'); end;
5: begin res:=x*0.00001; writeln('В ',x:3:2,' м ',res:3:2,'Мегаметров'); end;
end;

readln
end.

Последний раз редактировалось Stilet; 16.05.2013 в 07:56.
Евгений Баранников вне форума Ответить с цитированием
Старый 16.05.2013, 08:09   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

С потолка:
Код:
{
 double x;
 int y;
 printf("Введите число в метрах, которое нужно преобразовать: ");scanf("%lf",&x);
 printf("едите число в метрах, которое нужно преобразовать: '); Readln(x);
 printf('Введите во что преобразовывать: \n[1] - Декаметр\n
 [2] - Гектаметр\n[3] - Километр\n[4] - Мириаметр\n[5] - Мегаметр");
 scanf("%d",&y);
 switch(y){
  case 1: printf("В %3.2lf м %3.2lf Декаметров",x*0.10);break;
  case 2: printf("В %3.2lf м %3.2lf Гектаметров",x*0.01);break;
  case 3: printf("В %3.2lf м %3.2lf Километров ",x*0.001);break;
  case 4: printf("В %3.2lf м %3.2lf Мириаметров",x*0.0001);break;
  case 5: printf("В %3.2lf м %3.2lf Мегаметров",x*0.00001);break;
 }
 getchar();
}
Подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.05.2013, 08:20   #3
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Чего-то сложно все. Можно было просто функцию степени описать и вычислять X как степень 0.1:

Код:
function Pow(a: real; b: integer):Real;
var i: integer;
    res: real;
begin
  Res:=1;
  for i:=1 to b do Res:=Res*a;
  Pow:=Res;
end;

const s: array [1..5] of string=['Декаметров','Гектаметров','Километров','Мириаметров','Мегаметров'];

var y: integer;
    x: real;
begin
  readln(y);
  readln(x);
  x:=x*pow(0.1,y);
  WriteLn(x:3:2,' ',s[y]);
end.
это упрощение на паскале. На си функция pow, если не ошибаюсь, есть в модуле math, ее даже писать не надо:

Код:
#include <stdio.h>
#include <math.h>

int main(){
  char* s[]={"Декаметров","Гектаметров","Километров","Мириаметров","Мегаметров"};
  int y;
  float x;
  scanf("%f",&x);
  scanf("%d",&y);
  x*=powf(0.1,y);
  printf("%f",x,s[y]);
  return 0;
}
Как-то так примерно.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 16.05.2013 в 08:36.
Sciv вне форума Ответить с цитированием
Старый 16.05.2013, 08:26   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Можно было просто функцию степени описать и вычислять X как степень 0.1:
Функция степени уже есть в паскале
Модуль Math. Функция Power. (на турбо - не помню, на фри и дельфи точно есть)
Poma][a вне форума Ответить с цитированием
Старый 16.05.2013, 08:34   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
на турбо - не помню
Вот и я не помню, поэтому решил описать на всякий
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 16.05.2013, 08:39   #6
Евгений Баранников
 
Регистрация: 16.05.2013
Сообщений: 3
По умолчанию

Спасибо огромное ребят)очень благодарен)
Евгений Баранников вне форума Ответить с цитированием
Старый 16.05.2013, 09:28   #7
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

тьфу, я совсем пропустил в первом посте, что

Цитата:
Нужно использовать оператор switch


Ладно, оставлю свое решение для истории моей невнимательности
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевести с Pascal на СИ Vladis1av Помощь студентам 0 08.04.2013 18:37
Перевести из Pascal в C++ (VS2008) Sheva95 Помощь студентам 1 19.03.2013 23:27
Перевести на С++ (Pascal) spinogryz_ua Помощь студентам 4 23.11.2012 12:04
перевести с++ в pascal ApXaHreL Помощь студентам 1 19.06.2011 17:41
Перевести с Turbo C в Pascal Andrey770 Паскаль, Turbo Pascal, PascalABC.NET 0 04.04.2011 20:39