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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2012, 17:56   #1
Uniastrum
Новичок
Джуниор
 
Регистрация: 27.11.2012
Сообщений: 3
По умолчанию Работа с одномерными массивами (Turbo Pascal)

Здравствуйте, впала во вселенский ступор, как только увидела задачу с массивами. Не мог бы кто-нибудь помочь, пожалуйста, с решением?(
Да и что грех таить - с программированием далеко не на "ты").

Вариант для разбора был предложен такой:

Формирование символьного массива длиной не более ста элементов, заполнение его с клавиатуры (вводя по одному произвольному символу пока не встретится символ "."), подсчет и вывод на экран символа, который встретился чаще других и число его повторений.

Печатать элементы массива по:
Штук: 30
Формат: 2

Тип обработки данных:
Символьный.

Код:
PROGRAM  Simbol_Array;
{Вариант N 31.}
VAR
  N,Ni,Nmax,i,j :integer;
  SimI,SimMax   :char;
  Simbol        :array[1..100] of char;
  Fout          :text;
BEGIN   {Выполняемый блок. Первый раздел – ввод данных }
  N:=0;
  writeln('Вводить по одному не более 100 символов,');
  writeln(' Для завершения – ввести символ "."');
  repeat
    writeln('Введи очередной символ');
    N := N + 1;
    readln(Simbol[N]);
  until (N = 100) or (Simbol[N] = '.');
  if Simbol[N]= '.' then N := N - 1; { Последний символ, если он – точка, рассматриваться не будет }
  if N < 1 then
    writeln('Нельзя рассматривать меньше 1 символа')
  else
  begin
    Assign(Fout,'UMNIK4.RES'); {связали Fout с UMNIK.DAT}
    ReWrite(Fout);            {открыли файл для записи }
    writeln(Fout,'Исходный массив из ',N,' элементов');
    for i:=1 to N do
    begin
      write(Fout,Simbol[i]:2); { печать в текущей строке}
      if i mod 30 = 0 then writeln(Fout); { если номер
               элемента кратен 30 переходим на новую строку}
    end;
    writeln(Fout);
         { Основной раздел – поиск номера }
    Nmax := 0;   { количество наиболее частого символа }
    SimMax := Simbol[1];
    for i:=1 to N do { внешний цикл перебора символов }
    begin
      SimI := Simbol[i];
      Ni := 0;
      for j:=i to N do { внутренний цикл перебора символов }
        if Simbol[j] = SimI then Ni:=Ni+1;
      if Ni>Nmax then {если этот символ встретился чаще,}
      begin          {запомним его и число его вхождений}
        Nmax := Ni;
        SimMax := SimI;
      end;
    end;
        { Раздел вывода результатов поиска }
    if Nmax = 1 then
      writeln(Fout,'Все символы входят по 1 разу')
    else
      write(Fout,'Символ "',SimMax,'" встретился ',Nmax,
                    ' раз');
        { далее определим, если Nmax кончается на 2,3,4 и не во втором десятке, изменим окончание, например, "23 раза" }
      if (Nmax mod 10 < 5) and (Nmax mod 10 > 1) and
         (Nmax div 10 <> 1)
        then writeln(Fout,'а');
  end;
  Close(Fout);
END.
Мой же вариант задания такой:

Вычисление суммы всех четных (по значению) элементов массива, расположенных на нечетных по порядку местах. Длина массива вводится с клавиатуры.

Печатать элементы массива по:
штук:10
формату: :6

Тип обработки данных:
целые.

Буду очень признательна Вам за помощь!

Последний раз редактировалось Uniastrum; 27.11.2012 в 17:58.
Uniastrum вне форума Ответить с цитированием
Старый 27.11.2012, 19:09   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Впадать во вселенский ступор не стоит. Необходимо работать. Ведь что-то Вы наверное умеете.
Для начала создайте небольшую программу для ввода массива. Кстати откуда он берется?
Потом добавите проверку на нечетность места и четность элемента, а далее просуммируете. Вот и все. Пишите и выкладывайте. Что не получится, исправят.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 27.11.2012, 21:00   #3
Uniastrum
Новичок
Джуниор
 
Регистрация: 27.11.2012
Сообщений: 3
По умолчанию

Увы, ничего написать не получилось, если бы вышло что-то, я бы написала сюда, в этом-то и проблема.
Uniastrum вне форума Ответить с цитированием
Старый 27.11.2012, 21:05   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
s:=0;
for i:=1 to n do
begin
if i mod 10 = 1 then writeln;
write(a[i]:6);
if (not odd(a[i]) and (odd(i)) then inc(s,a[i]);
end;
writeln(s);
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с одномерными массивами в С# RED1994 Помощь студентам 0 03.11.2012 18:56
Работа с одномерными массивами SiNgLeR C++ Builder 5 18.12.2011 16:56
Работа с одномерными массивами С++ chainiksi Помощь студентам 4 21.11.2011 15:12
работа с одномерными массивами ЭдикNEO Помощь студентам 4 07.12.2010 21:07