Pascal, jak zrobić te zadanie?

Dyskusje na luzie nie związane z forum w granicach netykiety.

Moderator: Moderatorzy

ODPOWIEDZ
Awatar użytkownika
Tomek7
Stary wyga bezprzewodowy
Posty: 704
Rejestracja: 2008-04-25, 18:31
Lokalizacja: EŁK

Pascal, jak zrobić te zadanie?

Post autor: Tomek7 »

Hey, mam problem otóż muszę napisać program na zaliczenie na piątek.Treść wygląda tak.Napisz program który znajdzie w tablicy dwuwymiarowej znaków nr wiersza w którym suma elementów jest większa od 'c'.kompletnie nie wiem jak sie zabrać.

Suma wiersza to mniej więcej coś takiego sobie zrobiłem.Natomiast nie rozumiem funkcji ord('c') = 99

petla od 1 do ilość wierszy //zmienna i
suma_wiersza=0
petla od 1 do ilość kolumn //zmienna j
suma_wiersza=suma_wiersza+wartość znaku z tablicy[i,j]
ryba825
Mistrz bezprzewodowy
Posty: 1332
Rejestracja: 2009-07-05, 16:15
Lokalizacja: Warszawa

Re: Pascal, jak zrobić te zadanie?

Post autor: ryba825 »

Ord(): http://turbopascal.skryptoteka.pl/14.html

[ Komentarz dodany przez: krystianb: 2011-04-05, 22:26 ]
Wystarczy wpisać http:// zamiast www.
Ostatnio zmieniony 2011-04-05, 21:25 przez ryba825, łącznie zmieniany 1 raz.
Awatar użytkownika
Tomek7
Stary wyga bezprzewodowy
Posty: 704
Rejestracja: 2008-04-25, 18:31
Lokalizacja: EŁK

Re: Pascal, jak zrobić te zadanie?

Post autor: Tomek7 »

Nie działa link ;)
ryba825
Mistrz bezprzewodowy
Posty: 1332
Rejestracja: 2009-07-05, 16:15
Lokalizacja: Warszawa

Re: Pascal, jak zrobić te zadanie?

Post autor: ryba825 »

Irytujące... "Www" sprawia, że nie działa link. :dobani: turbopascal.skryptoteka.pl/14.html
Daj jakieś szczegóły do tego zadania, bo jest wieloznaczne.
Awatar użytkownika
Tomek7
Stary wyga bezprzewodowy
Posty: 704
Rejestracja: 2008-04-25, 18:31
Lokalizacja: EŁK

Re: Pascal, jak zrobić te zadanie?

Post autor: Tomek7 »

Dlaczego wieloznaczne?Mamy tablicę dwuwymiarową znaków ASCII, muszę znaleźć taki wiersz w którym suma jego elementów będzie większa od ord('c') czyli 99.Trzeba po pierwsze znaleźć wiersze które są większe od ord c a potem wybrać największy z nich.
ryba825
Mistrz bezprzewodowy
Posty: 1332
Rejestracja: 2009-07-05, 16:15
Lokalizacja: Warszawa

Re: Pascal, jak zrobić te zadanie?

Post autor: ryba825 »

Jeżeli w Pascalu w tablicy na końcu ciągu znaków jest "\0", to można zliczać elementy do wystąpienia tego znaku, a potem dać instrukcje warunkową sprawdzającą czy ilość znaków z podanego wiersza jest większa do 99, jeśli tak to przypisać nr wiersza do zmiennej oznaczającej maksymalną ilość znaków, jeśli nie to kontynuować działa programu.
Awatar użytkownika
Tomek7
Stary wyga bezprzewodowy
Posty: 704
Rejestracja: 2008-04-25, 18:31
Lokalizacja: EŁK

Re: Pascal, jak zrobić te zadanie?

Post autor: Tomek7 »

Kod: Zaznacz cały

uses crt;
const iw=5;ik=4;
 var i,j,suma,liczba:integer;
     tab:array[1..iw,1..ik]of integer;
  begin
  clrscr;
    writeln;writeln;writeln('podaj liczbe okreslajaca sume liczb w wierszu ');
    readln(liczba);
    writeln;writeln;writeln('WYLOSOWANE LICZBY');writeln;
  randomize;
  for i:=1 to iw do
  for j:=1 to ik do
   begin
    tab[i,j]:=random(10);
    write(tab[i,j],' ') ;
    if j=ik then writeln;
    end;
   for i:=1 to iw do
    begin suma:=0;
   for j:=1 to ik do
    begin
     suma:=suma+tab[i,j];
     if (suma>liczba)and(j=ik) then
      writeln('w wierszu ',i,' suma liczb wiersza > ',liczba);
    end;end;
 
    writeln;writeln;writeln('press any key');
    readkey;
End.
Mam coś takiego
Awatar użytkownika
Jo_gurt
Guru bezprzewodowy
Posty: 16330
Rejestracja: 2007-11-16, 21:49
Lokalizacja: Lublin

Re: Pascal, jak zrobić te zadanie?

Post autor: Jo_gurt »

Miała być tablica znaków, a ty masz liczb całkowitych.
Miała być suma większa od 99, a ty porównujesz z czymś wczytanym.
Na koniec by się przydało wypisać numery wierszy, których suma jest większa niż 99.

W ogóle jakbyś inne zadanie robił :P

Kod: Zaznacz cały

uses crt;
const iw = 5; ik = 5;
 var i, j, suma, liczba : integer;
     tab : array[1..iw, 1..ik]of char;
  begin
  clrscr;
  writeln; writeln;
  writeln('WYLOSOWANE ZNAKI');
  writeln;
  randomize;
  for i := 1 to iw do
  begin
   for j := 1 to ik do
   begin
    tab[i, j] := char(random(255));
    write(tab[i,j], ' ') ;    
    end;
   writeln;
  end;
   writeln;
   write('Numery wierszy z suma wieksza od 99: ');
   for i:=1 to iw do
    begin suma:=0;
   for j:=1 to ik do
    begin
     suma:=suma+ord(tab[i,j]);
     
    end;
	if (suma > 99) then
      write(i, ' ');
    end;
 
    writeln; writeln;
    writeln('press any key');
    readkey;
End.
Robiąc według niezbyt jasnego zadania z pierwszego postu wychodzi coś takiego, ale to 99 jest raczej słabo dobrane. Mała szansa, że suma będzie mniejsza od 99.

Na marginesie - pisz bardziej przejrzysty kod, ułatwi ci to sprawę. Np pisanie "end;end;" łatwo doprowadzi do pomyłki.
Awatar użytkownika
Tomek7
Stary wyga bezprzewodowy
Posty: 704
Rejestracja: 2008-04-25, 18:31
Lokalizacja: EŁK

Re: Pascal, jak zrobić te zadanie?

Post autor: Tomek7 »

Dzięki Jo_gurt jesteś wielki :zdrowko:
ODPOWIEDZ