Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/27: Рейтинг темы: голосов - 27, средняя оценка - 4.56
0 / 0 / 1
Регистрация: 23.01.2010
Сообщений: 45

Сократить обыкновенные дроби и найти наименьшую из них.

23.01.2010, 09:25. Показов 5766. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ув. Люди помогите ... Извеняюсь за название темы, но сейчас у меня зачет ... были еще две задачи 1 и 2, но я их решил, а эти пока, что не могу
3. Обыкновенная дробь задается парой целых чисел p и q (дробь p/q). Сократить эту дробь и вывести на экран сокращенную дробь в том же виде, т.е. в виду двух чисел. Например: 8\12=2\3. Написать программу, которая обрабатывала бы любое количество пар чисел и находила бы среди них наименьшую дробь.
4. Треугольник задается координатами своих вершин. По двум треугольникам определить лежит ли один из них в другом. Если да, вычеслить площадь той части внешнего треугольника, которая не принадлежит внутрениму треугольнику.
5. В заданой строке S найти количество вхождений каждого символа и удалить все повторные вхождения символов. Обрабатывать любое количество вариантов данных

Добавлено через 58 минут
Всё еще жду помощи, не могу справиться ...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.01.2010, 09:25
Ответы с готовыми решениями:

Найти для натур. N находит все обыкновенные несократимые дроби со знаменателем не превосходящим N
Всем доброго вечера!!!! Задачка такая: Составить программу, которая для заданного натурального числа N находит все обыкновенные...

Составить программу, сокращающую обыкновенные дроби
1.Составить программу, сокращающую обыкновенные дроби. 2.Бизнесмен взял ссуду m тысяч рублей в банке под 20% годовых. Через сколько лет...

Составить программу, сокращающую обыкновенные дроби
1.Составить программу, сокращающую обыкновенные дроби. 2.Создайте двумерный массив целых чисел. Удалите из него строку и столбец, на...

16
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.01.2010, 09:48
3.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
uses crt;
type
Natur = 1..high(longInt);{натуральные числа типа longint}
Frac = record
       p:integer; {Числитель дроби}
       q:Natur {Знаменатель дроби}
       end;
mass=array[1..100] of Frac;
{создание масива дробей}
procedure Vvod(var m:mass; var n:integer);
var i:integer;
begin
write('Введите размер массива - ');
readln(n);
writeln('Исходный массив:');
for i:=1 to n do
 begin
  m[i].p:=random(9)+1;
  m[i].q:=random(9)+1;
  write(m[i].p,'/',m[i].q,'  ');
 end;
writeln;
end;
{нахождение НОД}
function Nod(a,b:integer):integer;
begin
while a<>b do
if a>b then a:=a-b else b:=b-a;
Nod:=a
End;
{сокращение дробей}
procedure Sokr(var a:frac);
var d:Natur;
begin
d:=Nod(a.p,abs(a.q));
a.p:=a.p div d;
a.q:=a.q div d;
end;
{сравнение дробей по величине}
function Menshe(a,b:Frac):boolean;
begin
 Menshe:=a.p*b.q < a.q*b.p
end;
{вывод массива дробей после сокращения на экран}
procedure Vyvod(var m:mass;n:integer);
var i:integer;
begin
writeln('Массив после сокращения:');
for i:=1 to n do
 begin
  Sokr(m[i]);
  write(m[i].p,'/',m[i].q,'  ');
 end;
writeln;
end;
{нахождение наименьшей дроби}
procedure Min(m:mass;n:integer;var mn:frac);
var i:integer;
begin
mn:=m[1];
for i:=1 to n do
if Menshe(m[i],mn) then mn:=m[i];
end;
var a:mass;
    n:integer;
    mn:frac;
begin
clrscr;
randomize;
Vvod(a,n);
Vyvod(a,n);
Min(a,n,mn);
write('Наименьшая дробь= ',mn.p,'/',mn.q);
readln
end.
2
0 / 0 / 1
Регистрация: 23.01.2010
Сообщений: 45
23.01.2010, 09:56  [ТС]
Спасибо, 4 решил, сейчас 5 решаю, не много не получается

