Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Три задачи на Паскале (http://www.tehnari.ru/f41/t32494/)

GrandLeon 27.01.2010 16:55

Три задачи на Паскале
 
Помогите пожалуйста нубу в паскале :(
Нужно до пятницы сделать три задачи.

Развилка
Вводится номер месяца. Программа возвращает его название.

Массивы
Упорядочив целочисленных массив из 15 элементов по возрастанию и вывести на экран положительную часть массива.

Строки
Определить и вывести число слов во введенном предложении.

Уважайте Правила форума, в том числе п.2.1. Тема переименована.
Модератор.

DDS 27.01.2010 17:09

Первая задача
Код:

Var m:byte;
 Begin
    Readln(m);
    Case m of
      1  :writeln('Январь');
      2  :writeln('Февраль');
      3  :writeln('Март');
      4  :writeln('Апрель');
      5  :writeln('Май');
      6  :writeln('Июнь');
      7  :writeln('Июль);
      8  :writeln('Август');
      9  :writeln('Сентябрь');
      10 :writeln('Октябрь');
      11 :writeln('Ноябрь');
      12 :writeln('Декабрь');
    end;
End.


Vladimir_S 27.01.2010 17:10

Цитата:

Сообщение от GrandLeon (Сообщение 287427)
Развилка
Вводится номер месяца. Программа возвращает его название.

Код:

CONST
 Month:ARRAY[1..12] of STRING=('January',
                              'February',
                              'March',
                              'April',
                              'May',
                              'June',
                              'July',
                              'August',
                              'September',
                              'October',
                              'November',
                              'December');
Var
 n:BYTE;
Begin
 Write('Enter the number of month ');
 ReadLn(n);
 WriteLn(Month[n]);
 ReadLn;
End.


GrandLeon 27.01.2010 17:11

Очень на вас рассчитываю, ибо препод злойстный гад с проблемами в личной жизни... объясняет словно мы должны читать его мысли наперед... вообщем .. =( я ни чего не шарю в турбопаскале. Пожалуйста помогите. (((

Vladimir_S 27.01.2010 17:12

Вот - два гениальных решения задачи века. :D:D:D

GrandLeon 27.01.2010 17:12

Vladimir_S оуу... спасибо огромное!!!

Vladimir_S 27.01.2010 17:20

Цитата:

Сообщение от GrandLeon (Сообщение 287441)
Vladimir_S оуу... спасибо огромное!!!

А чего же только мне? У DDS тоже правильно, хоть и несколько по-другому.

DDS 27.01.2010 17:28

Задача 2
Код:

Uses crt;
Const n=15;
Var i,j:byte;
    a:array[1..n]of integer;
    p:integer;
Begin
Clrscr;
Randomize;
  For i:=1 to n do
  A[i]:=random(100)-50;

  For i:=1 to n do
  Write(a[i]:5);
 Writeln;
 For i := n downto 2 do
        For j := 2 to i do
          if A[j] < A[j-1] then
            begin
              p := A[j];
              A[j] := A[j-1];
              A[j-1] := p;
            end;

  For i:=1 to n do
  If a[i]>0 then write(a[i]:5);
 End.


DDS 27.01.2010 17:32

Задача 3
Код:

Var
      text:string;
      i,k:byte;
      s:char;
 Begin
      s:=' ';
      k:=1;
      ReadLn(text);
      For i:=1 to length(text) do
        If text[i]=s then k:=k+1;
      Writeln(k);
End.


Long Cat 27.01.2010 17:35

DDS, у вас ошибка в решении задачи 3, сами найдете?

GrandLeon 27.01.2010 17:39

Сори обделил вниманием ^.^
DDS и вам большое спасибо!!! ))))

DDS 27.01.2010 17:42

Long Cat
Просмотрел программу - вродк работает правильно...
Сдаюсь, не знаю где ошибка...

Long Cat 27.01.2010 17:46

Переменная k не инициализируется после запуска программы. Это означает, что есть ненулевая вероятность того, что в ней сразу после запуска программы будет не 0, а неизвестно что.
Так что нужно добавить строчку k:=1 и убрать добавление 1 после подсчета.

DDS 27.01.2010 17:49

Long Cat
Спасибо за подсказку!

GrandLeon 27.01.2010 18:15

Спасибо всем большое!!! =)

Если вам не сложно, могли бы еще пару заданий сделать. Я сделал но мало ли, может у меня есть ошибки, хотелось бы для сравнения еще примеров... пожалуйста ))

GrandLeon 27.01.2010 18:18

Линейные
Вычислите периметр и площадь прямоугольного треугольника по длинам двух его катетов.

Цикл
Программа выводит квадраты всех натуральных чисел от 1 до заданного N

AlexZir 27.01.2010 18:28

Код:

program triang;
var a, b, c, p, s: real;
begin
writeln('Input a >');
readln(a);
writeln('Input b >');
readln(b);
c:=sqrt(sqr(a)+sqr(b));
p:=a+b+c;
s:=(a*b)/2;
writeln('S=',s);
writeln('P=',p);
readln
end.


AlexZir 27.01.2010 18:28

Код:

program kvadr_nat;
var i, n: integer;
begin
write('Input N >');
readln(n);
for i:=1 to n do
writeln(i,'^2=',sqr(i));
readln
end.


GrandLeon 27.01.2010 18:49

AlexZir клёва )) спасибо...

Всем большое спасибо! Выручили! ^.^

GrandLeon 27.01.2010 19:06

Что то программа №2 не работает =(
долго мучился так и не понял почемуСсылка удалена
подскажите в чем проблема ((

AlexZir 27.01.2010 19:18

Командой (неправильно написанной, кстати)
A[i]:=random(100)-50;
вы целочисленной переменной присваиваете вещественное значение, попробуйте использовать целочисленное деление или округление до целого значения.

Для справки: функция random возвращает значение с плавающей точкой из интервала (0;1).

GrandLeon 27.01.2010 19:43

Вложений: 1
Вложение 140048

:(..........

AlexZir 27.01.2010 20:02

Попробуйте тогда функции round() или trunc(), чтобы значения округлить, хотя их использование не приветствуется. Это точно сработает, ибо проверил :)
Код:

a[i]:=trunc(random*100-50);
И еще, ответьте, в какой именно строке показывает ошибку? Какая строка подсвечивается?

GrandLeon 27.01.2010 20:32

Ну вот заменил :confused:Ссылка удалена

А в прошлый раз строка " A[i]:=random(100)-50; "

GrandLeon 27.01.2010 20:33

Блин что-то я туплю (

AlexZir 27.01.2010 20:42

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

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

GrandLeon 27.01.2010 20:57

Выложи тогда пожалуйста сюда свой вариант программы.

Vladimir_S 27.01.2010 21:46

Так, позвольте уж и мне подключиться. По поводу задачи 2. Погонял. НИКАКИХ проблем, ошибок и т.п. Внес незначительные абсолютно непринципиальные поправки:
1. Добавил вывод упорядоченного по возрастанию массива.
2. Добавил останов в конце.
3. Причесал "лесенки" для удобочитаемости.
Листинг:
Код:

Uses crt;
Const n=15;
Var
 i,j:byte;
 a:array[1..n] of integer;
 p:integer;
Begin
 Clrscr;
 Randomize;
 For i:=1 to n do
  A[i]:=random(100)-50;

 For i:=1 to n do
  Write(a[i]:5);
 Writeln;

 For i := n downto 2 do
  For j := 2 to i do
  if A[j] < A[j-1] then
    begin
    p:= A[j];
    A[j]:= A[j-1];
    A[j-1]:= p;
    end;

 For i:=1 to n do
  Write(a[i]:5);
 Writeln;

 For i:=1 to n do
  If a[i]>0 then write(a[i]:5);

 ReadLn;
End.

Результат работы программы:
http://www.tehnari.ru/imagehosting/2...07b93a73fb.jpg
Так что уж и не знаю, что и думать. Вероятно, и впрямь транслятор лажит.

GrandLeon 27.01.2010 21:53

Ну главное что работает ))) спс))


Часовой пояс GMT +4, время: 02:10.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.