Skocz do zawartości
Forum Programowanie
Zaloguj się, aby obserwować  
Emhyr

Problem z macierzą

Polecane posty

Witam serdecznie!

Mam problem z fragmentem programu. Otóż tenże program tworzy dwie losowe macierze a następnie trzecią która jest iloczynem dwóch poprzednich. Jeśli w drugiej macierzy liczba wynosi 0 to do odpowiedniej komórki w macierzy końcowej ma się pojawić napis "Brak wyniku!". Wszystko byłoby dobrze gdyby nie fakt, że macierze są typu Real a napis chcąc nie chcac to String. Jak umieścić w takiej macierzy łańcuch?

Poniżej kod:

 

Program Macierze;

Uses Crt;

Var

i, j : Integer;

a : String;

t1, t2, t3 : Array [1..10, 1..10] of Real;

Begin

ClrScr;

Randomize;

For i:=1 to 10 do

Begin

For j:=1 to 10 do

Begin

t1[i,j]:=random(10);

t2[i,j]:=random(10);

End;

End;

For i:=1 to 10 do

Begin

For j:=1 to 10 do

Begin

If (t2[i,j]=0) then

Begin

 

Write(t3[i,j], ' ');

End

Else

Begin

t3[i,j]:=t1[i,j]/t2[i,j];

Write(t3[i,j] :3:2, ' ' );

End;

End;

End;

ReadLn;

End.

 

 

Dziękuję i pozdrawiam!

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

To może końcową macierz zrób po prostu z danymi string i rzutuj tylko real na string zawsze (a jak ma być tekst to i tak się będzie zgadzać bo będzie string). Bo zakładam, że i tak potem na tej końcowej żadnych obliczeń nie wykonujesz.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Myślałem nad tym jednakże nie wiem jak tego dokonać. Należy użyć polecenia "FloatToStr"? Jaka jest jego składnia?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Niestety wywala mi następujący błąd:

 

source.pas(29,47) Error: Identifier not found "FloatToStr"

source.pas(30,46) Error: Illegal use of ':'

 

Oto kod:

 

Begin

t3[i,j]:=FloatToStr(t1[i,j]/t2[i,j]);

Write(t3[i,j] :3:2, ' ' );

End;

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Przeczytaj jeszcze raz dokładnie artykuł z pierwszego linka. Bo widze, że masz problemy z banałami i czytaniem.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Czytam i czytam i nie rozumiem gdzie mam błąd. Czy może mi ktoś wyjaśnić?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tak, moze wkleję cały kod?

 

Program Macierze;

Uses Crt;

Var

i, j : Integer;

t1, t2 : Array [1..10, 1..10] of Extended;

t3 : Array [1..10, 1..10] of String;

Begin

ClrScr;

Randomize;

For i:=1 to 10 do

Begin

For j:=1 to 10 do

Begin

t1[i,j]:=random(10);

t2[i,j]:=random(10);

End;

End;

For i:=1 to 10 do

Begin

For j:=1 to 10 do

Begin

If (t2[i,j]=0) then

Begin

t3[i,j]:='Brak wyniku!';

Write(t3[i,j], ' ');

End

Else

Begin

t3[i,j]:=FloatToStr(t1[i,j]/t2[i,j]);

Write(t3[i,j] :3:2, ' ' );

End;

End;

End;

ReadLn;

End.

 

 

 

Ktoś wie o co może chodzić?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A gdzie masz dołączony moduł SysUtils? Od kiedy do działania FloatToStr potrzebne jest Crt? Myśl, myśl, myśl! Wyraźnie widać co trzeba dodać po tym artykule. Najpierw ogarnij podstawy języka, a dopiero później bierz się za pisanie czegokolwiek w czymkolwiek!

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Przepraszam bardzo ale właśnie się uczę na zajęciach tego języka więc myślałem, że napisanie na forum o Pascalu to dobry pomysł jeśli nie rozumiem zadania które miałem wykonać. Nie da się grzeczniej? Trzeba odrazu naskakiwać?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie naskakuje, podałem Tobie grzecznie link. Tam wyraźnie jest napisane. Między innymi "Moduł: SysUtils". Jeżeli nic to Tobie "nie mówi", to należy poczytać kurs z podstawami. Z niego dowiedzieć się co i jak. Także motywowałem Ciebie byś pomyślał i poczytał na temat podstaw. Nieważne jakie forum, jaki dział, jaki problem. Najpierw sami googlujemy i kombinujemty do bólu. Pisanie z pytaniem gdziekolwiek powinno być zawsze potraktowane jako ostateczność. Po wyczerpaniu własnych prób rozwiązania danego problemu :/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

"Myśl, myśl, myśl! Wyraźnie widać co trzeba dodać po tym artykule. Najpierw ogarnij podstawy języka, a dopiero później bierz się za pisanie czegokolwiek w czymkolwiek! " - grzecznie?

Nigdy nie używałem innego modułu niż CRT i nie zauważyłem powyższego.

Próbowałem przez 2 dni, przejrzałem wiele stron, kombinowałem z wieloma poleceniami i skoro sam już nie potrafiłem to postanowiłem napisać.

Poradziłem sobie, dziękuję za pomoc.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

To według mnie jest normalnie. Neutralnie i sugerująco co masz robić. Wklejasz na pocżatek niesformatowany kod bez otagowania koloryzującego. a to nie jest grzecznie na pewno. Ponieważ pokazuje zerowy szacunek do potencjalnych czytających. A i wiem, że parser na tym forum rozwalił by i tak formatowanie, ale od tego są zewnętrzne pastebiny. Ale jeśli sobie poradziłeś to ok, przez dwa dni można było wklejając komunikat błędu do google i tak znaleźć odpowiedzi.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się
Zaloguj się, aby obserwować  

×