Skocz do zawartości


Problem z macierzą


13 odpowiedzi w tym temacie

#1 Emhyr

    Nowy na forum

  • Użytkownicy
  • 9 Postów:

Napisano pią, 15 maj 2015 - 19:29

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!

#2 5corpio

    Guru

  • Super użytkownicy
  • 874 Postów:

Napisano pią, 15 maj 2015 - 23:44

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.

#3 Emhyr

    Nowy na forum

  • Użytkownicy
  • 9 Postów:

Napisano nie, 17 maj 2015 - 20:10

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

#4 olesio

    Ekspert

  • Super użytkownicy
  • 363 Postów:
  • Gadu-Gadu:478088

Napisano nie, 17 maj 2015 - 21:34

Co do FloatToStr to...
http://4programmers....lphi/FloatToStr
http://www.delphibas...Name=FloatToStr

#5 Emhyr

    Nowy na forum

  • Użytkownicy
  • 9 Postów:

Napisano nie, 17 maj 2015 - 22:08

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;

#6 olesio

    Ekspert

  • Super użytkownicy
  • 363 Postów:
  • Gadu-Gadu:478088

Napisano pon, 18 maj 2015 - 13:27

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

#7 Emhyr

    Nowy na forum

  • Użytkownicy
  • 9 Postów:

Napisano pon, 18 maj 2015 - 14:34

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

#8 5corpio

    Guru

  • Super użytkownicy
  • 874 Postów:

Napisano pon, 18 maj 2015 - 19:49

Zmieniłeś t3 na tablicę stringów tak w ogóle?

#9 Emhyr

    Nowy na forum

  • Użytkownicy
  • 9 Postów:

Napisano pon, 18 maj 2015 - 19:53

Tak, moze wkleję cały kod?

Quote

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

#10 olesio

    Ekspert

  • Super użytkownicy
  • 363 Postów:
  • Gadu-Gadu:478088

Napisano wto, 19 maj 2015 - 15:59

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!

#11 Emhyr

    Nowy na forum

  • Użytkownicy
  • 9 Postów:

Napisano wto, 19 maj 2015 - 16:08

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

#12 olesio

    Ekspert

  • Super użytkownicy
  • 363 Postów:
  • Gadu-Gadu:478088

Napisano śro, 20 maj 2015 - 20:07

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

#13 Emhyr

    Nowy na forum

  • Użytkownicy
  • 9 Postów:

Napisano śro, 20 maj 2015 - 20:18

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

#14 olesio

    Ekspert

  • Super użytkownicy
  • 363 Postów:
  • Gadu-Gadu:478088

Napisano śro, 20 maj 2015 - 21:20

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.