Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.06.03;
Скачать: [xml.tar.bz2];

Вниз

Портирование С++ кода на Паскаль   Найти похожие ветки 

 
Rorschach   (2012-01-30 21:55) [0]

Требуется переписать следующий код на Паскаль:
[code]
int main()
{
    unsigned int M, N;
    float raw_matrix[9][11];
    float *result_array;

    printf("enter M & N:\n");
    scanf("%i%i",&M,&N);
    printf("--------enter matrix--------\n");

    for(int j = 0; j<N; j++)
        for(int i = 0; i<M; i++)
        {
            scanf("%f",&raw_matrix[i][j]);
        }

    int sz = N/4;
    result_array = new float[M];

    for(int k = 0; k<M; k++)
    {
        result_array[k] = raw_matrix[k][3];
        for(int t = 1; t<=sz; t++)
        {
            if(raw_matrix[k][(t*4)-1] < result_array[k]) result_array[k] = raw_matrix[k][(t*4)-1];
        }

    }

       int n, swapped;
       do {
         swapped = 0;
         for (int i = 0; i < M - 1; i++) {
             if (result_array[i] < result_array[i+1]) {
                 n = result_array[i];
                 result_array[i] = result_array[i+1];
                 result_array[i+1] = n;
                 swapped = 1;
             }
         }
     } while (swapped);

    printf("\n\n\n");
    for(int s = 0; s<M; s++)
    {
        printf("%f\n",result_array[s]);
    }
}
[/code]
Буду очень благодарен за помощь


 
DVM ©   (2012-01-30 23:02) [1]


> Rorschach   (30.01.12 21:55) 
> Требуется переписать следующий код на Паскаль:

Это не C++ это C. Переводится на паскаль буквально один к одному даже утилитами типа C2PAS.


 
Rorschach   (2012-01-30 23:15) [2]


> Это не C++ это C.

А объявления переменных внутри for? ;) Хотя вы конечно правы. Проблема в том, что я на Паскале никогда в жизни не писал ни строчки кода. И протестировать возможности сейчас нет. Вы не могли бы посмотреть, нет ли в следующем коде ошибок и идентичен ли он моему:

#include <stdio.h>
#include <stdlib.h>

