Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2011, 07:36   #1
dodomenos
 
Регистрация: 28.02.2011
Сообщений: 7
По умолчанию массив из единиц и нулей

Задание 23
Ввести массив A(N) из положительных и отрицательных единиц и нулей.
Вывести на печать информацию о количестве положительных и отрицательных
Единиц и нулей, а также об их индексах.

Код:
program zad23;

{$APPTYPE CONSOLE}

uses
  SysUtils;
const n=10;
var
     a:array[1..n] of integer;
     i,k,k1,nul,polz,otr:integer;
begin
     randomize;
     writeln;
     for i:=1 to n do
     begin
     a[i]:=random(3)-1;
     write(a[i]:4);
     end;
          writeln;
     k:=0;k1:=0; nul:=0;
     polz:=0;otr:=0;
     for i:=1 to n do
     begin
     if a[i]>0 then
     inc(polz);
     k:=i;
     if a[i]<0 then
     inc(otr);
     k1:=i;
     if a[i]=0 then
     inc(nul);
     end;
     writeln;
     writeln;
     writeln('Kol-vo polozhitel-x edinis = ' ,polz, ' ego index =',k);
     writeln;
     writeln('Kol-vo otrezat-x edinis    = ' ,otr,'  ego index =',k1);
     writeln;
     writeln('Kol-vo nulevix elementov   = ' ,nul);
     readln;
end.

---вот массив вывожу все хорошо ,а вот как правильно написать ,чтобы их индексы выходили ...вот здесь прошу помочь.
Скопируйте себе этот код и запустите...чтобы понятней был мой вопрос.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 01.03.2011 в 08:13.
dodomenos вне форума Ответить с цитированием
Старый 01.03.2011, 08:31   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) вопрос номер раз - Вы пишете на "чистом" Паскале,
или, раз уж в Delphi компилируете, можно использовать функции, которые имеются в Delphi ?

2) подкидываю идею.
вместо переменных K, K1
заводите переменные типа string.
потом, каждый раз, как обнаружили соответствующее положительное или отрицательное или ноль сохраняте номер (индекс) элемента через запятую.
например, примерно так:
Код:
Var 
   index_polz, index_otr, index_nul : string;
   sIndx : string;
...
     nul:=0;  polz:=0;  otr:=0;
     index_polz := '';
     index_otr := '';
     index_nul := '';
     for i:=1 to n do
     begin
       str(i,sIndx);
       if a[i]>0 then begin
          inc(polz);
          index_polz := index_polz + sIndx + ',';
       end;
       if a[i]<0 then begin
          inc(otr);
          index_otr := index_otr + sIndx + ',';
       end;
       if a[i]=0 then begin
          inc(nul);
          index_nul := index_nul + sIndx + ',';
       end;
     end;

p.s. как вариант можно сделать три прохода по массиву: 1-й раз подсчитать и вывести индексы положительных элементов,
2-й проход - отрицательных - третий проход — нулевых. Пример такого вывода смотри тут - http://www.programmersforum.ru/showthread.php?t=139801

Последний раз редактировалось Serge_Bliznykov; 01.03.2011 в 08:33.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.03.2011, 09:15   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,883
По умолчанию

я могу ещё посоветовать хранить всё во вспомогательных массивах

Код:
...
a:array[1..n] of byte;
aminus:array[1..n] of byte;
anul:array[1..n] of byte;
aplus:array[1..n] of byte; 
...
for i:=1 to n do
     begin
     if a[i]>0 then begin
     inc(polz);
     aplus[polz]:= i;
     end;
     if a[i]<0 then begin
     inc(otr);
     aminus[otr] := i;
     end;
     if a[i]=0 then begin
     inc(nul);
     anul[nul] := i ;
     end;
     end;
вывод индексов потом осуществлять, конечно, в циклах (от 1 до otr , от 1 до nul, от 1 до polz)
phomm вне форума Ответить с цитированием
Старый 02.03.2011, 17:59   #4
dodomenos
 
Регистрация: 28.02.2011
Сообщений: 7
По умолчанию

Цитата:
вопрос номер раз - Вы пишете на "чистом" Паскале,
или, раз уж в Delphi компилируете, можно использовать функции, которые имеются в Delphi ?


. Пример такого вывода смотри тут - http://www.programmersforum.ru/showthread.php?t=139801
Работаю в Делфи, но не владею знаниями по функциям,пока не проходили

---ссылка помогла...вот что додумал...
Код:
program zad23;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const n=10;
var
     a,b:array[1..n] of integer;
     i,nul,polz,otr:integer;
begin
     randomize;
     writeln;
     for i:=1 to n do
     begin
     a[i]:=random(3)-1;
     write(a[i]:4);
     end;
     writeln;
     writeln;
{подсчёт и одновременно вывод индексов отрицательных элементов}
    otr := 0; polz:=0;
    for i:=1 to n do begin

    if a[i]<0 then begin
    otr:=otr+1;
    writeln(' indeksi otrezatelnix:',i:4);
    end;
   { writeln;}
    end;


    writeln('   Kolichestvo otricatel`nix elementov massiva- ',otr);
     writeln;
      writeln;
    for i:=1 to n do begin
     if a[i]>0 then begin
    polz:=polz+1;
    writeln(' indeksi polozitelnix',i:4);
    end;
    end;
    writeln('   Kolichestvo polozhetel`nix elementov massiva- ',polz);
    writeln;
    writeln;
     for i:=1 to n do begin
     if a[i]=0 then begin
    nul:=nul+1;
    writeln(' indeksi nylei',i:4);
    end;
    end;
    writeln('   Kolichestvo nylevix elementov massiva- ',nul);
    readln;
 end.
вопросик:В принципе все устраивает,но чисто интерес возник такой
мне пришлось каждый индекс с новый строчки выводить
а вот как их можно было вывести...
writeln(' Kolichestvo polozhetel`nix elementov massiva- ',polz ,,,,???? )... вот в этом выражении,чтобы через запитую указать какие индексы!
надеюсь понятно изложил)
dodomenos вне форума Ответить с цитированием
Старый 03.03.2011, 00:08   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
writeln(' Kolichestvo polozhetel`nix elementov massiva- ',polz ,,,,???? )... вот в этом выражении,чтобы через запитую указать какие индексы!
я в пост #2 предложил пример кода..
попробуйте использовать (=понять) его.
Получите индексы через запятую...

p.s. А вообще достаточно там, где Вы выводите индексы выводить и запятую, как Вы получите то, что хотите..
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти байт максимальным количестов единиц и байт с максмальным количеством нулей и разность (ассемблер) Beren42 Помощь студентам 0 15.12.2010 20:32
Найти байтс наибольшим числом единиц и найти байт с наибольшим чилом нулей. Найти разность число единиц м Beren42 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 14.12.2010 17:44
Задана последовательность состоящая из единиц и нулей valiaam55 Паскаль, Turbo Pascal, PascalABC.NET 1 29.09.2010 17:16
работа с массивом нулей и единиц Rusl92 Помощь студентам 12 15.11.2009 16:20
Получите последовательность b1...bn из нулей и единиц Я_Студент Паскаль, Turbo Pascal, PascalABC.NET 2 04.07.2008 12:40