Przetłumaczenie kodu z C++ na pascala

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 :) !!!!

#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;
}
3

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

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

Miszczostfo.

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.

0

Podstawy podstawami ale gdy się ma niestety nauczyciela, który pozwala pracować na C++ a następnie 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ę :(

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ść.

0
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.

0

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

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.

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 :)

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."

0

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

2

@MyNameIsUnknown - zaczynamy zabawę, linia po linii;


Uses Crt;

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

var:

Dwukropek? RLY?

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;

nazwisko:string;

To co wyżej;

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:

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;

Begin

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

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;

read(przedmioty);

Readln, nie Read;

ClearScreen;

Nie ma takiej procedury;

for i:=0 to przedmioty do

Za dużo iteracji;

Begin

Słowa kluczowe piszemy małymi literami;

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

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

read(tabelka[0][i]);

Readln, nie Read;

ClearScreen;

Nie ma takiej procedury;

writeln("podaj il. uczniow");

To samo - gdzie apostrofy?

read(studenty);

Readln, nie Read i Studenci, nie studenty;

ClearScreen;

Następny błąd;

for i:=1 to studenty do

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

Begin

Zostaw ten Shift;

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;

read(tabelka[i][0]);

Readln, nie Read;

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

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

read(nazwisko);

Szkoda się powtarzać;

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

Rozwlekłość kodu, brak formatowania;

ClearScreen;

Dupa nie ClearScreen;

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ść.

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ę .

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.
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?

0
 readln([y][x]);

? to tak można?

0

Przepraszam moje nie dopatrzenie nie ta wersja tego "cudu"

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.
0
readln(przedmioty);

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

for i:=0 to przedmioty do

Tu tak samo;

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

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

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

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

for x:=1 to przedmioty do

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

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ć.

0
var
prdzmioty, 

literówka.

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

podobno nie działa.

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

ten begin jest jakiś taki dziwny...

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...

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 :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1