IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

 
 Ответить  Открыть новую тему 
> Помогите кто может переделать прогу с Паскаля на СИ!, С паскаля на СИ...
artem
сообщение 21.07.2008 22:04
Сообщение #1


Гость






Народ написал прогу на Паскале, а теперь препод требует тоже самое написать на Си =(. А я не очень то в нем шарю... мб поможете? текст проги прилагаю!!


program pr9;

uses crt, graph;

const znaki=['.',',','?','!','1','2','3','4','5','6','7','8','9'];

type slovo = record
           s: string;
           n: integer;
           m:integer;
           end;
     slova = array[1..1] of slovo;


var l,q,t,k,i,j: integer;
    st,st1,st2: string;
    f,f1: text;
    a: ^slova;
    sl: slovo;

procedure chtenie;
var i:integer;
begin
for i:=1 to length(st) do
      if st[i] in znaki then st[i]:=' ';
      while st[length(st)]=' ' do delete(st,length(st),1);
      while st<>'' do begin
            while st[1]=' ' do delete(st,1,1);
            if pos(' ',st)>0 then begin
               st1:=copy(st,1,pos(' ',st)-1);
               delete(st,1,pos(' ',st));
               q:=length(st1);
               if q>k then k:=q;
               a^[q].s:=a^[q].s+st1;
               a^[q].m:=q;
               end else begin
               q:=length(st);
               if q>k then k:=q;
               a^[q].s:=a^[q].s+st;
               a^[q].m:=q;
               st:='';
               end;
             end;
end;
procedure graf;
var gm,gd,kx,ky,i: integer;
    str2:string;
begin
gd:=detect;
initgraph(gd,gm,'c:\bin');
line(20,5,20,480);
line(20,5,23,10);
line(20,5,17,10);
line(0,300,620,300);
line(620,300,615,303);
line(620,300,615,297);
for i:=1 to k do
if a^[i].n<>0 then
begin
ky:=250 div a^[i].n;
l:=i;
break;
end;
kx:=600 div (k+1);
for i:=1 to a^[l].n do begin
    line(17,300-ky*i,20,300-ky*i);
    str(i,st);
    outtextxy(5,297-ky*i,st);
    end;
t:=1;
for i:=1 to k do
if a^[i].s<>'' then
begin
    setfillstyle(1,i+1);
    bar(10+t*kx,299-a^[i].n*ky,30+t*kx,299);
    str(a^[i].m,str2);
    outtextxy(5+t*kx,310,str2);
    t:=t+1;
end;
readkey;
closegraph;
end;

begin
clrscr;
assign(f,'pr12.txt');
reset(f);
assign(f1,'pr12_res.txt');
rewrite(f1);
getmem(a,250*sizeof(slovo));
for i:=1 to 30 do
a^[i].s:='';
k:=1;
st2:='';
writeln('Vvedite 1 dlya raboty s tekstom iz faila!!');
writeln('Vvedite 2 dlya vvoda teksta vruchnuu!!');
readln(t);
clrscr;
if t=1 then
   while not eof(f) do
         begin
         readln(f,st);
         chtenie;
         end
   else if t=2 then
        begin
        readln(st);
        chtenie;
        end;
l:=0;
for i:=1 to k do
if a^[i].m>0 then
l:=l+(length(a^[i].s) div a^[i].m);
for i:=1 to k do
if a^[i].m>0 then
a^[i].n:=round(((length(a^[i].s)/a^[i].m)/l)*100);

for i:=1 to k do
begin
l:=1;
while  l<=length(a^[i].s) do
begin
st2:=st2+copy(a^[i].s,l,a^[i].m)+' ';
l:=l+a^[i].m;
end;
a^[i].s:=st2;
st2:='';
end;

i:=0;
while i<=k do
begin
     j:=1;
     while j<=k-2-i do
     begin
          if a^[j].n < a^[j+1].n then
          begin
               sl:=a^[j];
               a^[j]:=a^[j+1];
               a^[j+1]:=sl;
          end;
          j:=j+1
     end;
     i:=i+1;
end;

for i:=1 to k do
if a^[i].s<>'' then
writeln(a^[i].s);
readkey;
clrscr;

for i:=1 to k do
if a^[i].s<>'' then
begin
write('chislo bukv:',a^[i].m,' ');
write('slov:',a^[i].n);
writeln;
end;

for i:=1 to k do
if a^[i].n>=10 then
writeln(f1,'chislo bukv:',a^[i].m,' slov:',a^[i].n);

readkey;
graf;
close(f);
close(f1);
end.


М
Во первых пользуйтесь тегами, во вторых предоставьте текст задания, может быть кто-нибудь и сделает ...



Сообщение отредактировано: klem4 - 22.07.2008 14:03
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 7.08.2025 4:35
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"