Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Перевод с Pascal на C++

Ответить
Настройки темы
C/C++ - Перевод с Pascal на C++

Аватара для Snake750

Старожил


Сообщения: 175
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всем привет.начал переводить прогу с паскаля на си и вот такая вот проблемка встала.нужно перевести вот эту процедуру

Procedure Print (n:byte; a:longint);
Begin {вывод числа a}
Write(' ':n);
Write(a);
End;
а как задать размерность поля вывода пробелов(выделено жирным) на си я не знаю.переведите пожалуйста эту процедурку.буду очень благодарен

Отправлено: 16:23, 28-03-2009

 
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


2 варианта:
Код: Выделить весь код
long n = 100;
double f=100.2345;

// C
printf("%10ld", n);
printf("%10.2lf", f); // целые + дробные

// C++
cout.width(10);
cout << n;

cout.width(13); // общая длина поля
cout.precision(2);
cout << f;
процедурка: (она разве выдаёт n пробелов, а за ними число?)
Код: Выделить весь код
void __pascal Print(unsigned char n, int a)
{ /*Вывод числа а*/
   cout << setw(n) << ' ' << a;
}
Если надо вывести число, в поле из (итого) N символов, то нужно установить флаг width(N), который действует только на один operator<<, а затем сбрасывается в N=0 (то есть выведется столько, сколько минимум необходимо). Заполнение будет происходить символом, указанным в fill(), по умолчанию пробел. Пример:
Код: Выделить весь код
// setfill(...) вызывает ostream::fill(...);
// setw(...) вызывает ostream::width(...);
cout << setfill('0') << setw(10) << 123;

Последний раз редактировалось pva, 28-03-2009 в 21:10.


Отправлено: 20:48, 28-03-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Snake750

Старожил


Сообщения: 175
Благодарности: 0

Профиль | Отправить PM | Цитировать


спс)).тему можно закрывать

Отправлено: 03:31, 29-03-2009 | #3


Аватара для mozgabyte

GEEK


Автор проектов


Сообщения: 729
Благодарности: 165

Профиль | Сайт | Отправить PM | Цитировать


Помогите пожалуйста перевести задачи с Pascal'я на C++

1. Вычислить A и B
читать дальше »
Код: Выделить весь код
program lab1;
var a,b,x,y,z,x1,x2,x3,x4,x5,x6,y1,y2:real;
begin
x:=pi/7;
y:=3.017;
z:=-2.69;
x1:=exp(ln(sin(x))*2);
x2:=2*exp(ln(x1)/3);
x3:=0.001*y*1.5;
x4:=x2-x3;
x5:=(2*x)/2.7;
x6:=1/3+x5;
a:=x4/x6;
writeln('A=',a:2:3);
y1:=sqr(z)/5;
y2:=x-y1;
b:=y2+1/3+x5;
writeln('B=',b:2:3);
readln
end.


2. Является ли введенное 4-значное число палидромом?
читать дальше »
Код: Выделить весь код
program lab2;
var x,c1,c2,c3,c4:integer;
begin
repeat
write('vvedite 4-znachnoe chislo: ');
readln(x);
until(x<9999);
c1:=trunc(x/1000);
c2:=trunc((x-c1*1000-c2*100)/100);
c3:=trunc((x-c1*1000-c2*100)/10);
c4:=trunc((x-c1*1000-c2*100-c3*10)/1);
if (x=c4*1000+c3*100+c2*10+c1) then
writeln('Eto palidrom!') else writeln('Eto ne palidrom!');
readln
end.


3. Определить сумму введенных цифр
читать дальше »
Код: Выделить весь код
program lab3;
var c:char; sum,x:integer; i:byte;
begin
write('Enter symbols: '); readln(c);
sum:=0;
while c<>'.' do begin
x:=-1;
for i:=0 to 9 do
if (ord(c)=(48+i)) then x:=1;
if x<>-1 then sum:=sum+x;
write('Enter symbols: '); readln(c);
end;
writeln('Resul: ',sum);
readln
end.


4. Вычислить сумму чисел введенных до последнего отрицательного
читать дальше »
Код: Выделить весь код
program lab4;
const Nmax=255;
var i:byte; n:integer; m:byte;
mass:array [0..Nmax] of integer;
begin
repeat
readln(N);
mass[i]:=N;
inc(i);
until n=0;
for i:=0 to Nmax do if mass[i]<0 then m:=i;
for i:=0 to m-1 do
N:=N+mass[i];
writeln(N);
readln
end.


5. Определить число пар соседних элементов массива имеющих одинаковый знак
читать дальше »
Код: Выделить весь код
program lab5;
var i:byte;
mass:array [0..255] of integer;
plus:byte;
minus:byte;
begin
plus:=0;
minus:=0;
randomize;
for i:=0 to 255 do mass[i]:=random(512)-256;
for i:=1 to 255 do begin
if (mass[i-1]>0) and (mass[i]>0) then inc(plus);
if (mass[i-1]<0) and (mass[i]<0) then inc(minus);
end;
writeln('kol-vo par s (+) = ',plus);
writeln('kol-vo par s (-) = ',minus);
readln
end.


Заранее огромнейшее спасибо!

-------
(с) mozgabyte


Отправлено: 16:37, 12-06-2009 | #4


Аватара для Alan85

Старожил


Сообщения: 463
Благодарности: 91

Профиль | Отправить PM | Цитировать


Первое как то так:
Код: Выделить весь код
#include <stdio.h>
#include <math.h>
int main(int argc, char* argv[])
{
  const float pi=3.14;
  float x=pi/7;
  float y=3.017;
  float z=-2.69;
  float x1=exp(log(sin(x))*2);
  float x2=2*exp(log(x1)/3);
  float x3=0.001*y*1.5;
  float x4=x2-x3;
  float x5=2*x/2.7;
  float x6=1.0/3.0+x5;
  float a=x4/x6;
  float y1=z*z/5;
  float y2=x-y1;
  float b=y2+1.0/3.0+x5;
  printf("A= %.3f\n",a);
  printf("B= %.3f\n",b);
  getchar();
  return 0;
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:54, 12-06-2009 | #5


Аватара для Alan85

Старожил


Сообщения: 463
Благодарности: 91

Профиль | Отправить PM | Цитировать


Цитата mozgabyte:
2. Является ли введенное 4-значное число палидромом? »
а тут ошибка
c2:=trunc((x-c1*1000-c2*100)/100);
с2 используется для своего же определиния
а вот на си уже с исправлениями:
Код: Выделить весь код
#include <stdio.h>
#include <math.h>
int main(int argc, char* argv[])
{
int x=0;
  do {
   printf("vvedite 4-znachnoe chislo:");
   scanf("%d",&x);getchar();
  }   while (x>9999);
 int c1=x/1000;
 int c2=(x-c1*1000)/100;
 int c3=(x-c1*1000-c2*100)/10;
 int c4=(x-c1*1000-c2*100-c3*10)/1;
// printf("%d %d %d %d",c1,c2,c3,c4);
 if (x==c4*1000+c3*100+c2*10+c1) printf("Eto palidrom!"); else  printf("Eto ne palidrom!");
   getchar();
	return 0;
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:18, 12-06-2009 | #6


Аватара для Alan85

Старожил


Сообщения: 463
Благодарности: 91

Профиль | Отправить PM | Цитировать


В третей тоже ошибка
if (ord(c)=(48+i)) then x:=1;
в конце должно быть x:=i;
вот на си
Код: Выделить весь код
#include <stdio.h>
int main(int argc, char* argv[])
{
 char c;
// printf("Enter symbols: "); scanf("%c",&c);
 int x, sum=0;
 while (c!='.')
 {

 printf("Enter symbols: ");
 scanf(" %c",&c);

	 x=-1;
	 for (int i = 0; i <= 9; i++) if (c==48+i) x=i;
	 if (x!=-1) sum+=x;
 }

 printf("Result: %d",sum);getchar();getchar();
	return 0;
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:40, 12-06-2009 | #7


Аватара для Alan85

Старожил


Сообщения: 463
Благодарности: 91

Профиль | Отправить PM | Цитировать


4:
Код: Выделить весь код
#include <stdio.h>
#define N 255
int main(int argc, char* argv[])
{
  int mass[N]={0};
  int n,i=0;
  do
  {
   scanf("%d",&n);
   mass[i]=n;  i++;
  } while (n!=0);
  int m=0;
	for (i = 0; i <= N; i++)
	 if (mass[i]<0) m=i;
  n=0;
  for (i = 0; i <= m-1; i++) n+=mass[i] ;
  printf("%d",n);
  getchar();  getchar();
	return 0;
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:57, 12-06-2009 | #8


Аватара для Alan85

Старожил


Сообщения: 463
Благодарности: 91

Профиль | Отправить PM | Цитировать


Ну и последний:
Код: Выделить весь код
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char* argv[])
{
  int mass[255]={0};
  int plus=0;
  int minus=0;
  time_t t;
  srand((unsigned) time(&t));
  for (int i=0; i < 255; i++) mass[i]=random(512)-256;
  for (int i=1; i < 255; i++)
  {
   if (mass[i-1]>0&&mass[i]>0) plus++;
   if (mass[i-1]<0&&mass[i]<0) minus++;
  }
   printf("kol-vo par s (+) = %d\n",plus);
   printf("kol-vo par s (-) = %d\n",minus);
   getchar();
	return 0;
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:12, 12-06-2009 | #9


Аватара для mozgabyte

GEEK


Автор проектов


Сообщения: 729
Благодарности: 165

Профиль | Сайт | Отправить PM | Цитировать


Alan85, огромнейшее Спасибо!! Очень выручили Вы меня..

-------
(с) mozgabyte


Отправлено: 22:21, 12-06-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Перевод с Pascal на C++

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Всё о TURBO PASCAL (обсуждение, помощь в написание программ, ошибки, Pascal ABC) Loading Программирование и базы данных 41 20-05-2015 15:28
C/C++ - Перевод процедуры с Pascal на C++ Snake750 Программирование и базы данных 56 05-04-2011 09:39
Разное - Pascal ManHack Программирование и базы данных 2 01-09-2009 22:50
C/C++ - Pascal | c++ Snake750 Программирование и базы данных 2 06-04-2009 21:59
C/C++ vs Pascal idLe Программирование и базы данных 21 18-04-2003 23:23




 
Переход