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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 13.05.2008, 19:23   #1
Nikska
 
Регистрация: 13.05.2008
Сообщений: 4
Восклицание C++

Здравствуйте!!!
Кто может переделать код программ с паскаль на С++,помогите,пожалуйста!!!!
Код:
{********************************************************************************
Программа решает следующую задачу:
Даны два массива натуральных чисел а1,а2,...,аn и b1,b2,...,bn.
Найти обыкновенную несократимую дробь,равную a1/b1+a2/b2+...+an/bn.
*********************************************************************************}
program A_L_9_2;
const
  n=3;
type
  T=array[1..n] of integer;
  K=array[1..n] of integer;
var
  a:T;
  b:K;
  znam,j,s,i,d: integer;
  l:byte;
function NOD(m,n:integer): integer;
var r: integer;
begin
  while n<>0 do
  begin
    r:= m mod n;
    m:= n;
    n:= r;
  end;
  NOD:= m;
end;
{Процедура считает числитель и знаменатель дроби}
procedure drob(var x,y:integer; x1,y1:integer);
begin
  for l:=1 to n do
    x:=x * y1 + x1 * y; {считаем числитель}
  y:= y * y1;        {считаем знаменатель}
end;
begin   {Основная программа*}
  for i:= 1 to n do
  begin
    write('введите натуральное число a[',i,']=');
    read(a[i]);
  end;
  for j:= 1 to n do
  begin
    write('введите натуральное число b[',j,']=');
    read(b[j]);
  end;
  writeln;
  s:= a[1];
  znam:= b[1];
  for i:= 2 to n do
    begin
      drob(s,znam,a[i],b[i]);
      d:= NOD(s,znam);
      s:= s div d;      {сокращение дроби}
      znam:= znam div d;
    end;
    writeln('числит=',s,' / ','знам=',znam);
end. {Конец основной программы}
Nikska вне форума
Старый 13.05.2008, 20:09   #2
Goblin
Форумчанин
 
Регистрация: 24.11.2007
Сообщений: 196
По умолчанию

Работает без ошибок, но выведет ли правильный результат не знаю.
Код:
#include <iostream>
#include <stdlib.h>
using namespace std;      
const int N = 3;
int a[N], b[N], s, snam, d;

int NOD(int n, int m);
void drob(int &x, int &y, int x1, int y1);
int main()
{
    for(int i=0; i<N; i++)
    {
        cout << "Enter natural number a[" << i << "] = ";
        cin >> a[i];
    }
    for(int j=0; j<N; j++)
    {
        cout << "Enter natural number b[" << j << "] = ";
        cin >> b[j];
    }
    s = a[0];
    snam = b[0];
    for(int p=1; p<N; p++)
    {
        drob(s, snam, a[p], b[p]);
        d = NOD(s, snam);
        s = s / d;
        snam = snam / d;
    }
    cout << "Chislit: " << s << endl;
    cout << "Snamenat: " << snam << endl;
    system("PAUSE");
    return 0;
}

int NOD(int n, int m)
{
    int r;
    while(n!=0)
    {
        r = m % n;
        m = n;
        n = r;
    }
    return m;
}

void drob(int &x, int &y, int x1, int y1)
{
    for(int i=0; i<N; i++)
    {
        x = x * y1 + x1 * y;
        y = y * x1;
    }
}
Goblin вне форума
Старый 14.05.2008, 16:09   #3
Nikska
 
Регистрация: 13.05.2008
Сообщений: 4
По умолчанию

Спасибо огромное за задачу!!!
Можете сделать ещё одну программу на СИ?
Вот паскалевский код:
Код:
{***************************************************************************
Программама решает следующую задачу:
По данным значениям аргументов а и b вычислить значение функции
f(a,b)=(sqrt(a+b) + exp(1/3*ln(a-b)) + exp(1/4*ln(a+b)) +
exp(1/5*ln(a-b))) / (sqrt(a*b) + exp(1/3*ln(a/b)) + exp(1/4*ln(a*b)) +
exp(1/5*ln(a/b))).
Аргументы должны принадлежать области определения функции
****************************************************************************}
Program Funct;
uses crt;
var
  a,b: integer;
function f(a,b: real): real;
begin
  f:=sqrt(a)+sqrt(sqrt(a))+exp(ln(b)/3)+exp(ln(b)/5);
end;
var
  res : real;
begin
  clrscr;
  writeln('введите a ');
  readln(a);
  writeln('введите b');
  readln(b);
  res:= f(a+b,a-b) / f(a*b,a/b);
  writeln('ответ=', res:2:4);
  readln;
repeat until keypressed;
end.
Nikska вне форума
Закрытая тема


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