Добавлено через 7 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
program xX;
var i:integer;c:char;s:string;
begin
writeln('vvedite simvol')
readln(c)
writeln('vvedite stroky')
readln(s)
while i<length(s) do
S[1]=C;=>cr:=cr+1
if cr>1 then delete(S,i,1):else i:=i+1
end
Вот пока, как то так представляю, поправте меня, знаю ... где то есть ошибки ...
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.01.2010, 10:05
5.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
uses crt;
var s:string;
    a:array[byte] of byte;{массив встречаемости символов в строке}
    i,j,n:byte;
    c:char;
begin
clrscr;
writeln('Vvedite text:');
readln(s);
n:=length(s);
for i:=1 to 255 do a[i]:=0;{обнулим исходный массив}
for i:=1 to 255 do
for j:=1 to n do
if chr(i)=s[j] then a[i]:=a[i]+1;{если символ, соответствующий коду
ячейки массива есть в строке, в эту ячейку добавляем 1}
writeln('Встречаемость символов:');
j:=0;
for i:=1 to 255 do
if a[i]>0 then{если ячейка не пустая}
 begin
  writeln(chr(i),' - ',a[i]);{выводим символ и количество его вхождений}
  j:=j+1;
  if j mod 22=0 then readln;{если не входят на экран, то после 22 задержка}
 end;
{удаление повторов}
i:=1;
while i<=length(s) do
 begin
  c:=s[i];{запомнили символ}
  for j:=length(s) downto i+1 do {идем с конца строки не доходя до него}
  if s[j]=c then delete(s,j,1);{если совпал, удаляем}
  i:=i+1;{следующий символ2}
 end;
writeln('Строка без повторов:');
write(s);
readln
end.
Добавлено через 54 секунды
Цитата Сообщение от Risk Посмотреть сообщение
;=>
Это где Вы такое вычитали? Вообще-то пишут >=

Добавлено через 1 минуту
Risk, А Вы точно решили задачу 4? Или нашли где-то?
1
0 / 0 / 1
Регистрация: 23.01.2010
Сообщений: 45
23.01.2010, 10:12  [ТС]
Сначало мы пишем на листочке для препода, потом он допускает до компа, идет оформление в паскале и после этого зачет, мне помогли 4 =) у меня паскаль только 1 раз будет и об этом потом можно забыть дльше С ++, учусь я на заочке, знание после школы нулевые Ну было у нас преподования в школе по поскалю ворд плять изучали
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
program xX;
var cr:intiger;i:integer;c:char;s:string;
begin
writeln('vvedite simvol')
readln(c)
writeln('vvedite stroky')
readln(s)
i:=1;
cr:=0:
while i<length(s) do
begin
if S[1]=C then cr:=cr+1;
if cr>1 then delete(S,i,1)else i:=i+1;
end;
Вот подкоректировал, дальше буду додумывать время есть еще, но просто огромное спасибо за 3 задание хД
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.01.2010, 10:28
Risk, А чем Вам не подходит мое решение пятой задачи? Это стандартные способы определения встречаемости и удаления повторов.
0
0 / 0 / 1
Регистрация: 23.01.2010
Сообщений: 45
23.01.2010, 10:33  [ТС]
Puporev да все подходит =) Спасибо, но у меня сча нету ключей от дома хД живу как бы квартирантом =) И поэтому тяну время в экзаменаторской, в теплом уютном помещение=)
А вот еще одна задача над которой стоит задуматься, дело в том, что я с трудом представляю, как её начать делать.
В строке состоящей из слов и знаков препинания) пробел . : , ! ? - ; ), проверить, что все слова одинаковые.
Программа должна обрабатывать любое количество вариантов данных.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.01.2010, 10:36
А скобка только закрывающая?
0
0 / 0 / 1
Регистрация: 23.01.2010
Сообщений: 45
23.01.2010, 10:39  [ТС]
Извеняюсь за ранее допущиную опечатку =)
В строке состоящей из слов и знаков препинания (пробел . : , ! ? - ; ), проверить, что все слова одинаковые.
Программа должна обрабатывать любое количество вариантов данных.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.01.2010, 10:57
Т.е. скобки не входят в число знаков, они просто обрамляют знаки в условии?
Но в моем варианте решения это не принципиально, можете написать хоть какие знаки.
Есть разные способы решения таких задач, но мне нравится этот, или привык просто.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
uses crt;
const zn=[' ',':',',','!','?','-',';'];//знаки, которые будем считать разделителями
var s,s1,s2:string;
    i,j,k,p:byte;
