Pomoc w ocenie czy program bedzie dzialac tak jak trzeba

0

Witam nie mam mozliwosci sprawdzenia czy ten program bedzie dzialac a potrzebny jest mi do szkoly

Polecenie
Dana jest liczba naturalna n:1..100 oraz ciag n liczb calkowitych ktore nalezy wczytac do tablicy.Napisz program ktory wyznaczy liczbe tego ciagu najmniej rozniaca sie od sredniej arytmetycznej wszystkich liczb tego ciagu

Program

uses crt;
var
   
   tab:array[1..100] of real;
   srednia,najblisza:real;
   wielkosc:byte;
   
   procedure tablica;
            var
               i:byte;
            begin
                 writeln('Podaj wielkosc tablicy');readln(wielkosc);
                 for i:=1 to wielkosc do
                    begin
                         writeln('Podaj ',i,' liczbe');readln(tab[i]);
                    end;
            end;
   procedure srednia;
            var
               i:=byte;
               suma:real;
            begin
                 for i:=1 to wielkosc do
                    begin
                         suma:=suma+tab[i];
                         srednia:=suma\wielkosc;
                    end;
            end;
   procedure najblizsza;
            var
               teraz:real;
            begin
                 for i:=1 to wielkosc do
                    begin    
                         if srednia>tab[i] then
                                               begin
                                                    teraz:=srednia-tab[i];
                                               end;
                                           else
                                               begin
                                                    teraz:=tab[i]-srednia;
                                               end;
                         if najblizsza>teraz then
                                                 begin
                                                      najblizsza:=teraz;
                                                 end;
                    end;
            end;
   procedure wypisz;
            begin
                 writeln('Srednia ciagu liczb wynosi ',srednia:0:2);
                 writeln('Liczba z najmniejszym odchyleniem od sredniej to
                 ',najblizsza:0:0);         
            end;                                                           
            
begin
     tablica;
     srednia;
     najlizsza;
     wypisz;
end;       
 
0

Witam nie mam mozliwosci sprawdzenia czy ten program bedzie dzialac a potrzebny jest mi do szkoly

Przecież kompilator pobrać łatwo, nawet są serwisy online do kompilacji. Twoje problemy są straszne!!!

0

jestem zmuszony pracowac na systemie z plyty

0

A i chodzi mi o sprawdzenie tak mniej wiecej algorytmu bo jesli chodzi o drobne bledy to sie poprawi w szkole

0

nie będzie działać
nazwałeś tak samo zmienne globalne jak nazwy procedur

i też nie mam kompilatora: http://ideone.com/vjxX4

0

Poprawiłem ci błędy aby się kompilowało, ale czy dobrze działa to nie wiem bo nie włączałem programu....

program Project1;

uses
  System.SysUtils;
var
   tab:array[1..100] of real;
   srednia,najblizsza:real;
   wielkosc:byte;

procedure tablica;
  var
    i:byte;
  begin
    writeln('Podaj wielkosc tablicy');readln(wielkosc);
    for i:=1 to wielkosc do
    begin
      writeln('Podaj ',i,' liczbe');readln(tab[i]);
    end;
end;

procedure sredniax;
  var
    i:byte;
    suma:real;
  begin
  suma:=0;
  for i:=1 to wielkosc do
  begin
    suma:=suma+tab[i];
    srednia:=suma/wielkosc;
  end;
end;

procedure najblizszax;
  var
    i:byte;
    teraz:real;
  begin
    for i:=1 to wielkosc do
    begin
      if srednia>tab[i] then
        begin
          teraz:=srednia-tab[i];
        end
      else
        begin
        teraz:=tab[i]-srednia;
        end;
      if najblizsza>teraz then
        begin
          najblizsza:=teraz;
        end;
    end;
end;
procedure wypisz;
begin
  writeln('Srednia ciagu liczb wynosi ',srednia:0:2);
  writeln('Liczba z najmniejszym odchyleniem od sredniej to',najblizsza:0:0);
end;

begin
  tablica;
  sredniax;
  najblizszax;
  wypisz;
end.
0
uses crt;
var
  tab : array[1..100] of real;
  srednia,najblizsza : real;
  wielkosc : byte;

procedure WczytajDane();
var
  i : byte;
begin
  writeln('Podaj wielkosc tablicy');
  readln(wielkosc);

  for i := 1 to wielkosc do
  begin
    writeln('Podaj ', i, ' liczbe');
    readln(tab[i]);
  end;
end;


function ObliczSrednia() : real;
var
  i : byte;
  suma : real;
begin
  suma := 0;

  for i := 1 to wielkosc do
    suma := suma + tab[i];

  if wielkosc > 0 then 
   ObliczSrednia := suma / wielkosc
  else
    ObliczSrednia := 0;
end;


function ZnajdzNajblizsza(srednia : real) : real;
var
  znaleziona : real;
  i : byte;
begin
  if length(tab) >= 1 then
    znaleziona := tab[1]
  else
    znaleziona := 0;

  for i := 2 to wielkosc do
  begin    
    if Abs(srednia - znaleziona) > Abs(srednia - tab[i]) then
      znaleziona := tab[i];
  end;

  ZnajdzNajblizsza := znaleziona;
end;


procedure WypiszWynik(srednia : real; najblizsza : real);
begin
  writeln('Srednia ciagu liczb wynosi ', srednia:0:2);
  writeln('Liczba z najmniejszym odchyleniem od sredniej to ', najblizsza:0:0);
end;


begin
  WczytajDane();

  srednia := ObliczSrednia();
  najblizsza := ZnajdzNajblizsza(srednia);

  WypiszWynik(srednia, najblizsza);
end.

tab też powinno być przekazywane jako parametr do funkcji/procedur, ale nie chce mi się tego poprawiać - nie mam delphi ani pascala pod ręką, a ideone jest trochę niewygodne.

0

Dziekuje bardzo

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