Integer main()
begin
   unsigned Integer M, N;
   Single raw_matrix[9,11];
   Single *result_array;

   printf("enter M (* C2PAS: RefOrBit? *)(* C2PAS: RefOrBit? *)& N:"#10"");
   scanf(" mod i mod i",(* C2PAS: RefOrBit? *)(* C2PAS: RefOrBit? *)(* C2PAS: RefOrBit? *)&M,(* C2PAS: RefOrBit? *)(* C2PAS: RefOrBit? *)(* C2PAS: RefOrBit? *)&N);
   printf("--------enter matrix--------"#10"");

   for(Integer j : : := 0; j<N; j++)
       for(Integer i : : := 0; i<M; i++)
       begin
           scanf(" modf",(* C2PAS: RefOrBit? *)(* C2PAS: RefOrBit? *)(* C2PAS: RefOrBit? *)&raw_matrix[i,j]);
       end;

   Integer sz : : := N/4;
   result_array : : := new Single[M];

   for(Integer k : : := 0; k<M; k++)
   begin
       result_array[k] : : := raw_matrix[k,3];
       for(Integer t : : := 1; t< : : := sz; t++)
       begin
           if (raw_matrix[k,(t*4)-1] < result_array[k]) then then then result_array[k] : : := raw_matrix[k,(t*4)-1];
       end;

   end;

      Integer n, swapped;
      do begin
        swapped : : := 0;
        for (Integer i : : := 0; i < M - 1; i++) begin
            if (result_array[i] < result_array[i+1]) then then then begin
                n : : := result_array[i];
                result_array[i] : : := result_array[i+1];
                result_array[i+1] : : := n;
                swapped : : := 1;
            end;
        end;
    end; while (swapped) do do do ;

   printf(""#10""#10""#10"");
   for(Integer s : : := 0; s<M; s++)
   begin
       printf(" mod f"#10"",result_array[s]);
   end;
end;


 
Rorschach   (2012-01-30 23:17) [3]

Нет, все-таки это ужасно. Такой корявый перевод не годится


 
DVM ©   (2012-01-30 23:29) [4]


> Rorschach   (30.01.12 23:15) [2]


> Вы не могли бы посмотреть, нет ли в следующем коде ошибок
> и идентичен ли он моему:

это не паскаль вообще :) это что-то другое


 
Rorschach   (2012-01-30 23:35) [5]

Этот мусор мне выдала программа C2PAS. :)


 
DVM ©   (2012-01-30 23:35) [6]


> Rorschach   (30.01.12 23:15) [2]

http://www.sql.ru/forum/actualfile.aspx?id=4187183 вот эта программа более-менее нормально переводит. Но это тоже править надо.


function main(): integer;
var
M: UINT;
N: UINT;
raw_matrix: array [0..Pred(9),0..Pred(11)] of float;
result_array: pfloat;
sz: integer;

n: integer;
swapped: integer;
begin
 
 
 
 printf("enter M & N:"#13#10"");
 scanf("%i%i",@M,@N);
 printf("--------enter matrix--------"#13#10"");
 
 for{while} intj:=0 to Pred(N) { j++}
 do
 for{while} inti:=0 to Pred(M) { i++}
 do
 begin
   scanf("%f",@raw_matrix[i][j]);
 end;
 
 sz:=N div 4;
 result_array:= newfloat[M];
 for{while} intk:=0 to Pred(M) { k++}
 do
 begin
   result_array[k]:= raw_matrix[k][3];
   for{while} intt:=1 to sz { t++}
   do
   begin
     if raw_matrix[k][(t*4)-1]<result_array[k]
     then
     result_array[k]:= raw_matrix[k][(t*4)-1];
   end;
 end;
 
 
 
 
 repeat
 begin
   swapped:= 0;
   for{while} inti:=0 to Pred(M-1) { i++}
   do
   begin
     if result_array[i]<result_array[i+1]
     then
     begin
       n:= result_array[i];
       result_array[i]:= result_array[i+1];
       result_array[i+1]:= n;
       swapped:= 1;
     end;
   end;
 end;
 until not {0=}(swapped);
 
 printf(""#13#10""#13#10""#13#10"");
 for{while} ints:=0 to Pred(M) { s++}
 do
 begin
   printf("%f"#13#10"",result_array[s]);
 end;
end;



 
DVM ©   (2012-01-30 23:38) [7]


> Rorschach

printf и scanf в паскале нет. Есть куда более простые Write и Read, но это не аналоги.


 
Rorschach   (2012-01-31 00:15) [8]

Трудно будет убедить препода, что этот код написан мной) Запостил на нескольких форумах, нигде не хотят за меня работать :D Блин, это печально :(


 
DVM ©   (2012-01-31 00:25) [9]


> Rorschach   (31.01.12 00:15) [8]


> Запостил на нескольких форумах, нигде не хотят за меня работать

ну так поработай сам за себя:

1) Выкинь все что вот в таких скобках {} - это комментарии
2) UINT замени на Longword
3) Float замени на Single или Double (или даже Real если это обычный паскаль)
4) printf заменить на Write (предварительно прочитав ее описание)
5) scanf заменить на Read (тоже прочитав описание)
6) pfloat заменить на ^Single или ^Double или ^Real
7) result_array:= newfloat[M] заменить на New() предварительно ознакомившись с описанием + нужно задать свой тип pfloat


 
Rorschach   (2012-01-31 00:26) [10]

Спасибо, человек. Пойду ковырять это дело, до утра нужно закончить.


 
Германн ©   (2012-01-31 01:46) [11]


> до утра нужно закончить.

До утра ещё куча времени! Только нужно выйти из Интернета и забыть про игры.
Удачи, студент! :)


 
Сергей М. ©   (2012-01-31 09:16) [12]


> нигде не хотят за меня работать


Нахаляву-то ?
Задарма нынче даже негра на плантацию не загонишь)
А предложил бы денюжку за работу - отбоя не было бы от желающих)


 
Anatoly Podgoretsky ©   (2012-01-31 10:05) [13]

> Германн  (31.01.2012 01:46:11)  [11]

Можно бы было заказать, но уже утро.


 
Плохиш ©   (2012-01-31 12:02) [14]


> Можно бы было заказать

Препода? 8-O


 
Anatoly Podgoretsky ©   (2012-01-31 13:15) [15]

За три рубля, но вчера



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2012.06.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.003 c
15-1327573619
>|<
2012-01-26 14:26
2012.06.03
Как правильно обновляться программу


15-1328120761
upc
2012-02-01 22:26
2012.06.03
Форма, MainMenu, PopupMenu, глюк


2-1327567305
JohnKorsh
2012-01-26 12:41
2012.06.03
Позиционирование курсора в TMemo.


1-1294084277
TStas
2011-01-03 22:51
2012.06.03
Как получить размер экрана в дюймах или см?


15-1328272996
Тимохов Д
2012-02-03 16:43
2012.06.03
Проблема со шрифтами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский