x-kom hosting

proste zadanie - turbo pascal

Przejdź do rekomendowanej odpowiedzi Autor: leggo ,
mastka
utworzono
utworzono

Witam, jestem zielona w programowaniu, otrzymalam schemat blokowy i z niego musze napisac program, jest to zadanie z egzaminu zawodowego, jednak nie potrafie programować i prosiłabym jakby ktoś potrafił to mógłby napisać. ;) wiem ze trzeba uzyc tablic. z góry dziekuje.;* schemat w zalaczniku, 

leggo
komentarz
komentarz

Całego programu Ci nie napiszę, ale jest on na tyle prosty, że przy odrobinie wysiłku dasz sobie z nim radę.

Tutaj znajdziesz krótki kurs Psacal-a. Do napisania tego programu wystarczą Ci lekcje 1-3, 5-7 i 11.

 

Gdyby pojawiły się jakieś problemy podczas pisania chętnie pomogę.

mastka
komentarz
komentarz

a nie mógłbyś mnie jednak wyręczyc? normalnie to poprobowalabym sama, ale nie moge u siebie odpalic turbo pascala, ani normalnie, ani przez dosboxa, a w notatniku nie bede mogla sprawdzic czy cos zle, wiec jakbyś mógł napisać tu gotowy kod ;)

leggo
komentarz
komentarz

nie moge u siebie odpalic turbo pascala

W czy konkretnie tkwi problem?

mastka
komentarz
komentarz

czarne okno, potem wylacza sie i wyskakuje:

16-bitowy podsystem MS-DOS
---------------------------
Turbo Pascal 7.0
NTVDM CPU: napotkano niedozwoloną instrukcję.
CS:0000 IP:0077 OP:f0 37 05 19 02 Wybierz przycisk „Zamknij”, aby zakończyć działanie aplikacji.
---------------------------
Zamknij   Ignoruj   
---------------------------
Los_Emilos
komentarz
komentarz

http://ideone.com/

 

na tej stronie możesz sprawdzić działanie programu.

mastka
komentarz
komentarz

wiec doczekam sie tego, ze ktos wysle mi gotowy kod programu? probuje juz z 20 raz i ciagle cos nie działa;/

leggo
komentarz
komentarz

Na temat błędu, który u Ciebie występuje znajdziesz bardzo dużo w google, nie ma sensu tego tutaj przepisywać. Jeśli nie chcesz się z tym bawić zawsze możesz użyć innego programu lub (najprościej i najwygodniej) skorzystać ze strony, którą podał [b]Los_Emilos[/b].

 

doczekam sie tego, ze ktos wysle mi gotowy kod programu?

Dopóki Ty nie podasz choć fragmentu kodu, wątpię.

Widziałaś regulamin umieszczony nad działem?

mastka
komentarz
komentarz (edytowane)

ok, wlasnie znow probuje, program ma pobierać od użytkownika zmienna i czy n? czy moze jeszcze inna zmienna trzeba dodac?

leggo
komentarz
komentarz

Zmienne [b]i[/b], [b]n[/b] oraz [b]suma[/b] mają na samym początku mieć przypisaną wartość 0, więc ich nie pobierasz od użytkownika.

Wprawdzie nie jest to zaznaczone na schemacie, ale domyślam się że od użytkownika trzeba pobrać zawartość tablicy [b]T[/b]. W tym celu musisz utworzyć sobie pętlę powtarzającą się od 1 do 10 i w niej pobierać liczby do kolejnych komórek.

mastka
komentarz
komentarz

i tablica ma byc [1..T] tak?

leggo
komentarz
komentarz

Wygląda na to, że tablica ma mieć 10 elementów, czyli:

T :array[1..10] of integer;
  • Dobra wypowiedź 1
mastka
komentarz
komentarz

a jezeli tutaj zamiast T wpisze ttab, a potem w deklarowaniu zmiennych  T:ttab; to tez zadziała? pytam bo mam nauczycielke, ktora uczy... raczej nie uczy tylko kaze przepisac program, i praktycznie zrobić tak jak ona chce, a nie na swój sposób.

leggo
komentarz
komentarz

To co podałem to jest już właśnie deklarowanie zmiennych (to co ma być wpisane pod [b]var[/b]). [i]T[/i] możesz zastąpić dowolną nazwą.

rafalluz
komentarz
komentarz (edytowane)

 

a jezeli tutaj zamiast T wpisze ttab, a potem w deklarowaniu zmiennych  T:ttab; to tez zadziała?

 

 

Wtedy musiałoby być:

ttab :array[1..10] of integer;

i w programie odnosisz się np. do ttab[1].

 

Jakbyś chciał T:ttab, to musiałbyś najpierw zdefiniować ttab jako typ:

type ttab = array[1..10] of integer;

i potem w programie odnosiłbyś się np. do T[1].

leggo
komentarz
komentarz

Tworzenie typów może na razie zostawmy.  :D

mastka
komentarz
komentarz

witam ponownie, wiem ze minelo troszke czasu ale mialam wolne, pokombinowalam, i zdaje sie ze działa, prosze o sprawdzenie jedynie ostatniej procedury (srednia)

program matura;
uses crt;
type tablica=array[1..10] of integer;
var T   :tablica;

procedure wypelnij(var T:tablica);
var i:integer;
begin
 for i:=1 to 10 do
 begin
 writeln('podaj ',i,' liczbe');
 readln(T[i]);
 end;
end;

procedure wypisuj(var T:tablica);
var i:integer;
begin
for i:=1 to 10 do writeln(i:2,' ',T[i]:4);
end;

procedure srednia(var T:tablica);
var i,n,sr,sm:integer;
begin
 sm:=0;
 n:=0;
 i:=1;
 begin
  while i<=10 do
 if T[i]>0 then
 begin
 n:=n+1;
 i:=i+1
  end else i:=i+1;
  for i:=1 to 10 do sm:=sm+T[i];
 end;
 sr:=sm div n;
 writeln('srednia wynosi ',sr)
 end;

begin
clrscr;
wypelnij(T);
wypisuj(T);
srednia(T);
readln;
end.
leggo
komentarz
komentarz

W tej procedurze, do zliczenia sumy wystarczy Ci jedna pętla (while lub until).

Wewnątrz pętli najpierw daj if-a, jeśli warunek będzie spełniony powiększ [b]n[/b] oraz [b]suma[/b]. Po if-ie (niezależnie od tego czy warunek będzie spełniony, czy nie) powiększ [b]i[/b] (else nie jest potrzebne).

Do liczenia średniej użyj dzielenia z resztą ([i]/[/i]), a nie całkowitego ([i]div[/i]).

mastka
komentarz
komentarz (edytowane)
procedure srednia(var T:tablica);
var i,n,sr,sm:integer;
begin
 sm:=0;
 n:=0;
 i:=1;
 begin
  while i<=10 do
 if T[i]>0 then
 begin
 n:=n+1;
 sm:=sm+t[i];
  end;
 i:=i+1;
  end;
 sr:=sm mod n;
 writeln('srednia wynosi ',sr)
 end;

?

pozmieniałam i przestał działac;p możesz wskazać błąd?

exit code = 201

  • Rekomendowana odpowiedź
leggo
komentarz
komentarz

[b]begin[/b] powinno być zaraz po [b]while[/b], a nie przed:

procedure srednia(var T:tablica);
var
  i,n,sr,sm:integer;
begin
  sm:=0;
  n:=0;
  i:=1;
  while i<=10 do
  begin
    if T[i]>0 then
    begin
      n:=n+1;
      sm:=sm+T[i];
    end;
    i:=i+1;
  end;
  sr:=sm div n;
  writeln('srednia wynosi ',sr)
end;

[b]mod[/b] to reszta z dzielenia całkowitego. Do liczenie średniej użyj [b]div[/b] (dzielenie całkowite) lub [b]/[/b] (jednak tutaj wynik będzie liczbą zmiennoprzecinkową, więc wyniku nie możesz zapisać do zmiennej typu integer).

  • Dobra wypowiedź 1

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.