Wątek zablokowany 2015-09-22 19:25 przez furious programming.

Liczby mniejsze wieksze od zera.

0

Napisz program, który wypisuje ilość liczb mniejszych i większych od 0 spośród 5 wprowadzonych. Program ma także sprawdzać czy ostatnia wprowadzona liczba była 10. Jeżeli tak, informacja o tym ma pojawić się na ekranie. Po wykonaniu operacji program ma zapytać czy chcemy zakończyć program czy wykonać go jeszcze raz.

to jest treść zadania w ogóle za bardzo nie wiem jak się za to zabrać próbowałem skminić to w pętli bo to mamy zrobić w pętli

Mam problem też jak wstawić żeby sprawdzało czy ostatnia dana liczba to 10.Mam nadzieję że ktoś się znajdzie i mi wytłumaczy naprawdę siędzę nad tym i nie wiem jak to zrobić

a,b:real;
i:byte;
begin
a:=a>0;
b:=a<0;
for i:=1 to 5 do then
if (a>0) then writeln ('liczb wiekszych od zera jest',a);
if (b<0) then writeln ('liczb mniejszych od zera jest',b);
readln;
end;

1
Prezes912 napisał(a)

Mam problem też jak wstawić żeby sprawdzało czy ostatnia dana liczba to 10.Mam nadzieję że ktoś się znajdzie i mi wytłumaczy naprawdę siędzę nad tym i nie wiem jak to zrobić

A mnie się widzi, że Twoim największym problemem jest lenistwo i brak jakiejkolwiek znajomości języka, stąd nie masz zielonego pojęcia jak to wykonać;

Dowód nr 1

a,b:real;
 i:byte;
 begin
 a:=a>0;
 b:=a<0;

Do zmiennej liczbowej chcesz przypisać wartość logiczną (a to nielogiczne);

Dowód nr 2:

for i:=1 to 5 do then
 if (a>0) then writeln ('liczb wiekszych od zera jest',a);
 if (b<0) then writeln ('liczb mniejszych od zera jest',b);
 readln;

Pomijając fakt, że pętla w tym przypadku obejmuje tylko pierwszy warunek - nigdzie nie ma instrukcji pozwalającej wprowadzic liczbę z klawiatury;


Reasumując - smaruj do nauki, a szanowny kolega @olesio - temat nadaje się do działu Power(Newbie);

0

