Помощь - Поиск - Пользователи - Календарь
Полная версия: перевод на с++
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Feagor
вот такой код на паскале
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
на всякий случай задание напиши, порой легче заново написать, чем строчку за строчкой бездумно переводить ...
Feagor
ну раз надо, то пожалуста, вот что накалякал на с, правда даже не компилится....
#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
Feagor, тебя klem4 спросил задание, а не код на с smile.gif
Feagor
2 Michael_Rybak задание прикрепил вообще-то=)
volvo
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
Цитата
2 Michael_Rybak задание прикрепил вообще-то=)


Сорри, не заметил.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.