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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2010, 23:57   #1
Pris696
Новичок
Джуниор
 
Регистрация: 10.01.2010
Сообщений: 2
Сообщение C++ несколько задач требуют редактирования).

Доброго времени суток.
На вашем форуме хочу задать несколько вопросов. К сожалению в С++ разбираюсь ужасно плохо, можно даже сказать никак.

Задача:
Написать программу, которая выдает простые числа.

Код:
 
#include "stdafx.h"
#include "conio.h"
#include "stdio.h"
#include "math.h"
typedef long __int32;
int _tmain(int argc, _TCHAR* argv[])
{
    
    bool c = new bool();
    int i = 0;
    int j = 0;
    int k = 0;
    __int32 *p;
    __int32 r = 0;
    double s = 0;
    __int32 n;
    printf("N=");
    scanf ("%d", &n);
    
double aa = log((double)(n));
    if( n>200 )
    {
        r = (__int32)(n/((aa-2)+1));
    }
    else
    {
        r = (__int32)(1.6*n/(log((double)n)+1));
    }
    p = new __int32[r+1];
    
    printf("Kolichestvo prostix chisel: %d \n", r);
    p[1] = 1;
    p[2] = 2;
    p[3] = 3;
    i = 4;
    do
    {
        p[i] = 0;
        i = i+1;
    }
    while( i<=r );
    j = 3;
    k = 3;
    do
    {
        i = 2;
        s = sqrtf(k);
        c = true;
        do
        {
            i = i+1;
            if( p[i]>s )
            {
                p[j] = k;
                j = j+1;
                c = false;
            }
        }
        while( (__int32)((double)(k)/(double)(p[i]))*p[i]!=k & c );
        k = k+2;
    }
    while( k<=n );
    
    
for(i=1; i<j;i++)
    {
        if(p[i]!=0)
        printf("p[%d]= %d \n",i, p[i] );
    }
        delete []p;
        return 0;
}
Где-то допустил ошибку, поскольку не компилируется( Если она очевидна, прошу ткнуть носом.



И как уже говорил, в С++ разбираюсь ужасно, посему, если вас не затруднит, то очень прошу перевести программы, написанные в паскале на С++. (Если это не вызовет у вас сложности, конечно.)


Программы на паскале:
Код:
    k := n;
    {инвариант: произведение напечатанных чисел и k равно
     n, напечатаны только простые числа}
    while not (k = 1) do begin
    | l := 2;
    | {инвариант: k не имеет делителей в интервале (1,l)}
    | while k mod l <> 0 do begin
    | | l := l + 1;
    | end;
    | {l - наименьший делитель k, больший 1, следовательно,
    |  простой}
    | writeln (l);
    | k:=k div l;
    end;

Код:

        i:=1; state:=0;

        {i - первая непрочитанная буква, state - состояние}

        while (i<> n+1) and (state <> 4) do begin

          if state = 0 then begin

            if x[i] = a then begin

              state:= 1;

            end else begin

              state:= 0;

            end;

          end else if state = 1 then begin

            if x[i] = b then begin

              state:= 2;

            end else if x[i] = a then begin

              state:= 1;

            end else begin

              state:= 0;

            end;

          end else if state = 2 then begin

            if x[i] = c then begin

              state:= 3;

            end else if x[i] = a then begin

              state:= 1;

            end else begin

              state:= 0;

            end;

          end else if state = 3 then begin

            if x[i] = d then begin

              state:= 4;

            end else if x[i] = a then begin

              state:= 1;

            end else begin

              state:= 0;

            end;

          end;

        end;

        answer := (state = 4);

Код:

const 
n=3;
m=4;
var 
a:array [1..n,1..m] of real;
i,j,h,l:integer;ic,ik:real;
begin
  randomize;
  for i:=1 to n do
    for j:=1 to m do 
        read(a[i,j]); 
    ic:=1;
    ik:=2;    
  while (ic<>ik) do 
    begin
      i:=random(3);
      h:=random(3);
      j:=random(4);
      l:=random(4);
      if a[i,j]=a[h,l] then 
        begin
          ic:=a[i,j];
          ik:=a[h,l];
        end;          
    end;
    write(ic:4:4,ik:4:4);                
end.
И последняя, проклятая для меня схема Горнера
Код:
k := 0; y := a[n]; 
{инвариант: 0 <= k <= n, 
 y= a[n]*(x в степени k)+...+a[n-1]*(x в степени k-1)+...+ 
+ a[n-k]*(x в степени 0)} 
while k<>n do begin 
| k := k + 1; 
| y := y * x + a [n-k]; 
end;
Заранее благодарю за внимание и помощь.

Последний раз редактировалось Pris696; 15.01.2010 в 00:46.
Pris696 вне форума Ответить с цитированием
Старый 14.01.2010, 23:59   #2
Pris696
Новичок
Джуниор
 
Регистрация: 10.01.2010
Сообщений: 2
По умолчанию

P.S. Какой код необходимо вводить, что бы код программы был выделен?
Pris696 вне форума Ответить с цитированием
Старый 15.01.2010, 00:06   #3
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Цитата:
Сообщение от Pris696 Посмотреть сообщение
P.S. Какой код необходимо вводить, что бы код программы был выделен?
(CODE) (/CODE) круглые скобки замени квадратными
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько задач Nellas Помощь студентам 24 31.10.2009 14:22
Несколько задач hvaran Помощь студентам 0 07.07.2009 17:31
Несколько задач. GoldMan Паскаль, Turbo Pascal, PascalABC.NET 1 02.12.2008 15:14
[C++] Несколько задач Алиса111 Помощь студентам 1 15.01.2008 03:52
Несколько задач Wilda Паскаль, Turbo Pascal, PascalABC.NET 5 05.12.2007 19:03