uses
SysUtils;
var
a,i:integer;
begin
writeln('podaj 5 liczb');
readln(a);
for i:=1 to 5 do then
begin
readln(a);
if ( a>0) and( a<0) then writeln('liczb mniejszych od zera jest',a<0,liczb wiekszych
od zera jest',n>0);
end;
readln;
end.

1

Ten kod zbytnio sensu nie ma; Nie wiem, czy piszesz go w notatniku, czy w edytorze kodu bo wydaje mi się, że w ogóle nie sprawdzasz w jaki sposób działa;

begin
 writeln('podaj 5 liczb');
 readln(a);
 for i:=1 to 5 do then
 begin
 readln(a);
 if a>0 and a<0 then writeln('liczb mniejszych od zera jest',a<0,liczb wiekszych
 od zera jest',n>0);
 readln;
 end.

Prześledź kod - najpierw podajesz liczbę z klawiatury do a, potem w pętli znów podajesz, przez co wcześniej wprowadzona zostaje utracona; Następnie w pęli sprawdzasz warunkiem liczbę, który jest błędny, bo sprowadza się do tego, że sprawdza czy liczba a jest równa 0 (źle popatrzyłem) bo jeśli liczba jest mniejsza od 0 to oczywiśnie nie może być też większa, czyli warunek nigdy nie zostanie spełniony nawet, jeśli wpakujesz składowe warunku w nawiasy; ale jeśli jakimś cudem podasz taką liczbę to wyświetli (liczb mniejszych od zera jest',a<0,liczb wiekszych od zera jest',n>0) - co jest absurdem w tej sytuacji; Kod nie zostanie skompilowany bo jeśli warunków jest kilka w jedym if to musisz je wpakować w osobne nawiasy, poza tym w procedurze WriteLn jako drugi i czwarty argument podajesz wartości logiczne a<0 i n>0, a na pewno nie o to chodzi;

Jednym zdaniem - kod do poprawy;

0

Z tego co rozumiem mam
usunąć to żeby nie wczytywało a jeszcze raz
begin
readln(a)

-warunki w pętli dałem w nawiasy
nie wiem jak przypisać wartości logiczne ja bym to zrobił
a:=a<0
b:=a>0

  • to mam jeszcze dopisać w warunku że a<>0?
1

Chyba dalej nie rozumiesz... W jaki sposób chcesz liczyć ile liczb jest mniejszych od 0 i większych od 0 - gdzieś tą informację musisz zapisać, a zminnych pomocniczych nie masz; Podczas wprowadzania liczb sprawdzasz ją i jesli jest ujemna - inkrementujesz licznik liczb ujemnych, a jeśli dodatnia - powiększasz o jeden licznik dodatnich;

Możesz wykorzystać dwa liczniki (jeden dla dodatnich, drugi dla ujemnych) i je powiększać, a na koniec wyświetlić ich stan, albo wczytywac liczby do tablicy pięcio-elementowyj i po ich wprowadzeniu podliczyć te dodatnie i ujemne i też wyświetlić ich stan; Pierwszy sposób jest jednak prostszy i bardziej się do tego zadania nadaje;

Po kolei co masz zrobić:
#zadeklaruj zmienną do której wprowadzać będziesz liczby z klawiatury,
#zadeklaruj dwie zmienne licznikowe (dla liczb ujemnych i dodatnich),
#wyzeruj wartości dwóch liczników,
#w pętli (pięć razy):
##wprowadź liczbę z klawiatury,
##sprawdź jej wartość:
###jeśli jest ujemna - inkrementuj licznik liczb ujemnych,
###jeśli jest dodatnia - inkrementuj licznik liczb dodatnich,
#wypisz na ekranie stan obydwu liczników,
#jeśli a jest równe 10 - wyświetl stosowny komunikat.

To wszystko - idę na spacer a Ty popracuj i przede wszystkim skompiluj kod i sprawdź czy działa zanim zadasz kolejne pytanie;


Coś się parser sypie na wypunktowaniu, albo ja nie umiem z niego korzystać...

0

dalej mam lipę bo nie działa

uses
SysUtils;

var
a,i,b,c:integer;
begin
b:=0;
c:=0;
for i:=1 to 5 do
begin
writeln('podaj 5 liczb');
readln(a);
if a > 0 then b:=b+1;
if a < 0 then c:=c+1;
writeln ('liczb mniejszych od zera jest','c','liczb wiekszych od zera jest','b');

end;
readln;
end.

1

zrobiłeś:
writeln('podaj 5 liczb');
oraz:
writeln ('liczb mniejszych od zera jest','c','liczb wiekszych od zera jest','b');
wewnątrz pętli.
Więc nic dziwnego że powtarza się ci to 5 razy.
Użyj mózgu wraz z logiką - nie osobno.

0

uses
SysUtils;

var
a,i,b,c:integer;
begin
b:=0;
c:=0;
for i:=1 to 5 do
begin
writeln('podaj 5 liczb');
readln(a);
if a > 0 then b:=b+1;
if a < 0 then c:=c+1;
end;
writeln ('liczb mniejszych od zera jest','c','liczb wiekszych od zera jest','b');

readln;
end.

i teraz też nie działa jeżeli dobrze poprawiłem

1

Przeczytaj jeszcze raz to co napisałem poprzednio.
Oprócz tego jak napiszesz:
Writeln('c');
to wypisze ci znak c (zawsze);
jeżeli zaś napiszesz:
Writeln(c);
to wypisze ci wartość zmiennej o nazwie c (o ile taka istnieje);

0

Teraz mi wyświetla po poprawieni 'c' na c i wszystko git ale mam problem
pisze
podaj 5 liczb wpisuje 1 i jest tak

podaj 5 liczb
1
podaj 5 liczb
6
podaj 5 liczb
5
podaj 5 liczb
7
podaj 5 liczb
2
naciskam i wyświetla mi wszystko dobrze ale jak zrobić żeby po podaniu liczby nie wyświetlało 5 liczb

chyba zadanie skończyłem
uses
SysUtils;

var
a,i,b,c:integer;
begin
b:=0;
c:=0;
for i:=1 to 5 do
begin
writeln('podaj 5 liczb');
readln(a);
if a > 0 then b:=b+1;
if a < 0 then c:=c+1;
if a=10 then writeln('liczba a wybosi 10') ;
end;
writeln ('liczb mniejszych od zera jest',c,'liczb wiekszych od zera jest',b);

readln;
end.

Macie może jakieś kursy żeby potrenować bo mam słaby zatryb

0

Macie może jakieś kursy żeby potrenować bo mam słaby zatryb

  1. www.google.pl - polecam
  2. Czytaj to pomarańczowe gdy zakładasz temat, TUTAJ SĄ TAGI W KTÓRE WKLEJA SIĘ KOD. Następnym razem bądź pewien że użyję guzika report i twój temat wyląduje tam gdzie powinien.

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