Przetłumaczenie kodu z C++ na pascala

Przetłumaczenie kodu z C++ na pascala
O2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Koledzy! Bardzo proszę o pomoc w przetłumaczeniu programu C++ na archaicznego pascala wprawdzie znam podstawy podstaw pascala ale przetłumaczenie programu jest czymś niestety przekraczającym moje siły. Byłbym niezwykle wdzięczny !!!!!!!!!!! Z góry dziękuje koledzy programiście :) !!!!

Kopiuj
#include <iostream>
#include <windows.h>
using namespace std;
int przedmioty, studenty, maks, bufor, roznica;
string nazwisko;
string tabelka[100][100];
int main()
{
    cout << "Podaj ilosc przedmiotow" << endl;
    cin>>przedmioty;
    system("cls");
    for(int i=1;i<=przedmioty;i++)
    {
        cout<<"Podaj nazwe "<<i<<" przedmiotu "<<endl;
        cin>>tabelka[0][i];
        system("cls");
    }
     cout << "Podaj ilosc uczniow" << endl;
    cin>>studenty;
    system("cls");
    for(int i=1;i<=studenty;i++)
    {
        cout<<"Podaj imie i nazwisko "<<i<<" ucznia "<<endl;
        cout<<"Imie: ";
        cin>>tabelka[i][0];
        tabelka[i][0]+=" ";
        cout<<"Nazwisko: ";
        cin>>nazwisko;
        tabelka[i][0]+=nazwisko;
        system("cls");
    }

    for(int x=1;x<=przedmioty;x++)
    {
        for(int y=1;y<=studenty;y++)
        {
            cout<<"Co dostal "<<tabelka[y][0]<<" z "<<tabelka[0][x]<<endl;
            cin>>tabelka[y][x];
            system("cls");
        }
    }

    for(int x=0;x<=przedmioty;x++)
    {
        for(int y=0;y<=studenty;y++)
    {
        bufor=tabelka[y][x].length();
        if(maks<bufor) maks=bufor;
    }
       for(int y=0;y<=studenty;y++)
    {
        bufor=tabelka[y][x].length();
        roznica=maks-bufor;
        for(int z=0;z<roznica;z++)
        {
            tabelka[y][x]+=" ";
        }

    }
maks=0;
    }

        for(int x=0;x<=studenty;x++)
    {
        for(int y=0;y<=przedmioty;y++)
        {
            cout<<tabelka[x][y]<<"  ";
        }
        cout<<endl<<endl;
    }
system("pause");
    return 0;
}
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
3

Ile płacisz? Bo jak rozumiem sam nic nie zrobiłeś i nie zamierzasz (oprócz wyżebrania gotowca);

Kopiuj
int /**/, studenty, /**/;

Miszczostfo.

EL
  • Rejestracja: dni
  • Ostatnio: dni
1
olek231999 napisał(a):

wprawdzie znam podstawy podstaw pascala ale przetłumaczenie programu jest czymś niestety przekraczającym moje siły.

Przecież do tego programu to nawet podstawy Pascala są aż nadto.

  1. Wczytywanie danych.
  2. Pętla
  3. Jakieś typy tablicowe
    i masz zadanie zrobione.

http://main.edu.pl/pl/user.phtml?op=show&page=pascal&c=40000
Wystarczy przerobić 9 lekcji. Godzina roboty i masz zadanie zrobione.

O2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Podstawy podstawami ale gdy się ma niestety nauczyciela, który pozwala pracować na C++ a następnie <ort>rząda</ort> Pascala tłumacząc jedynie minimum z minimum to niestety wiecie bardzo was proszę o pomoc !!! Tak żeby nie było że chce wysępić gotowca naprawde staram się to przetłumaczyć ale nie potrafię :(

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
1

Nie ma to jak nic nie robić i całą winę zwalić na nauczyciela;

Tak żeby nie było że chce wysępić gotowca naprawde staram się to przetłumaczyć ale nie potrafię :(

Jak chcesz uzyskać pomoc to pokaż co masz, a nie bierz nas na litość.

MN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0
Kopiuj
Uses Crt;
var
prdzmiotyn, studenty, maks, bufor, roznica:integer;
nazwisko:string;
tabelka:array [0..100,0..100] of string;
Begin
WriteLn('Podaj ilosc przedmiotow');
read(przedmioty);
 ClearScreen;
for i:=0 to przedmioty do
Begin
WriteLn('podaj nazwe ', i,' przedmiotu');
read(tabelka[0][i]);
 ClearScreen;
end;
WriteLn('podaj il. uczniow');
read(studenty);
 ClearScreen;
for i:=1 to studenty do
Begin
WriteLn('podaj immie i nazwisko ',i, ' ucznia');
WriteLn('Imie: ');
read(tabelka[i][0]);
tabelka[i][0]:=tabelka[i][0]+' ';
read(nazwisko);
tabelka[i][0]:=tabelka[i][0]+nazwisko;
 ClearScreen;
end;

Dalej mi się nie chce, ten język powoduje u mnie triggera. Nawet nie wiem czy dobrze to zrobiłem. Poruszaj się według tego schematu do końca to sobie poradzisz ;)

Odpal sobie dowolny poradnik kumplu z pascalem i lecisz, przecież to nie jest trudne... po prostu zamieniasz jedną funkcję na drugą, składnia jest bardzo podobna...
http://main.edu.pl/pl/user.phtml?op=show&page=pascal&c=40000 <- prsze, pierwszy lepszy kurs.

O2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Dziękuję serdecznie za okazaną pomoc postaram się za tym schematem przedrzeć do końca Wielkie Dzięki wszystkim za zainteresowanie :)

MN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Tylko zanim tę zupę dasz profesorkowi najpierw ją SPRAWDŹ i to DOKŁADNIE. Będziesz miał jakiś wkład własny ;)
I nie martw się, na tym forum są sami niespełnieni programiści co wymagają od każdego newbie aby ten posługiwał się WinApi STL'em i tak dalej bo "to pszeciesz proste".

Mój kuzyn szczerze mi odradzał to forum, ale stwierdziłem, że musi być ktoś kto chociaż trochę będzie starał się pomóc studentom/licealistom/gimnazjalistom w ich początkach z programowaniem.

O2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Troszkę straszne że w XXI wieku w liceum uczą jeszcze Pascala a o C++ nie słyszeli skoro Pascala nie można użyć na maturze ... Niestety programy nauczania wymagają poważnej reformy... Ale niestety też warunki na to nie pozwalają kompilator kompiluje 10 linijkowy program 5 minut polecam :)

MN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Od przyszłego roku Pascala na maturze już nie będzie. To stary język, w ogóle już nie używany. C++ też się zresztą starzeje. Taki żart mi się przypomniał z OiL:
"Najlepszą pomocą dla pascalowców będzie usunięcie tego języku z olimpiady."

O2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

w C++ istnieje taka funkcja jak długość łańcucha czy coś takiego isntnieje w Pascalu bo niestety nie mogę znaleźć ?

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
2

@MyNameIsUnknown - zaczynamy zabawę, linia po linii;


Kopiuj
Uses Crt;

A gdzie obowiązkowy nagłówek? Hmm?

Kopiuj
var:

Dwukropek? RLY?

Kopiuj
prdzmiotyn, studenty, maks, bufor, roznica:integer;

Pierwsza zmienna ma kosmiczną nazwę, typ danych Integer piszemy dużą literą, identyfikatory piszemy według przyjętej konwencji nazewnictwa, czyli zgodnie z PascalCase;

Kopiuj
nazwisko:string;

To co wyżej;

Kopiuj
tabelka:array [0..100] of array [0..100] of integer;

Znów to co wyżej; Druga sprawa - słyszał o wielowymiarowych tablicach? Jeśli nie słyszał to tak się je deklaruje:

Kopiuj
Tabelka: array [0 .. 99, 0 .. 99] of Integer;

I popatrz na indeksację - tablica ma mieć po 100 komórek w każdym wymiarze, a nie po 101;

Kopiuj
Begin

Słowa kluczowe piszemy wyłącznie małymi literami;

Kopiuj
writeln("Podaj ilosc przedmiotow");

Literały obejmuje się znakami apostrofu, a nie pakuje w cudzysłowy; Poza tym znów nie używasz stylu PascalCase, co świadczy o twojej niewiedzy, bylejakości i braku szacunku do osoby pytającej;

Kopiuj
read(przedmioty);

Readln, nie Read;

Kopiuj
ClearScreen;

Nie ma takiej procedury;

Kopiuj
for i:=0 to przedmioty do

Za dużo iteracji;

Kopiuj
Begin

Słowa kluczowe piszemy małymi literami;

Kopiuj
writeln("podaj nazwe ", i," przedmiotu);

Złe znaki obejmujące literały, do tego jednego brakuje; I formatowanie z czterech liter;

Kopiuj
read(tabelka[0][i]);

Readln, nie Read;

Kopiuj
ClearScreen;

Nie ma takiej procedury;

Kopiuj
writeln("podaj il. uczniow");

To samo - gdzie apostrofy?

Kopiuj
read(studenty);

Readln, nie Read i Studenci, nie studenty;

Kopiuj
ClearScreen;

Następny błąd;

Kopiuj
for i:=1 to studenty do

Teraz nagle inna indeksacja pętli - będzie ich więcej?

Kopiuj
Begin

Zostaw ten Shift;

Kopiuj
writeln("podaj immie i nazwisko ",i," ucznia);
writeln("Imie: ");

Znowu buble, same buble - brak apostrofów, ostatni literał bez zamykającego znaku, słabe formatowanie;

Kopiuj
read(tabelka[i][0]);

Readln, nie Read;

Kopiuj
tabelka[i][0]:=tabelka[i][0]+" ";

Znowu brak apostrofów, do tego najdłuższe przypisanie z możliwych;

Kopiuj
read(nazwisko);

Szkoda się powtarzać;

Kopiuj
tabelka[i][0]:=tabelka[i][0]+nazwisko;

Rozwlekłość kodu, brak formatowania;

Kopiuj
ClearScreen;

Dupa nie ClearScreen;

Kopiuj
end;

Ostatni End w pliku źródłowym zakańczany jest kropką, więc błąd składniowy;


Podsumowując, w całym tym genialnym i jakże pomocnym przykładzie, nie istnieje nawet jedna linijka kodu, która by była zapisana w prawidłowy i czytelny sposób; Nawet zwykłe end; gdzieś w środku nie jest zapisane dobrze, bo brakuje wcięć;

Jeszcze coś masz do powiedzenia? Bóg zapłać za taką pomoc;


olek231999 napisał(a)

w C++ istnieje taka funkcja jak długość łańcucha czy coś takiego isntnieje w Pascalu bo niestety nie mogę znaleźć ?

Funkcja Length - w zależności od używanego kompilatora i kodowania, zwraca albo ilość bajtów, albo ilość znaków; Jeśli używasz kompilatora FPC i w łańcuchach nie ma znaków diakrytyzowanych, funkcja ta zwracać będzie prawidłową wartość.

O2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Staram się opanować język Pascala w możliwie jak najszybszym kursie... Niestety wychodzi to z miernym skutkiem przesyłam kod jaki przepisałem (jest on oczywiście błędny) bardzo proszę o wskazanie błedów czy też drogi żeby szczęśliwie przebrnąć przez ten język do końca.... Z góry bardzo dziękuję .

Kopiuj
program dziennik;
Uses Crt;
var:
prdzmioty, studenty, maks, bufor, roznica:integer;
nazwisko:string;
tabelka:array [0..100] of array [0..100] of integer;
Begin
writeln('Podaj ilosc przedmiotow');
readl(przedmioty);
 Clrscr;
for i:=0 to przedmioty do
Begin
writeln('Podaj nazwe ', i,' przedmiotu');
readln(tabelka[0][i]);
 Clrscr;
end;
writeln('podaj ilosc uczniow');
readln(studenty);
clrscr;
for i:=1 to studenty do
Begin
writeln('podaj immie i nazwisko ',i,' ucznia');
writeln('Imie: ');
readln(tabelka[i][0]);
tabelka[i][0]:=tabelka[i][0]+' ';
readlm(nazwisko);
tabelka[i][0]:=tabelka[i][0]+nazwisko;
clrscr;
end;
begin
    for x=1 to przedmioty do
    begin
        for y=1 to studenty do
        begin
            writeln('Co dostal ',tabelka[y][0],' z ',tabelka[0][x]);
            readln([y][x]);
            clrscr;
        end;
    end;
 
    for x=0 to przedmioty do
    begin
        for y=0; to studenty do 
    begin
        bufor=tabelka[y][x].length();
        if(maks<bufor) maks=bufor;
    end;
       for y=0 to studenty do
    begin
        bufor=tabelka[y][x].length();
        roznica=maks-bufor;
        for z=0 to roznica do
        begin
            tabelka[y][x]+=" ";
        end;
 
    end;
max=0;
    end;
 
        for x=0 to studenty do
    begin
        for y=0 to przedmiotydo
        begin
            readln(tabelka[x][y]"  ");
        end;
        end.
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
0

Po pierwsze to nie wzoruj się na kodzie niejakiego @MyNameIsUnknown, bo stracisz tylko czas i nic się nie nauczysz; Wywal ten kod, zrób pustą aplikację konsolową i zacznij od początku, linijka po linijce tłumaczyć kod na Pascala - w razie czego pytaj, a pomogę;

PS: W czym piszesz ten program? Jakie IDE/kompilator?

MN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0
Kopiuj
 readln([y][x]);

? to tak można?

O2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Przepraszam moje nie dopatrzenie nie ta wersja tego "cudu"

Kopiuj
program dziennik;
Uses Crt;
var
prdzmioty, studenty, maks, bufor, roznica,x,y,z,i:integer;
nazwisko:string;
tabelka:array [0..99] of array [0..99] of integer;
Begin
writeln('Podaj ilosc przedmiotow');
readln(przedmioty);
 Clrscr;
for i:=0 to przedmioty do
Begin
writeln('Podaj nazwe ', i,' przedmiotu');
readln(tabelka[0][i]);
 Clrscr;
end;
writeln('podaj ilosc uczniow');
readln(studenty);
clrscr;
for i:=1 to studenty do
Begin
writeln('podaj immie i nazwisko ',i,' ucznia');
writeln('Imie: ');
readln(tabelka[i][0]);
tabelka[i][0]:=tabelka[i][0]+' ';
readln(nazwisko);
tabelka[i][0]:=tabelka[i][0]+nazwisko;
clrscr;
end;
begin
    for x:=1 to przedmioty do
    begin
        for y:=1 to studenty do
        begin
            writeln('Co dostal ',tabelka[y][0],' z ',tabelka[0][x]);
            readln([y][x]);
            clrscr;
        end;
    end;

    for x:=0 to przedmioty do
    begin
        for y:=0; to studenty do
    begin
        bufor=tabelka[y][x].length();
        if (maks<bufor) maks=bufor;
    end;
       for y:=0 to studenty do
    begin
        bufor=tabelka[y][x].length();
        roznica=maks-bufor;
        for z:=0 to roznica do
        begin
            tabelka[y][x]+' ';
        end;

    end;
max:=0;
    end;

        for x:=0 to studenty do
    begin
        for y:=0 to przedmiotydo
        begin
            readln(tabelka[x][y]'  ');
        end;
        end.
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
0
Kopiuj
readln(przedmioty);

Masz błąd składniowy - zmienna przedmioty nie istnieje;

Kopiuj
for i:=0 to przedmioty do

Tu tak samo;

Kopiuj
tabelka[i][0]:=tabelka[i][0]+' ';

Nie możesz w ten sposób - nie da się dodać do siebie liczby i znaku bezpośrednio;

Kopiuj
tabelka[i][0]:=tabelka[i][0]+nazwisko;

Tu tak samo - próbujesz do liczby dodać ciąg znaków, a tak nie można;

Kopiuj
for x:=1 to przedmioty do

Jak wyżej - nie ma takiego identyfikatora, popraw nazwę zmiennej w deklaracji;

Kopiuj
readln([y][x]);

Nieuzasadnione użycie nawiasów kwadratowych - brakuje nazwy zmiennej reprezentującej tablicę;


Pisałem Ci wcześniej, abyś nie korzystał z podanego pseudokodu, bo jest błędny; Z tego kodu niestety podłapałeś pomysł na zadeklarowanie tablicy liczb, zamiast tablicy ciągów znaków; Naprawdę o wiele lepiej będzie, jeśli cały swój kod skasujesz i zaczniesz od nowa go tłumaczyć.

MN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0
Kopiuj
var
prdzmioty, 

literówka.

Kopiuj
tabelka:array [0..99] of array [0..99]

podobno nie działa.

Kopiuj
tabelka:array [0..99, 0..99]
Kopiuj
tabelka[i][0]:=tabelka[i][0]+nazwisko;
clrscr;
end;
begin // błąd
    for x:=1 to przedmioty do

ten begin jest jakiś taki dziwny...

Kopiuj
bufor=tabelka[y][x].length();

przypisanie w pascalu to ":=", a nie "=".

Te błędy kompilator powinien ci wychwycić... A jeśli chodzi o sam kod to możesz mieć błędy w iteracjach bo w pascalu one działają nieco inaczej niż w C++.
Weź powiedz profesorkowi, że jest sadystą... ten język boli...

O2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Dziękuje wszystkim za zaangażowanie i pomoc udzielną dzisiaj :) wszystkim składam serdeczne podziękowanie ... Dzięki waszej pomocy i 2 godzinach wspaniłej rozrywki dotarłem do końca . Program działa. Dziękuje jeszcze raz :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.