Информатика,1 курс
В общем нужно блок схему и программу.
P.s Помогите кто знает,заранее спасибо!
Объявляешь две переменные для подсчёта положительных и отрицательных значений соответственно, пробегаешься по массиву и увеличиваешь значение переменной...
Что-то вроде такого:
int less = 0;
float array[100] = {-2,-1,0,1,2};
for (int i = 0; i < 100; ++i)
{
if (array[i] < 0)
{
less++
}
else
{
more++
}
}
http://cs313631.vk.me/v313631461/23d1/Rr4eTX5yKBo.jpg
нужно программу написать в тетради и в delphi 7
Для вашего массива float array[100] = {-2,-1,0,1,2};
мы получим, что имеется 2 отрицательных и 3 положительных - бред. Учите арифметику или загляните хотя бы в Вики:
0 - не положительное и не отрицательное число!
Я уже не говорю про норм ввод-вывод.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin;
type
TForm1 = class(TForm)
Button1: TButton;
SpinEdit1: TSpinEdit;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
n, o, p: integer;
m: array of real;
i: integer; // динамический массив
begin
Memo1.Clear; // очистка
o := 0;
p := 0;
n := SpinEdit1.Value; // количество вещ-х чисел
// или
// TryStrToInt(InputBox('Количество вещественных чисел','Введите натуральное число', '100'), n);
// если ввести не число, то n будет = 0
if n > 0 then
begin
SetLength(m, n); // установить размер массива
for i := 0 to n - 1 do
begin
m[i] := Random * 1000 - 500; // заполняем массив случайными вещ-ми числами от -500 до 499
Memo1.Lines.Add(FloatToStr(m[i])); // и сразу выводим их в текстовое поле
end;
// PS хорошо бы ещё какому-нибудь элементу явно присвоить 0
// например m[n-1] :=0; но вывод чисел тогда надо сделать отдельным циклом!
// подсчет полож и отриц чисел
for i := 0 to n - 1 do
begin
if m[i] > 0 then
inc(p) // тоже самое, что p:=p+1
else if m[i] < 0 then
inc(o);
end;
Memo1.Lines.Add('');
Memo1.Lines.Add('положительных чисел:' + FloatToStr(p));
Memo1.Lines.Add('отрицательных чисел:' + FloatToStr(o));
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
end;
end.
Ввод/редактирование вещественных чисел можно организовать, используя компонент TStringGrid.
Если динамические массивы не изучали, можно:
1) использовать обычный массив с большим кол-вом элементов, и проверять n (кол-во чисел) на максимум;
2) использовать TStringList (или даже TList ), храня числа как строки (в TList как объекты);
3) во время ввода чисел, сразу подсчитывать p и o, не записывая их в массив.
Ай-я-яй... Как пафосно и грубо.
Ай-я-яй... Как пафосно и грубо.
Пафосно? Вы программистом работаете или учитесь? Если второе - вопросов нет...
Грубо? Вы в какой стране живете. К тому, что выложено - это ещё мягко сказано, глубокоуважаемый.
Про 0 - все правильно сказано.
А за минус Вам спасибо ;)
Минусами я не балуюсь. Это глупо и уныло.
Мягко сказано, говорите?
Ну что же, придётся вернуть вас из высоких сфер абстрактной арифметики на бренные ограничения реалий.
0 может быть как положительным так и отрицательным.
Почему? Потому, что "знак" числа на подавляющем большинстве платформ задаётся старшим битом.
А вообще вы меня не поняли.
Меня покоробило с какой импульсивностью вы сообщаете о факте, который имеет место только потому, что так ранее было договорено.
Считать 0 положительным или нет, считать ли 2 простым... По этим вопросам было проведено огромное количество холиваров, а толку-то?
Это очень спорные и при этом абсолютно бесполезные вопросы.
Учите арифметику... П-ф-ф... Это скорее "Учите историю арифметики".
Почему? Потому, что "знак" числа на подавляющем большинстве платформ задаётся старшим битом.
Какое отношение имеет "знаковость" в программировании к вопросу о математическом смысле понятий положительное и отрицательное число? И про число 2. Оно простое по определению. Если кто сомневается -- учите арифметику :)
...
Ну что же, придётся вернуть вас из высоких сфер абстрактной арифметики на бренные ограничения реалий.
0 может быть как положительным так и отрицательным.
Почему? Потому, что "знак" числа на подавляющем большинстве платформ задаётся старшим битом.
...
Вот это полная фигня.
При чём тут большинство платформ? Есть базовые знания на которые опираются все люди(ну видимо за некоторыми исключениями).
Если вы реч завели про бит знака то для ноля он не имеет смысла. А у вас получается если есть бит значит будем его лепить ко всему что под руку попало
Вы конечно можете поменять смысл всех математических понятий(сами для себя), но в учёной среде вас не будут понимать
{$APPTYPE CONSOLE}
Uses
SysUtils;
Var a, n , x , kol(0), kol(p): Real;
i , n: Integer;
Begin
{TODO -oUser -cConsole Main : Insert code here}
Write ('Vvod n');
Readln(n);
kol(0):=0;
kol(p):=0;
For i:= 1 to n do;
Begin
Write ('Vvod x');
Readln(x);
If x<0 then kol(0)+1 else kol(p)+1;
End;
Writeln ('Kolichestvo 0', kol(0):5:2, 'kolichestvo p', kol(p):5:2;
End.
тут где то ошибка,помогите найти :D
Ладно уж, держи код :)
{$APPTYPE CONSOLE}
Uses
SysUtils;
Var x : Real;
i , n , cnt_p, cnt_n: Integer;
Begin
Write ('Input n: ');
Readln(n);
cnt_p:=0;
cnt_n:=0;
For i:= 1 to n do
Begin
Write ('Input x: ');
Readln(x);
If x>0 then inc(cnt_p) else if not (x=0) then inc(cnt_n);
End;
writeln('Count of neg.: ', cnt_n, ' Count of pos.: ', cnt_p);
Writeln('Input digit for exit '); readln(i);//вместо паузы
End.
Подскажите пожалуйста , есть ли ошибка в программе?
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
var a:real;
i,n,countplus,countminus:integer;
begin
{ TODO -oUser -cConsole Main : Insert code here }
write('Vvod n ');
readln(n);
countplus:=0;
countminus:=0;
for i:=1 to n do
begin
write('Vvod a: ');
readln(a);
if a>0 then
countplus:=countplus+1;
if a<0 then
countminus:=countminus+1;
end;
writeln('pologitelnie- ',countplus,'otricatelnie- ',countminus);
readln;
end.
;))))
А так она считывает считает кол-во + и - чисел. Притом правильно.
Но:
1) Вывод результата будет в виде: "pologitelnie- 3otricatelnie- 2" - что, мягко говоря, не совсем читабельно.
2) Ввод тоже не ахти: пять раз я должен ввести некую а. С первого раза комп не понял ;)
3) if a<0 then - лучше перед ним вставить else, убрав точку с запятой. Т.к. зачем проверять, является ли число отрицательным, если например оно положительное??? Нечего 4-хядерные многогигагерцовые процессоры загружать лишними операциями. Нет на вас 70-х ;))
4) научитесь форматировать код программы, есть же правила, еклмн. + почитайте на досуке как вставлять форматированный код на данном форуме (PS кнопочка в виде {...} )
То что там проверяются оба условия не является ошибкой с точки зрения работоспособности программы.
Но с точки зрения программирования код на 2 с +. На месте препода я бы не поставил высокую оценку.