Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Информатика,1 курс

88K
16 мая 2013 года
dukalis
5 / / 16.05.2013
задана последовательность из n вещественных чисел определить кол-во положительных и отрицательных элементов последовательности.
В общем нужно блок схему и программу.
P.s Помогите кто знает,заранее спасибо!
314
16 мая 2013 года
fanto
374 / / 15.02.2003
Хм. А в чём проблема-то?
Объявляешь две переменные для подсчёта положительных и отрицательных значений соответственно, пробегаешься по массиву и увеличиваешь значение переменной...
Что-то вроде такого:
Код:
int more = 0;
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++
    }
}
Что сложного-то? Или есть какие-то хитрые ограничения?
88K
16 мая 2013 года
dukalis
5 / / 16.05.2013
вот как выглядит блок-схема,бля просто у нас препод доебывается до всего,и не говорит где ошибка (

http://cs313631.vk.me/v313631461/23d1/Rr4eTX5yKBo.jpg

нужно программу написать в тетради и в delphi 7
72K
17 мая 2013 года
GNDragonfly
16 / / 24.05.2012
fanto, Вы свой код проверяли?.
Для вашего массива float array[100] = {-2,-1,0,1,2};
мы получим, что имеется 2 отрицательных и 3 положительных - бред. Учите арифметику или загляните хотя бы в Вики:
0 - не положительное и не отрицательное число!
Я уже не говорю про норм ввод-вывод.
72K
17 мая 2013 года
GNDragonfly
16 / / 24.05.2012
Вот программа на Делфи 2010

Код:
unit MainUnit;

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.
Не помню, есть ли в 7-й Делфе function TryStrToInt(const S: string; out Value: Integer): Boolean; ( в коде я ее закомментировал), но можно использовать function StrToInt(const S: string): Integer.
Ввод/редактирование вещественных чисел можно организовать, используя компонент TStringGrid.
Если динамические массивы не изучали, можно:
1) использовать обычный массив с большим кол-вом элементов, и проверять n (кол-во чисел) на максимум;
2) использовать TStringList (или даже TList ), храня числа как строки (в TList как объекты);
3) во время ввода чисел, сразу подсчитывать p и o, не записывая их в массив.
314
17 мая 2013 года
fanto
374 / / 15.02.2003
Цитата: GNDragonfly
fanto, бред. Учите арифметику


Ай-я-яй... Как пафосно и грубо.

72K
17 мая 2013 года
GNDragonfly
16 / / 24.05.2012
Цитата: fanto
Цитата: GNDragonfly
fanto, бред. Учите арифметику


Ай-я-яй... Как пафосно и грубо.


Пафосно? Вы программистом работаете или учитесь? Если второе - вопросов нет...
Грубо? Вы в какой стране живете. К тому, что выложено - это ещё мягко сказано, глубокоуважаемый.
Про 0 - все правильно сказано.
А за минус Вам спасибо ;)

314
18 мая 2013 года
fanto
374 / / 15.02.2003
Цитата: GNDragonfly
А за минус Вам спасибо ;)


Минусами я не балуюсь. Это глупо и уныло.
Мягко сказано, говорите?
Ну что же, придётся вернуть вас из высоких сфер абстрактной арифметики на бренные ограничения реалий.
0 может быть как положительным так и отрицательным.
Почему? Потому, что "знак" числа на подавляющем большинстве платформ задаётся старшим битом.

А вообще вы меня не поняли.
Меня покоробило с какой импульсивностью вы сообщаете о факте, который имеет место только потому, что так ранее было договорено.
Считать 0 положительным или нет, считать ли 2 простым... По этим вопросам было проведено огромное количество холиваров, а толку-то?
Это очень спорные и при этом абсолютно бесполезные вопросы.
Учите арифметику... П-ф-ф... Это скорее "Учите историю арифметики".

72K
18 мая 2013 года
GNDragonfly
16 / / 24.05.2012
Вообще-то, по образованию я преподаватель математики. Историю этой самой математики я превосходно знаю. И никаких холиваров (особенно по поводу 2) не было. Было недопонимание таких как вы: легко зайти на otvet.mail.ruи почитать бред, который пишут люди. Хотя там же вы сможете найти действительно хороший ответ Виктора Улина, кандидата физико-математических наук, рассказывающего про теорию чисел (которую я также изучал более 3 лет в универе).
326
18 мая 2013 года
sadovoya
757 / / 19.11.2005
Цитата:
0 может быть как положительным так и отрицательным.
Почему? Потому, что "знак" числа на подавляющем большинстве платформ задаётся старшим битом.


Какое отношение имеет "знаковость" в программировании к вопросу о математическом смысле понятий положительное и отрицательное число? И про число 2. Оно простое по определению. Если кто сомневается -- учите арифметику :)

465
18 мая 2013 года
QWERYTY
595 / / 25.03.2012
Цитата: fanto

...
Ну что же, придётся вернуть вас из высоких сфер абстрактной арифметики на бренные ограничения реалий.
0 может быть как положительным так и отрицательным.
Почему? Потому, что "знак" числа на подавляющем большинстве платформ задаётся старшим битом.
...



Вот это полная фигня.
При чём тут большинство платформ? Есть базовые знания на которые опираются все люди(ну видимо за некоторыми исключениями).
Если вы реч завели про бит знака то для ноля он не имеет смысла. А у вас получается если есть бит значит будем его лепить ко всему что под руку попало

Вы конечно можете поменять смысл всех математических понятий(сами для себя), но в учёной среде вас не будут понимать

88K
18 мая 2013 года
dukalis
5 / / 16.05.2013
Program B6;
{$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
326
18 мая 2013 года
sadovoya
757 / / 19.11.2005
Тут не "где-то ошибка", а весь код почти сплошная ошибка.

Ладно уж, держи код :)


Код:
Program B6;

{$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.
88K
19 мая 2013 года
dukalis
5 / / 16.05.2013
Спасибо)
88K
20 мая 2013 года
dukalis
5 / / 16.05.2013
Мне тут еще одно задание дали
Подскажите пожалуйста , есть ли ошибка в программе?
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.
72K
20 мая 2013 года
GNDragonfly
16 / / 24.05.2012
Смотря что эта программа должна делать. Если надо найти среднее арифметические введенных чисел, а затем результат возвести в степень n. То однозначно программа неправильно работает
;))))
А так она считывает считает кол-во + и - чисел. Притом правильно.
Но:
1) Вывод результата будет в виде: "pologitelnie- 3otricatelnie- 2" - что, мягко говоря, не совсем читабельно.
2) Ввод тоже не ахти: пять раз я должен ввести некую а. С первого раза комп не понял ;)
3) if a<0 then - лучше перед ним вставить else, убрав точку с запятой. Т.к. зачем проверять, является ли число отрицательным, если например оно положительное??? Нечего 4-хядерные многогигагерцовые процессоры загружать лишними операциями. Нет на вас 70-х ;))
4) научитесь форматировать код программы, есть же правила, еклмн. + почитайте на досуке как вставлять форматированный код на данном форуме (PS кнопочка в виде {...} )
465
20 мая 2013 года
QWERYTY
595 / / 25.03.2012
Форматированный код действительно научитесь вставлять.

То что там проверяются оба условия не является ошибкой с точки зрения работоспособности программы.
Но с точки зрения программирования код на 2 с +. На месте препода я бы не поставил высокую оценку.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог