Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
#1

Перевод из Паскаля в с++ - C++

14.01.2011, 17:48. Просмотров 1704. Ответов 33
Метки нет (Все метки)

Задача:
Найти все натуральные n-значные числа, цифры в которых образуют строго возрастающую последовательность
Есть решение на Паскале:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var
c1,c2,i,c3:longint;
n,f:integer;
begin
readln(n);
c1:=1;
for i:=1 to n-1 do
c1:=c1*10;
c2:=c1*10-1;
for i:=c1 to c2 do
begin
c3:=i;
f:=0;
repeat
if c3 mod 10<=(c3 div 10) mod 10 then f:=1;
c3:=c3 div 10;
until c3<10;
if f=0 then write(i,' ');
end;
end.
То что перевел я:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream.h>
#include <conio.h>
 
int main
{
   int c1,c2,c3;
   int n,f;
   cout<<"Введите число";
   cin>>n;
   for i=1<n-1
На for запнулся, потому что чувствую, что неправильно, и еще вот вопрос: как repeat и until
перевести?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2011, 17:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевод из Паскаля в с++ (C++):

Перевод с Паскаля в С++ - C++
uses crt; type prm=record {прямая с полями, коэффициентами} a,b,c:real; end; tch=record {точка с полями,...

Перевод с Паскаля в С++ - C++
uses crt; function rec(n:integer):real; var z:integer; begin z:=1; if n=0 then begin z:=1; rec:=1 end

Перевод с паскаля на С++ - C++
Даны два массива A и B одинакового размера N. Сформировать новый массив C того же размера, каждый элемент которого равен максимальному из...

перевод с паскаля на С++ - C++
Дан массив ненулевых целых чисел размера N. Проверить, образуют ли его элементы геометрическую прогрессию (см. задание 4). Если образуют,...

Перевод с Паскаля на с++ - C++
Пусть дан файл целых чисел. Создайте файл вещественных чисел, значениями которого будут средние арифметические значения каждой пятёрки...

Перевод из Паскаля в C++ - C++
Здравствуйте! Помогите перевести код из Паскаля в C++. Трансляторов смотрел в гугле, так и не разобрался. Вот задача Поменять местами...

33
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 15:49  [ТС] #16
Цитата Сообщение от taras atavin Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostrem.h>
int main ()
{
 long int c1,c2,i,c3;
 int n,f;
 std::cin>>n;
 c1:=1;
 for (i=1; i<=n-1; ++i)
 {
  c1*:=10;
 }
 c2:=c1*10-1;
 for (i=c1; i<=c2; ++i)
 {
  c3:=i;
  f:=0;
  do
  {
   if (c3%10<=(c3/10)%10)
   {
    f:=1;
   }
   c3/=10;
  }
  while (c3>=10);
  if (f==0)
  {
   std::cout<<i<<" ";
  }
 } 
 return 0;
}
сделал, как вы написали, теперь он такие ошибки выдает:
8:Type qualifier 'std' must be a struct or class name
8:Statement missing;
9:Expression syntax
12:Expression syntax
17:Expression syntax
18:Expression syntax
23:Multiple declaration for 'f'
23:Expression syntax
30:Type qualifier 'std' must be a struct or class name
30:Statement missing;
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.01.2011, 15:52 #17
Цитата Сообщение от Timon779 Посмотреть сообщение
std
а разве это не пространство имён для потоков?
Все
C++
1
:=
замени на
C++
1
=
0
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 15:56  [ТС] #18
Цитата Сообщение от taras atavin Посмотреть сообщение
а разве это не пространство имён для потоков?
Все
C++
1
:=
замени на
C++
1
=
ты по привычке знак присваивания как на Паскале чтоли написал?
В общем я заменил все := на =
теперь остались ошибки в std вначале и std в конце и в c1*=10;
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.01.2011, 16:05 #19
Цитата Сообщение от Timon779 Посмотреть сообщение
ты по привычке знак присваивания как на Паскале чтоли написал?
Я больше привык к сям, но не зная задач, зато имея готовый текст на паскале, я взял его и стал переводить каждый оператор. Вот несколько присваиваний и пропустил.
0
MILAN
886 / 780 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
15.01.2011, 16:10 #20
Цитата Сообщение от Timon779 Посмотреть сообщение
#include <iostrem.h>
C++
1
#include <iostream.h>
Добавлено через 2 минуты
Timon779, какой у вас компилятор?
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.01.2011, 16:11 #21
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream.h>
int main ()
{
 long int c1,c2,i,c3;
 int n,f;
 std::cin>>n;
 c1=1;
 for (i=1; i<=n-1; ++i)
 {
  c1*=10;
 }
 c2=c1*10-1;
 for (i=c1; i<=c2; ++i)
 {
  c3=i;
  f=0;
  do
  {
   if (c3%10<=(c3/10)%10)
   {
    f=1;
   }
   c3/=10;
  }
  while (c3>=10);
  if (f==0)
  {
   std::cout<<i<<" ";
  }
 } 
 return 0;
}
. Если без
C++
1
std::
работает, то выбрось. Если нет - уточни написание этого пространства.
0
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 16:52  [ТС] #22
Цитата Сообщение от MILAN Посмотреть сообщение
C++
1
#include <iostream.h>
Добавлено через 2 минуты
Timon779, какой у вас компилятор?
c <iostream.h> просто ошибка в написании была, у меня BORLANDC

Добавлено через 1 минуту
Цитата Сообщение от taras atavin Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream.h>
int main ()
{
 long int c1,c2,i,c3;
 int n,f;
 std::cin>>n;
 c1=1;
 for (i=1; i<=n-1; ++i)
 {
  c1*=10;
 }
 c2=c1*10-1;
 for (i=c1; i<=c2; ++i)
 {
  c3=i;
  f=0;
  do
  {
   if (c3%10<=(c3/10)%10)
   {
    f=1;
   }
   c3/=10;
  }
  while (c3>=10);
  if (f==0)
  {
   std::cout<<i<<" ";
  }
 } 
 return 0;
}
. Если без
C++
1
std::
работает, то выбрось. Если нет - уточни написание этого пространства.
теперь осталась только одна ошибка в c1*=10;

Добавлено через 36 минут
подправил c1*=10 на c1=10, теперь программа запускается, но при вводе числа вылетает, а при повторном открытии никакого результата нет, только введенные ранее цифры отображаются
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.01.2011, 16:56 #23
Цитата Сообщение от Timon779 Посмотреть сообщение
подправил c1*=10 на c1=10
Pascal
1
c1:=c1*10;
меняется именно на
C++
1
c1*=10;
.
0
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 17:00  [ТС] #24
хм... теперь с c1*=10; скомпилировалось, но почему-то все равно прога ничего не вычисляет
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.01.2011, 17:06 #25
Я не проверял алгоритм, но перевод вроде точный. Давай задачу, попробую решить заново сразу на плюсах.
0
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 17:19  [ТС] #26
вот сама задача:
Дана строка, содержащая произвольный текст. Сколько слов в тексте? Сколько цифр в тексте?
0
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
15.01.2011, 17:27 #27
Цитата Сообщение от Timon779 Посмотреть сообщение
Найти все натуральные n-значные числа, цифры в которых образуют строго возрастающую последовательность
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <sstream>
#include <string>
#include <cmath>
#include <algorithm>
#include <iterator>
 
int main()
{
    int n = 0;
    std::cin >> n;
    for(int i = pow(10.0, static_cast<double>(n - 1)); i < pow(10.0, static_cast<double>(n)) - 1; ++i)
    {
        std::ostringstream ost;
        ost << i;
        std::string str = ost.str(), tmp = ost.str();
        std::sort(tmp.begin(), tmp.end());
        std::string::iterator it = std::unique(tmp.begin(), tmp.end());
        tmp.resize(it - tmp.begin());
        if(tmp == str)
            std::cout << str << ' ';
    }
 
    return 0;
}
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.01.2011, 17:33 #28
Надо вывести количество слов и цифр?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream.h>
int main ()
{
 string s; // не уверен в написании типа.
 int i,l;
 char c,oldc;
 unsigned long int words, d;
 std::cin>>s;
 l=s.length();
 for (i=1,words=0, d=0, oldc="\0"; i<=l; ++i)
 {
  c=s[i];
  if ((c>='0')&&(c<='9'))  
  {
   ++d;
  }
  if (c==' ')
  {
   if (((oldc>='a')&&(oldc>='z'))||((oldc>='A')&&(oldc>='Z'))||((oldc>='А')&&(oldc>='Я'))||((oldc>='а')&&(oldc>='я')))
   {
    ++words;
   }
  }
  if (i==l)
  {
   if (((c>='a')&&(c>='z'))||((c>='A')&&(c>='Z'))||((c>='А')&&(c>='Я'))||((c>='а')&&(c>='я')))
   {
    ++words;
   }
  }
 }
 std<<"\n"<<words<<" слов,"<<d<<" цифр.";
 return 0;
}
. Кстати, твой вариант это задачу тоже не решает.
0
Timon779
1 / 1 / 0
Регистрация: 11.06.2010
Сообщений: 65
15.01.2011, 18:01  [ТС] #29
черт, извините текст другой задачи вляпал, вот задание:
Найти все натуральные n-значные числа, цифры в которых образуют строго возрастающую последовательность
Но правда ту мне доделать надо было, так что сейчас попробую ваши примеры с кодами, а то мой только слова вычисляет, а числа нет
0
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
15.01.2011, 18:03 #30
Timon779, Смотри пост #28.
0
15.01.2011, 18:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2011, 18:03
Привет! Вот еще темы с ответами:

Перевод из Паскаля в C++ - C++
Переведите программу из Паскаля в С++, пожалусйта Вот код : const nmax=100; var a: array of integer; i,j,n,m,min:...

Перевод из паскаля в с ++ - C++
Ребят помогите перевести в с ++ var p:array of integer; c,c1:char; i,j,N,K:integer; name:string; time1,time2:integer; ...

Перевод из Паскаля в С++ - C++
Нужно переделать задачу из Паскаля в С++Builder. Поможете? Вот само задание:Описать функцию PowerA234(A), вычисляющую вторую, третью и...

Перевод с паскаля на с++ - C++
С Паскаля на С++ var n: Integer; d: Longint; begin repeat Write('Введите N : '); ReadLn(n); until n in ; n:=n div 2*2; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru