Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 06.11.2012, 10:13   #1
гоша37
 
Регистрация: 06.11.2012
Сообщений: 8
По умолчанию задачи в паскале

1. Задать массив А[1..16] с помощью генератора случайных чисел положительными и отрицательными числами. Определить минимальный элемент, его номер в массиве, заменить этот элемент элемент числом 1000.
2. Ввести строку S1 с помощью оператора readln. Определить количество гласных и знаков препинания в ней. В строку S2 вводить информацию посимвольно с помощью readkey, конец ввода - первый и последний символ первой строки. Ввести строку S3. Обьединить все строки. Удвлить строку S3 из обьедененной строки.
3. Вводится последовательность чисел. Конец ввода - отрицательное число. Определить количество нечетных чисел, а каждое четное возвести в квадрат.
4. Вводится последовательность символов, конец ввода - знак '!' Определить количество слов, заканчивающихся буквой 'A' (букв 'A', стоящих перед пробелом и знаками конца предложения)
гоша37 вне форума   Ответить с цитированием
Старый 06.11.2012, 10:29   #2
domovou
Пользователь
 
Аватар для domovou
 
Регистрация: 01.09.2012
Сообщений: 88
По умолчанию

1.
Код:
var a:array [1..16] of integer;
    i,min,imin:integer;
begin
min:=35000;
writeln;
for i:=1 to 16 do
    begin
    a[i]:=random(21)-10;
    write(a[i]:3);
    if a[i]<min then begin min:=a[i]; imin:=i; end;
    end;
a[imin]:=1000;
writeln;
for i:=1 to 16 do
    write(a[i]:5);
readln;
end.
35000 служит для нахождения мин элемента, если а[1] меньше 35000 тогда мин присвоить а первое
3.
Код:
var f:file of integer;
    i,nk,a:integer;
begin
assign(f,'3.dat');
rewrite(f);
nk:=0;
writeln;
while a>=0 do
      begin
      write('Enter ');
      readln(a);
      if a mod 2 = 0 then write(f,sqr(a))
      else write(f,a);
      if a mod 2 <> 0 then inc(nk);
      end;
reset(f); writeln;
while not eof(f) do
      begin
      read(f,a);
      write(a:5);
      end;
writeln(#13,'Kol-vo necet= ', nk);
close(f);
readln;
end.
Программист - это не тот, кто пишет программы, а тот, чьи программы работают.

Последний раз редактировалось domovou; 06.11.2012 в 11:11.
domovou вне форума   Ответить с цитированием
Старый 06.11.2012, 13:54   #3
NinaSSS
Пользователь
 
Регистрация: 30.10.2012
Сообщений: 34
По умолчанию

3 задача
Код:
.......
k:=0;
repeat
readln(a);
if a mod 2<>0 then k:=k+1 else  a:=sqr(a);    until a<=0 ......
NinaSSS вне форума   Ответить с цитированием
Старый 06.11.2012, 14:49   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,209
По умолчанию

NinaSSS, Ваш код будет неверно работать при всех четных отрицательных числах а, обратите на это внимание!
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 06.11.2012 в 15:09.
Sciv вне форума   Ответить с цитированием
Старый 06.11.2012, 15:02   #5
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,203
По умолчанию

Цитата:
Сообщение от Sciv
NinaSSS, Ваш код будет неверно работать при всех четных отрицательных числах а, обратите на это внимание!
Это ещё почему?
(-4 mod 2 = 0) - что не так?
Это раз. А во-вторых, программа должна прекращать работу при вводе отрицательного числа, поэтому я бы написал так:
Код:
  k:=0;
  repeat
     Readln(a);
     if a>=0 then 
       if odd(a) then  inc(k) else WriteLn('sqr(a)=', sqr(a));
  until a<0;

p.s. кстати, исходя из формулировки задачи, я бы склонялся к тому, что элементы последовательности должны быть элементами массива..
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 06.11.2012, 15:12   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,209
По умолчанию

Сергей, а каким образом она прекратит работу при вводе, скажем, -4?

a=-4;

a mod 2=0 -> a:=sqr(a)=(-4)*(-4)=16

условие Until a<=0 не выполняется.

Ваша поправка кода все ставит на свои места
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума   Ответить с цитированием
Старый 06.11.2012, 15:34   #7
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,203
По умолчанию

Цитата:
Сообщение от Sciv
условие Until a<=0 не выполняется.

Ваша поправка кода все ставит на свои места
А! Точно! Всё. Теперь я понял, о чём Вы говорили - действительно,
Вы правы, в коде NinaSSS при отрицательных чётных числах завершения цикла не будет происходить!
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 06.11.2012, 15:44   #8
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,648
По умолчанию

Код:
Readln(a);
while a>0 do begin
       if odd(a) then  inc(k) else WriteLn('sqr(a)=', sqr(a));
 readln(a);
end;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума   Ответить с цитированием
Старый 06.11.2012, 16:12   #9
domovou
Пользователь
 
Аватар для domovou
 
Регистрация: 01.09.2012
Сообщений: 88
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
p.s. кстати, исходя из формулировки задачи, я бы склонялся к тому, что элементы последовательности должны быть элементами массива..
так если заранее неизвестно кол-во элементов, тогда зачем он нужен
Программист - это не тот, кто пишет программы, а тот, чьи программы работают.
domovou вне форума   Ответить с цитированием
Старый 06.11.2012, 21:05   #10
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,209
По умолчанию

Цитата:
Сообщение от domovou Посмотреть сообщение
так если заранее неизвестно кол-во элементов, тогда зачем он нужен
В задании русским по белому: "Задать массив..."
Видимо, вопрос надо адресовать автору задачи
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2 задачи на паскале roman042 Помощь студентам 1 07.04.2011 15:17
задачи на паскале martinlyubimov Паскаль, Turbo Pascal, PascalABC.NET 2 20.02.2011 17:55
задачи в паскале WWW-777 Помощь студентам 3 02.07.2010 21:14
3 задачи в паскале. Nato4ka Помощь студентам 3 11.05.2009 16:12
привет всем! помогите пожалуйста решить две задачи на паскале. я в паскале полный ноль. Пищенок Саша Паскаль, Turbo Pascal, PascalABC.NET 5 20.01.2009 14:46


11:12.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.