Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Перевод с Pascal на C++ (http://forum.oszone.net/showthread.php?t=136113)

Snake750 28-03-2009 16:23 1077215

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

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

pva 28-03-2009 20:48 1077423

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;


Snake750 29-03-2009 03:31 1077683

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

mozgabyte 12-06-2009 16:37 1141729

Помогите пожалуйста перевести задачи с 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.



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

Alan85 12-06-2009 20:54 1141894

Первое как то так:
Код:

#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;
}


Alan85 12-06-2009 21:18 1141915

Цитата:

Цитата 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;
}


Alan85 12-06-2009 21:40 1141923

В третей тоже ошибка
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;
}


Alan85 12-06-2009 21:57 1141936

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;
}


Alan85 12-06-2009 22:12 1141947

Ну и последний:
Код:

#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;
}


mozgabyte 12-06-2009 22:21 1141961

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

Alan85 12-06-2009 22:25 1141963

Да незашто... Давно не программировал ничего - вот решил вспомнить как это да и за одно помочь . Все довольны :)

Balthazar 06-12-2010 17:27 1559649

помогите перевести эту задачу пожалуйста:
uses crt;
var st:string;
i,j:byte;
begin
writeln('Введите арифметическое выражение: ');
readln(st);
for i:=2 to length(st) do begin
if st[i-1] in ['+','-','*','/'] then
if st[i] in ['+','-','*','/'] then
inc(j);
end;
for i:=2 to length(st) do begin
if (st[i-1] in ['0'..'9']) and (st[i] in [' '])
and (st[i+1] in ['0'..'9'])then inc(j);
if (st[i-1] in ['+','-','*','/']) and (st[i] in [' '])
and (st[i+1] in ['+','-','*','/'])then inc(j);
end;
if j=0 then
writeln('Данное выражение записано верно!')
else
writeln('Данное выражение записано не верно!');
end.
как не пытался постоянно выдаёт какую-то ошибку

samira040694@vk 01-11-2013 19:01 2245562

помогите пожалуйста перевести программу в си ++

Program pr1;
Uses crt;
Var n:integer;
a,c,k,ka,kc,kr:byte;
m:set of byte;
Begin
clrscr;
repeat
write('Введите натуральное число n=');
readln(n);
until n>0;
repeat
write('Введите цифру a=');
readln(a);
until a in [0..9];
k:=0;//cколько всего цифр
ka:=0;//сколько=а
kc:=0;//сколько четных
kr:=0;//сколько разных
m:=[];
while n>0 do
begin
k:=k+1;
c:=n mod 10;
if c mod 2=0 then kc:=kc+1;
if c=a then ka:=ka+1;
if not (c in m) then
begin
kr:=kr+1;
m:=m+[c];
end;
n:=n div 10;
end;
writeln('Четных цифр=',kc);
writeln('Разных цифр=',kr);
if ka>2 then write('Цифра ',a,' встречается больше 2 раз')
else write('Цифра ',a,' встречается не больше 2 раз');
readln
end.

Бородай Роман 13-09-2015 10:52 2552625

program Boolean4;
var
A,B: Integer;
begin
Write('Введите число A: ');
Readln(A);
Write('Введите число B: ');
Readln(B);
Writeln((A>2) and (B <=3));
end.

mrcnn 14-09-2015 04:48 2552871

Цитата:

Цитата Бородай Роман
program Boolean4; »


Код:

#include <stdio.h>

void main()
{
int A,B;
printf("'Введите число A: ");
scanf("%d", &A);
printf("'Введите число B: ");
scanf("%d", &B);
printf("%d\n", A>2 && B<=3);

}



Время: 17:56.

Время: 17:56.
© OSzone.net 2001-