Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите перевести с Pascal на С++

74K
12 октября 2011 года
sting707
4 / / 12.10.2011
есть правильно работающий код на паскале.необходимо перевести на с++.
Если необходимо,вот сама задача:
определить минимальное и максимальное расстояние между соседними простыми числами
в заданном диапазоне от N до M

var a,b:array[1..10000] of integer;
i,j,max,min,n,m,k,x:integer;
begin
read(n,m);
for i:=n to m do begin
k:=0;
for j:=1 to i do begin
if i mod j=0 then k:=k+1;
end;

if k=2 then begin
x:=x+1;
a[x]:=i;
end;
end;
max:=0;
min:=1000;
for i:=1 to x-1 do begin
if a[i+1]-a> max then max:= a[i+1]-a;
if a[i+1]-a< min then min:= a[i+1]-a;
end;
writeln;
write(min,' ',max);
end.
271
12 октября 2011 года
MrXaK
721 / / 31.12.2002
ну если формально просто переписать, то вот (си без плюсов):
Код:
#include <stdio.h>

int main(void) {
  int a[10000], b[10000], i, j, max, min, n, m, k, x=0;
  scanf("%d %d", &n, &m);
  for (i = n; i <= m; i++) {
    k = 0;
    for (j = 1; j <= i; j++) {
      if ( 0 == i % j ) {
        k++;
      }
    }
    if (2 == k) {
      a[x++] = i;
    }
  }
  max = 0;
  min = 1000;
  for (i = 0; i < x-1; i++) {
    if ( a[i+1]-a > max)
      max = a[i+1]-a;
    if ( a[i+1]-a < min)
      min = a[i+1]-a;
  }
  printf("\n%d %d", min, max);
  return 0;
}

но вообще тут дофига чего ненужного)) хотя бы неиспользуемые переменные) потом простое ли число можно в общем случае посчитать быстрее (у нас же в данном случае не стоит задача посчитать число делителей), во-первых просто поставив выход если делитель не равен 1 или самому числу, а во-вторых, по определению простых чисел, делить для определения простоты надо только на предыдущее простые (а они у нас в массиве хранятся), а не на всё подряд, и ограничен максимальный делитель корнем из числа.. min и max задавать статическими тоже плохо))
74K
12 октября 2011 года
sting707
4 / / 12.10.2011
При проверки выдает ошибку непредвиденный конец файла во время поиска предкомпилированного заголовка.
271
12 октября 2011 года
MrXaK
721 / / 31.12.2002
хз, смотрите либы, настройки компилятора.. Borland C++ 5.6 компилирует нормально, в остальных не тестил
74K
12 октября 2011 года
sting707
4 / / 12.10.2011
а я на Microsoft Visual Studio 2010 Express
271
13 октября 2011 года
MrXaK
721 / / 31.12.2002
ну хз, попробуйте заменить stdio.h на iostream, дописать using namespace std; и заменить scanf, printf на cin>>, cout<<; возможно мс с stdio что-то намутили, я тут других precompiled headers не вижу)
7
13 октября 2011 года
@pixo $oft
3.4K / / 20.09.2006
Ох уж эти precompiled headers…Их лучше вообще в свойставах проекта отключить,для маленьких они не нужны.Либо разобраться с ними и оформить по правилам
278
13 октября 2011 года
Alexander92
1.1K / / 04.08.2008
Цитата: sting707
При проверки выдает ошибку непредвиденный конец файла во время поиска предкомпилированного заголовка.


Даю 99% гарантии, что в свойствах проекта предкомпилированный заголовок включен, в то время как сам stafx.cpp отсутствует.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог