Перевести код с Паскаля на СИ - C (СИ) (156884)

Узнай цену своей работы

Формулировка задачи:

Попробовал перевести но выдает не те результаты. Не подскажите где ошибка?
Листинг программы
  1. Program P1;
  2. Var Map: Array[1..100,1..100] of Integer;
  3. S,G,F: Array[1..100] of Integer;
  4. A,I,B,J,N,M,K,L,P,R: Integer;
  5. Begin
  6. Readln(N,M);
  7. For A:=1 to N do
  8. For B:=1 to N do
  9. Map[A,B]:=16000;
  10. For I:=1 to M do
  11. begin
  12. Read(L);
  13. For J:=1 to L do
  14. Read(S[J]);
  15. For A:=1 to L do
  16. For B:=1 to L do
  17. Map[S[A],S[B]]:=1;
  18. End;
  19. For A:=1 to N do
  20. For B:=1 to N do
  21. For I:=1 to N do
  22. If Map[A,B]>Map[A,I]+Map[I,B] then Map[A,B]:=Map[A,I]+Map[I,B];
  23. Read(K);
  24. A:=0;
  25. For I:=1 to K do
  26. begin
  27. Readln(G[I],S[I],F[I]);
  28. A:=A+G[I];
  29. End;
  30. P:=0;
  31. R:=P;
  32. For I:=1 to N do
  33. begin
  34. P:=0;
  35. For J:=1 to K do
  36. begin
  37. If I=S[J] then begin P:=P+G[J]; continue; End;
  38. If Map[I,S[J]]=16000 then begin P:=0; Break; End;
  39. If (Map[I,S[J]]*4>G[J]) and (F[J]=0) then begin P:=0; Break; End;
  40. If F[J]=1 then begin P:=P+G[J]; Continue; End;
  41. P:=P+G[J]-Map[I,S[J]]*4;
  42. End;
  43. If P>R then
  44. begin
  45. R:=P;
  46. L:=I;
  47. End;
  48. End;
  49. If R<>0 then Writeln(L,' ',A-R)
  50. else Writeln(0);
  51. End.
Листинг программы
  1. #include <stdio.h>
  2. void main()
  3. {
  4. int map[100][100],s[100],g[100],f[100],a,b,i,j,n,m,k,l,p,r;
  5. scanf("%d%d",&n,&m);
  6. for(a=0;a<n;a++)
  7. for(b=0;b<n;b++)
  8. map[a][b]=16000;
  9. for(i=0;i<m;i++)
  10. {
  11. scanf("%d",&l);
  12. for(j=0;j<l;j++)
  13. scanf("%d",&s[j]);
  14. for(a=0;a<l;a++)
  15. for(b=0;b<l;b++)
  16. map[s[a]][s[b]]=1;
  17. }
  18. for(a=0;a<n;a++)
  19. for(b=0;b<n;b++)
  20. for(i=0;i<n;i++)
  21. if(map[a][b]>map[a][i]+map[i][b])
  22. map[a][b]=map[a][i]+map[i][b];
  23. scanf("%d",&k);
  24. a=0;
  25. for(i=0;i<k;i++)
  26. {
  27. scanf("%d%d%d",&g[i],&s[i],&f[i]);
  28. a+=g[i];
  29. }
  30. p=0;
  31. r=p;
  32. for(i=0;i<n;i++)
  33. {
  34. p=0;
  35. for(j=0;j<k;j++)
  36. {
  37. if(i==s[j]) { p+=g[j]; continue;}
  38. if(map[i][s[j]]=16000) {p=0; break;}
  39. if(map[i][s[j]]*4>g[j] && f[j]==0) { p=0; break;}
  40. if(f[j]=1) { p+=g[j]; continue;}
  41. p+=g[j]-map[i][s[j]]*4;
  42. }
  43. if(p>r) { r=p; l=i;}
  44. }
  45. if(r!=0) printf("%d %d",l,a-r);
  46. else putchar('0');
  47. system("PAUSE");
  48. }

Решение задачи: «Перевести код с Паскаля на СИ»

textual
Листинг программы
  1. ==

ИИ поможет Вам:


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

Оцени полезность:

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут