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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2013, 06:43   #1
Starget-93
Пользователь
 
Регистрация: 12.11.2012
Сообщений: 11
По умолчанию Перевести программу из Pascal в C++

Помогите пожалуйста перевести программу из Pascal в С++
Код:
program tiag_shar;
Var x0,x1,h,b,f0,f1,ff,c,x:real; k,p,n,i:byte;
const eps=1e–7;
function f(x:real):real;
 begin
  f:=x*sqr(x)+2*sqr(x)–x+3
 end;
function pr(x:real):real;
 begin
  pr:=3*sqr(x)+4*x–1
 end;
begin
  x:= –5;
  for i:=1 to 20 Do begin
    Writeln(' x= ',x,' pr= ',pr(x));
    x:=x+0.5;
   end; readln;
  Write('x0,x1?'); readln(x0,x1);
  f0:=f(x0); f1:=f(x1);
  if f1>f0 then begin
    c:=x1; x1:=x0; x0:=c {переобозначаем точки}
   end;
  p:=0; { p=0 – меняем b, p=1 – меняем h}
  {b:=0.4;} b:=0.3; h:=0.2; n:=0;
  k:=0; {k=1 переопределяем точки x0,x1 }
  repeat
    if k=1 then begin
       x0:=x1; x1:=x; {переопределяем точки}
     end;
    k:=0;
    n:=n+1; {увеличиваем число итераций}
             {находим следующее приближение}
    x:=x1–h*pr(x1)+b*(x1–x0);
             {вычисляем целевую функцию}
             {для следующего приближения}
    ff:=f (x);
             {проскочили минимум?}
    if (ff>f1) and (p=0) and (b–0.1>0) then
      b:=b–0.1 else
       if (b–0.1)<=0 then p:=1;
       if (ff>f1) and (p=1) and (h>=eps) then h:=h/2;
       if ff<f1 then k:=1;
  untiL (abs(x1–x)<eps) or (h<eps);
  Writeln(' x*= ',x,' min f= ',f (x),
       ' Df/Dx= ',pr(x),' b= ',b,' h= ',h,' n= ',n);
end.

Последний раз редактировалось Stilet; 24.03.2013 в 13:41.
Starget-93 вне форума Ответить с цитированием
Старый 24.03.2013, 17:26   #2
NinjaNoob
Пользователь
 
Регистрация: 02.10.2012
Сообщений: 40
По умолчанию

Код:

#include "stdafx.h"
#include <math.h>
#include <iostream>
#include <stdio.h>
using namespace std;

float f(float x)
{
 float f=x*pow(x,2)+2*pow(x,2)-x+3;
 return f;
}

float pr(float x)
{
 float pr=3*pow(x,2)+4*x-1;
 return pr;
}

int _tmain(int argc, _TCHAR* argv[])
{
	float x0,x1,h,b,f0,f1,ff,c,x;
	int k,p,n,i;
	float eps=1e-7;
	x=-5;

	for (int i=1; i<20; i++) {
		cout<<"x= "<<x<<" pr= "<<pr(x)<<endl;
		x+=0.5;
	} 
	_flushall();
	cout<<"x0= "; 
	cin>>x0;
	cout<<endl;
	cout<<"x1= "; 
	cin>>x1;
	cout<<endl;
	f0=f(x0); 
	f1=f(x1);

	if (f1>f0) {
		c=x1;
		x1=x0;
		x0=c; 
	}

	p=0; 
	b=0.3; 
	h=0.2; 
	n=0;
	k=0; 

	do {
		if (k==1) {
			x0=x1; x1=x; 
		}
		k=0;
		n=n+1;             
		x=x1-h*pr(x1)+b*(x1-x0);             
		ff=f(x);
            
		if ((ff>f1)&&(p=0)&&(b-0.1>0)) {
			b=b-0.1;
		}
		if ((b-0.1)<=0) {
			p=1;
		}
		if ((ff>f1) && (p==1) && (h>=eps)) { 
			h=h/2;
		}
		if (ff<f1) {
			k=1;
		}
	}
	while ((abs(x1-x)<eps) || (h<eps));

  cout<<endl<<" x*= "<<x<<" min f= "<<f(x)<<" Df/Dx= "<<pr(x)<<" b= "<<b<<" h= "<<h<<" n= "<<n;
  system("pause");
	return 0;
}