begin
clrscr;
writeln('Строка:');
readln(s);
s:=s+' ';//добавим в конец пробел
for i:=1 to length(s) do
if s[i] in zn then s[i]:=' ';//заменим все разделители на пробел
while pos('  ',s)>0 do//удалим повторяющиеся пробелы, если 2 пробела рядом(в апостровах обязательно 2 пробела))
delete(s,pos('  ',s),1);//один удаляем
if s[1]=' ' then delete(s,1,1);{/если первый символ пробел, его тоже удаляем, получили строку вида 
слово пробел слово пробел}
s1:=copy(s,1,pos(' ',s)-1);//копируем первое слово до пробела
delete(s,1,pos(' ',s));//удаляем его
k:=0;//фиксатор несовпадения слов
while pos(' ',s)>0 do//пока в строке есть пробелы
 begin
  s2:=copy(s,1,pos(' ',s)-1);//копируем первое слово
  if s2<>s1 then//если не совпало с первым
   begin
    k:=1;//фиксируем
    break;//выходим из цикла
   end;
  delete(s,1,pos(' ',s));//удаляем просмотренное слово, следующее первое
 end;
if k=1 then write('Не все слова одинаковые')
else write('Все слова одинаковые');
readln
end.
1
0 / 0 / 1
Регистрация: 23.01.2010
Сообщений: 45
23.01.2010, 11:10  [ТС]
Спасибо Puporev за решение, но ты бы мог решить 5 задание но без массивов, типо продолжить то, что я делал ??? =) просто я мальца дальше запутался ...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
program xX;
var cr:intiger;i:integer;c:char;s:string;
begin
writeln('vvedite simvol')
readln(c)
writeln('vvedite stroky')
readln(s)
i:=1;
cr:=0:
while i<length(s) do
begin
if S[1]=C then cr:=cr+1;
if cr>1 then delete(S,i,1)else i:=i+1;
end;
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.01.2010, 11:16
Risk, Без массивов неудобно, сплошной геморрой. Посмотрите как решают это в учебниках, именно так. Все программы на статистику вхождений решают через массивы.

Добавлено через 2 минуты
Цитата Сообщение от Risk Посмотреть сообщение
В заданой строке S найти количество вхождений каждого символа
Нужно же не один символ, как Вы хотите, а все, какие есть в строке.
0
0 / 0 / 1
Регистрация: 23.01.2010
Сообщений: 45
23.01.2010, 11:20  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
Risk, Без массивов неудобно, сплошной геморрой. Посмотрите как решают это в учебниках, именно так. Все программы на статистику вхождений решают через массивы.

Добавлено через 2 минуты

Нужно же не один символ, как Вы хотите, а все, какие есть в строке.
Эм ... препод сказал типо с массивами нельзя А про букву S это так в задание написано
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.01.2010, 11:22
Вот написал, можем, когда захотим.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
program xX;
uses crt;
var s:string;
    c:char;
    i,j,k:byte;
begin
clrscr;
writeln('vvedite stroky');
readln(s);
for i:=1 to length(s) do
 begin
  c:=s[i];
  k:=0;
  for j:=length(s) downto i+1 do
  if s[j]=c then
   begin
    k:=k+1;
    delete(s,j,1);
   end;
  writeln(s[i],'-',k);
 end;
