Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ перевод на с++

Автор: Feagor 24.01.2008 20:36

вот такой код на паскале

uses crt;
var k,l,m,i:longint;
function rif(n,m:longint):boolean;
var i:integer;
begin
repeat
inc(i);
if odd(n) then n:=n*3+1
else n:=n div 2;
until (n=1) or (i>=m);
if i>=m then rif:=false
else rif:=true;
end;
begin
clrscr;
Writeln('Vvedite natural''nie chisla K,L,M');
readln(K,l,m);
if (k<0) or (l<0) or (k>l) or (m<0) then
begin
writeln('Vvedennie vami chisla ne vvedeni nepravilno');
readkey;
halt;
end;
for i:=k to l do if rif(i,m)=true then writeln('dlya chiisla ',i,' vipolnjaetsa')
else writeln('dlya chiisla ',i,' ne vipolnjaetsa');
readkey;
end.

че-то на с перевожу ниче не полчается, помогите плиз!!!!!Прикрепленное изображение

Автор: klem4 24.01.2008 21:07

на всякий случай задание напиши, порой легче заново написать, чем строчку за строчкой бездумно переводить ...

Автор: Feagor 24.01.2008 22:12

ну раз надо, то пожалуста, вот что накалякал на с, правда даже не компилится....

#include <stdio.h>
#include <conio.h>
#include <iostream.h>
bool rif(int n, int m){
int i;
do{
i++;
if ((n % 2)==0) n=n*3+1;
else n=n/2;}
while ((n!=1) || (i!=m));
if (i>=m) return false;
else return true;
}
main(){
int k,l,m,i;
cout<<"Vvedite natural'nie chisla k,l,m\n";
cin>>k>>l>>m;
for (i=k;i<=l;i++){
if (rif(i,m)==true) cout<<"false\n";
else cout<<"true\n";
}
getch();
}


Автор: Michael_Rybak 24.01.2008 22:23

Feagor, тебя klem4 спросил задание, а не код на с smile.gif

Автор: Feagor 24.01.2008 22:49

2 Michael_Rybak задание прикрепил вообще-то=)

Автор: volvo 24.01.2008 22:51

Feagor, а ничего что твоя программа на Паскале будет возвращать мусор? Вот перевод, подкорректированный в соответствии с замечанием. Что было добавлено - посмотри внимательно...

#include <iostream>
#include <conio.h>

bool rif(long n, long m) {
int i = 0;
do {
n = ((n % 2)) ? (3 * n + 1): (n / 2);
} while((n != 1 && ++i < m));

return (bool)(i < m);
}

int main() {
int K, L, M;

std::cout << "Vvedite natural''nie chisla K,L,M" << std::endl;
std::cin >> K >> L >> M;
if( K < 0 || L < 0 || K > L || M < 0) {
std::cout << "error" << std::endl;
return -1;
}

for(int i = K; i <= L; ++i)
std::cout << "dlya chiisla " << i << ((rif(i, M)) ? "":"ne") << " vipolnjaetsa" << std::endl;
getch();
return 0;
}


Автор: Michael_Rybak 25.01.2008 3:36

Цитата
2 Michael_Rybak задание прикрепил вообще-то=)


Сорри, не заметил.