|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Roman Tuchin 2:5020/811.13 23 Oct 2003 00:03:18 To : Artem Chuprina Subject : требуется перевести программу с perl на c++ -------------------------------------------------------------------------------- 22 Oct 03 13:09, you wrote to me: RT>> Сабж! очень надо! помогите плз. AC> Лениво... Сколько денег дашь? Бесплатно могу посоветовать почитать про AC> шаблон vector в STL - переписывается один в один. если бы я был дураком то обратился бы в другую эху, это я все попробовал, но когда в перле в массив запихивается $n число $#x почему то равно нулю(а это колво элтов массива) когда же я делаю x.push_back(n) в с++ то x.size() почему то равен 1!!! К чему бы это?! =) поэтому если перевести все грамотно на c++ получается следующая программа которая, после числа 6 , выдает разные ответы с программой на перле! может подскажешь где я наврал?: #include <iostream> #include <stdlib.h> #include <vector> using namespace std; void re_lexograf(int n){ int s; int sum; vector <int> x; cout<<n<<endl; x.push_back(n); while(x[0]>1){ s=x.size()-1; while(s>0){ if ((x[s]>1)) break; s--; } x[s]--; sum=1; for(int i=s;i<=x.size();i++){ sum +=x.back(); x.pop_back(); } for(int d=x[s];sum>0;d--){ for(int i=1;i<=(int)(sum/d);i++) x.push_back(d); sum -= (d * (int)(sum/d)); } for(int i=0;i<x.size();i++){ if(!i) cout<<x[i]; else cout<<"+"<<x[i]; } cout<<endl; } } int main(int argc,char** argv){ if(argc>2){ exit(-1); } else if(argc==1){ int chislo; cout<<"Input number -> "; cin>>chislo; re_lexograf(chislo); } else{ re_lexograf(atoi(argv[1])); } } RT>> $n=5; RT>> my @x = ($n); RT>> print $x; RT>> print $n, "\n"; RT>> while ( $x[0] > 1 ) { RT>> my $s = $#x; RT>> while ( $s > 0 ) { RT>> last if $x[$s] > 1; RT>> $s--; RT>> } RT>> $x[$s]--; RT>> my $sum = 1; RT>> $sum += pop @x foreach $s+1..$#x; RT>> for (my $d = $x[$s]; $sum > 0; $d-- ) { RT>> push (@x, $d) foreach 1 .. int ($sum / $d); RT>> $sum -= $d * int ($sum / $d); RT>> } RT>> print join ('+', @x), "\n"; RT>> } AC> -- AC> Artem Chuprina AC> RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757 AC> --- ifmail v.2.15dev5 AC> * Origin: Leninsky 45 home network (2:5020/400) Roman [tre1@mail.msiu.ru] xmms: Distemper - Дверь в небо Linux 2.4.22 i686 ... [МГИУ] [PlagiatЪ] [ПМиТФ-5102] [Ska-Punk] [SlowlyNet] [LinuxNet] --- GoldED+/LNX 1.1.5-030809 * Origin: Возьму поинтов и нод в SlowlyNet, писать в нетмыло (2:5020/811.13) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.perl/38663f96e35b.html, оценка из 5, голосов 10
|