Последний раз редактировалось NinjaNoob; 24.03.2013 в 17:36.
NinjaNoob вне форума Ответить с цитированием
Старый 13.11.2014, 14:04   #3
aleandr
Новичок
Джуниор
 
Регистрация: 13.11.2014
Сообщений: 3
Вопрос Help!

Помогите, пожалуйста, и мне перевести программу на язык С с Паскаля. ну никак не могу разобраться с С

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  //Счётчики
  i, j, n, m  : Integer;
  //Символ, обработанный на предыдущей итерации.
  LastChar    : String;
  //Исходная строка.
  StrTmp      : String;
  //Флаг, показывающий - найдено ли слово полиндром.
  IsPolindrom : Boolean;
begin
  //Берём исходную строку.
  StrTmp := Edit1.Text;
  //Обнуляем результирующую строку.
  Edit2.Text := '';
  //Символ, обработанный на предыдущей итерации - ницилизируем пустой строкой.
  LastChar := '';
  //Перебор символов исходной строки.
  for i := 1 to Length(StrTmp) - 1 do begin
    //Если текущий символ не пробел, а предыдущий является пробелом - значит,
    //мы нашли начало очередного слова.
    //Если текущий символ не пробел и этот символ является первым в строке - значит,
    //мы нашли начало очередного слова.
    if (StrTmp[i] <> ' ') and ( (LastChar = ' ') or (i = 1) ) then begin
      //Обнаружен индекс символа, начиная с которого расположено очередное слово.
      //Ищем индекс символа, который расположен в конце слова.
      for j := i to Length(StrTmp) - 1 do begin
        if j = Length(StrTmp) then begin
          //Достигнут самый последний символ в строке - считаем его концом слова.
          Break;
        end;
        if StrTmp[j + 1] = ' ' then begin
          //Текущий символ является концом слова. Потому что следующий за ним символ
          //является пробелом.
          Break;
        end;
      end;
      //Теперь имеем индекс символа с которого слово начинается: i.
      //И индекс символа на котором слово заканчивается: j.
      //Проверяем: является ли выделенное слово полиндромом.
      //Для этого поочередно сравниваем буквы, следующие слева направо, с символами,
      //которые поочередно следуют справа налево.
      IsPolindrom := True;
      m := 0;
      for n := i to j do begin
        if StrTmp[n] <> StrTmp[j - m] then begin
          //Очередная пара символов не совпала - значит текущее слово не является
          //полиндромом.
          IsPolindrom := False;
          Break;
        end;
        m := m + 1;
      end;
      if IsPolindrom then begin
        //Раз слово является полиндромом, заносим его в результирующую строку.
        if Edit2.Text <> '' then begin
          Edit2.Text := Edit2.Text + ', ';
        end;
        Edit2.Text := Edit2.Text + Copy(StrTmp, i, j - i + 1);
      end;
    end;
    //В конце итерации запоминаем последний обработанный символ строки.
    LastChar := StrTmp[i];
  end;
end;


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 14.11.2014 в 09:34.
aleandr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
может кто перевести программу из pascal в C# medved2800 Помощь студентам 0 14.02.2013 18:21
перевести программу с языка C# на язык Pascal _SoTo_ Помощь студентам 3 25.11.2012 03:53
перевести программу рисования графиков с Pascal на Delphi DooD Помощь студентам 5 19.05.2011 23:15
нужно перевести программу из Turbo Pascal в Delphi Insensible Doll Помощь студентам 3 27.05.2010 13:41
перевести программу из Pascal с использованием компонента Stringgrid в delphi. evrey Компоненты Delphi 4 02.06.2008 18:57