writeln;
write(s);
readln
end.
1
0 / 0 / 1
Регистрация: 23.01.2010
Сообщений: 45
23.01.2010, 12:13  [ТС]
Ох жесть мне препод всю работу запорол, по 3 заданию тоже массивы, хотя он ее допустил и по 4 ,мне помогали с массивами и 1, плять переделывать сча 1, 3, 4 ппц ... какого черта он сразу же не сказал, что с масивами нельзя Не можешь сейчас помочь с 3 ? или 4 ? Блин я этот экзамен не когда не сдам, что за фегня

Добавлено через 43 минуты
Всё зачет ... экзамен сдан фух, переделал Все спасибо =)
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.01.2010, 12:54
Ну и хорошо, все-таки выложу вариант как по заданию, просто уходил обедать.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
uses crt;
type
Natur = 1..high(longInt);{натуральные числа типа longint}
Frac = record
       p:integer; {Числитель дроби}
       q:Natur {Знаменатель дроби}
       end;
{ввод дробей}
procedure Vvod(var a,b:frac);
var i:integer;
begin
writeln('Введите числители и знаменатели двух дробей ');
writeln(' Первая дробь:');
write('  числитель=');readln(a.p);
write('  знаменатель=');readln(a.q);
writeln(' Вторая дробь:');
write('  числитель=');readln(b.p);
write('  знаменатель=');readln(b.q);
clrscr;
write(a.p,'/',a.q,'  ',b.p,'/',b.q);
writeln;
end;
{нахождение НОД}
function Nod(a,b:integer):integer;
begin
while a<>b do
if a>b then a:=a-b else b:=b-a;
Nod:=a
End;
{сокращение дробей}
procedure Sokr(var a:frac);
var d:Natur;
begin
d:=Nod(a.p,abs(a.q));
a.p:=a.p div d;
a.q:=a.q div d;
end;
{сравнение дробей по величине}
function Menshe(a,b:Frac):boolean;
begin
 Menshe:=a.p*b.q < a.q*b.p
end;
{вывод дробей и результата после сокращения на экран}
procedure Vyvod(var a,b:frac);
begin
writeln('Дроби после сокращения:');
Sokr(a);
Sokr(b);
writeln(a.p,'/',a.q,'  ',b.p,'/',b.q);
if Menshe(a,b)then write('меньше дробь ',a.p,'/',a.q)
else if Menshe(b,a) then write('меньше дробь ',b.p,'/',b.q)
else write('дроби равны');
end;
var  a,b:frac;
     c:char;
begin
clrscr;
randomize;
writeln('Вводите пары дробей, окончание ввода Esc');
repeat
clrscr;
Vvod(a,b);
Vyvod(a,b);
readln;
writeln('Введите следующую дробь или Esc для выхода');
c:=readkey;
until c=#27;
end.
1
0 / 0 / 1
Регистрация: 23.01.2010
Сообщений: 45
23.01.2010, 17:43  [ТС]
Puporev, спасибо огромное еще раз, без тебя врятле бы я все решил нормально =) Не ну препод конечно придрался ко мне сильно, ну не чего благо все сдано, кстате по поводу 5 задание он до меня докапывался еще, говорит, что через for это не правельно составлено, хотя в задание вообще не чего не сказано, потом сказал, что надо через while не ну все таки все зачел =) нормально, спасибо еще раз =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.01.2010, 17:43
Помогаю со студенческими работами здесь

Вывести в порядке возрастания все обыкновенные несократимые дроби
91. Вывести в порядке возрастания все обыкновенные несократимые дроби, заключенные между 0 и 1, знаменатели которых не превышают 15....

Составьте программу, складывающую две обыкновенные дроби
Помогите, пожалуйста, Составить программу, складывающую две обыкновенные дроби.

Составьте программу, делящую две обыкновенные дроби
. Составьте программу, делящую две обыкновенные дроби.

Даны числа, представляющие числитель и знаменатель некоторой дроби. Сократить эту дробь
Всем доброго времени суток!! Решите задачу)) Даны натуральные числа т и п, представляющие числитель и знаменатель некоторой дроби....

Обыкновенные дроби.
Даны две дроби A/B и C/D (A, B, C, D – натуральные числа). Составить программу вычитания этих дробей. Результат должен быть несократимой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru