Seo Форум Smo советы Дорвеи

Объявление

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Seo Форум Smo советы Дорвеи » Turbo Pascal 7.0 Delphi7 » Решение задач на turbo pascal , турбо паскаль, решебник по информатике


Решение задач на turbo pascal , турбо паскаль, решебник по информатике

Сообщений 1 страница 30 из 123

1

Решаю  задачу на турбо паскале 10-11 класса. 
Даже гости могут написать пост. Если я на сайте решаю , если нет то когда зайду !!! Так что бесполезно писать пожалуйста или подобные им просьбы

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

0

2

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

1. Найти сумму элементов одномерного массива вещественных чисел, меньших заданного числа. Найти произведение квадратов не нулевых элементов массива
2. Подсчитать количество слов, начинающихся на большую букву и содержащих хотя бы один знак. Напечатать все слова, содержащие две рядом стоящие буквы. (большие и малые буквы не различаются)
3. Заполнить файл последовательного доступа f целыми числами, полученных с помощью генератора случайных чисел. Получить в файле g:
а) те компоненты файла f, которые являются четными;
б) те компоненты файла f, которые делятся на m и не делятся на n;
c) все компоненты файла f, исключив повторные вхождения чисел, и вывести файл g на печать.

0

3

1. Найти сумму элементов одномерного массива вещественных чисел, меньших заданного числа. Найти произведение квадратов не нулевых элементов массива

.....
for i:=1 to n do begin
writeln(a[i]-?); readln(a[i]); end;{заполнение одномерного массива}
for i:=1 to n do
if a[i]<chislo then sum:=sum+a[i]; {chislo - это заданное число }
writeln(sum);
readln;
end.
------------------
.....
for i:=1 to n do
if a[i]<>0 then begin {пока a[i] не равно нулю выполняем условие }
kv:=sqr(a[i]);
proiz:=proiz*kv {важно proiz не надо в начале приравнять к нулю , можно к 1 }
end;
writeln(proiz);
readln;
end.

2. Подсчитать количество слов, начинающихся на большую букву и содержащих хотя бы один знак. Напечатать все слова, содержащие две рядом стоящие буквы. (большие и малые буквы не различаются)


Надо будет подумать , тут наверное без таблицы ASCII не обойтись

3. Заполнить файл последовательного доступа f целыми числами, полученных с помощью генератора случайных чисел. Получить в файле g:
а) те компоненты файла f, которые являются четными;
б) те компоненты файла f, которые делятся на m и не делятся на n;
c) все компоненты файла f, исключив повторные вхождения чисел, и вывести файл g на печать.

Решу задачу как только появишься в форуме и напишешь что нибудь , а то я порешу зря. Я такие задачи решал даже по геморнее

0

4

Спасибо за быстрый ответ, но есть еще проблема, как в начале программы объявлять переменную типа масив, в моем пособии есть только с диапозоном, типа:
var a:array [1..20] of integer;
что означает переменная n? Еще вопрос, как заполнятся должен массив в первом задании. Проблема в том, что я это как-то смутно представляю.

Во втором задании я накопал алгоритм, программа запускается, только не работает т.е. не считает кол-во слов на заглвную букву.
Проверьте, что я там мог упустить?

const
symbols = ['+', '-', ':', '.', '*', '/','>', '=', '<'];

{Есть-ли в слове одинаковые соседнии буквы}
function isHaveEq(data : string) : Boolean;
var
flag : Boolean;
i : Integer;
begin
flag := false;

i := 1;

while (i <= length(data)) and (not flag) do
begin
{Регистр не важен}
if ( (data[i] = data[i - 1]) or (ord(data[i])+32 = ord(data[i - 1])) or
(ord(data[i]) = ord(data[i - 1])+32)
)
and
( ( (data[i] >= 'a') and (data[i] <= 'z') ) or
( (data[i] >= 'A') and (data[i] <= 'Z') )
) then
flag := true;

i := i + 1;
end;

isHaveEq := flag;
end;

{Буква заглавная?}
function isCapital(data : char) : Boolean;
begin
if (ord(data) >= 65) and (ord(data) <= 90) then
isCapital := true
else
isCapital := false;
end;

{Есть-ли в слове символы}
function isHaveSymbols(data : string) : Boolean;
var
flag : Boolean;
i : Integer;
begin
flag := false;
i := 1;

{Go to first space}
while (not flag) and (i <= length(data)) do
begin
if data[i] in symbols then
flag := true;

inc(i);
end;

isHaveSymbols := flag;
end;

var
calnum, preqv : Boolean;
data : string;
i : Integer;
count : Integer;
wd : string; {буффер}
whatDo : Integer; {Так, фигня}

begin
calnum := true;
preqv := true;

count := 0;
wd := '';

writeln('Чего надо? (1 - кол-во слов, 2 - слова с один. сос. буквами, все)');
readln(whatDo);

case whatDo of
1: preqv := false;
2: calnum := false;
end;

write('Строка: '); readln(data);

{Прибавляем к строке пробел}
data := data + ' ';
i := 1;

while i <= length(data) do
begin
{если встречаю '**', оканчиваю цикл}
if (data[i] = '*') and (data[i + 1] = '*') and
((data[i + 2] = ' ') or (i + 2 >= length(data))) then
i := length(data) + 1;

if data[i] <> ' ' then
wd := wd + data[i]
else
begin
if (isCapital(wd[1])) and (calnum) and
(isHaveSymbols(wd)) then
inc(count);

if (isHaveEq(wd)) and (preqv) then
writeln(wd);

wd := '';
end;

i := i + 1;
end;

if calnum then
writeln('Кол-во слов, начинающ. с заглавной, и имеющих символы ',count);
end.

0

5

Ну как сказать n задаем мы
например
var i,n:integer; a:array[1..1000] of integer;
begin
writeln('Введите длину массива');
readln(n);
for i:=1 to n do
.......

n у нас типо длины массива
Ну конечно тупо но что поделаешь это же 70 годы  , если я не ошибаюсь.

Вот я насчет 2 задачи сомневаюсь
....
for i:=1 to n do
if a[i]<>0 then begin {пока a[i] не равно нулю выполняем условие }
kv:=sqr(a[i]);
proiz:=proiz*kv {важно proiz не надо в начале приравнять к нулю , можно к 1 }
kv:=0;
end;
writeln(proiz);
readln;
end.

Не знаю , наверное kv надо приравнять к нулю после того как мы умножим  красным цветом написал  , среды у меня сейчас нет , в основном на делфи пишу программки

0

6

Можно 2 задачу решать сравнением брат первый символ из слово и сравнить его с символами
const bykvi='A','B'......'Z'; var prov:char;
.....
for i:=0 to length(text) do
if text[i]=' ' then begin  s:=copy(text,i+1,1);{программа не будет проверять первое и последное  слово, а так вроде должна работать }
if pos(s,bykvi)<>0 then i:=i+1;
for prov:='A' to 'Z' do
if s=prov then i:=i+1;

Если не работает if pos(s,bykvi)<>0 then i:=i+1;
попробуйте
for prov:='A' to 'Z' do
if s=prov then i:=i+1; должно работать.

На счет первого и последного слово можно дописать код подумаю , завтра напишу если мысли будут.

PS На олимпиаде а так и делал , в виде диапазонов , например

if chislo<5 then {код программы}
if chislo>5 then  {код программы}

Ну мне за это дали макс балла

0

7

Спасибо за помощь, разобрался с массивами боле-менее и понял как с ними программа работает. Наука интересная, жаль, что времени не хватает. Завтра вечерочком поломаю голову над второй задачкой, пока она у меня не работает. Вот вопрос, программа при запусте может проводить операции с кириллицей или обязательно латиница должна быть, а может все зависит от параметров ее алгоритма?

0

8

Доработал программку,проверял на турбо паскале 7.0

var s,s1,text:string; i,j:integer; b:char;
begin
writeln('text');
readln(text); j:=0 ;
s1:=copy(text,1,1);
for i:=0 to length(text) do
if text[i]=' ' then begin  s:=copy(text,i+1,1);
for b:='A' to 'Z' do
if (s=b)   then j:=j+1;
end;
for b:='A' to 'Z' do
if s1=b then j:=j+1;
writeln(j);
readln;
end.

PS У меня всегда были проблемы с подпрограммами , мне легче программировать без подпрограмм  :)

0

9

Добрый вечер. Оказывается есть более простой вариант. Я ее запустил, она работает. Только, мне кажется, что она не видит пробелы. Она считает только первое слово, а когда вводишь строку из нескольких слов, то не считает. Тем более задание усложнено тем, что нужно поситать слова с Заглавной бувой и содержащих какой-либо знак типа (<,>,+,-,/,*,=,\,%,$,@,!,?).
Далле эта программа должна выводить список слов с, содержащий две рядом стоящие буквы.

интерфейс примерно должен быть таким, если не ошибаюсь (под двумя рядом стоящими буквами я понимаю слова с удвоенными согласными) типа:

text
Dfds- fdsff erde* Vv$ F/gge
slova c zagl. Bukv and znakom - 3
slova c 2 bykv - fdsff, Vv$, F/gge

0

10

Хотя често я не очень представляю, как должен интерфейс работать в этой программке, все это мои смутные догадки

0

11

Помогите пожалуйста решить задачки, в четверг защита практики
1. определить сколько метров метки нужно, чтобы загородить большой сад поти примоугольной формы со сторонами а,b, и сколько удобрений (d) надо купить, если 1м2  требуется с кг? (p = 2(a+b), d= abc)

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

3. Для заданного номера месяца вывести на экране название времени года. Для решения задачи используйте алгоретмическую конструкцию ”выбор” (case).

4. Решить квадратное уравнение (а ≠ 0) ах2+bx+c=0. Если b<0, то вывести сообщение ”корней нет” .

5. Элементы числовой последовательности описываются формулой аі = 3+cos2і. Вичислить и вывести на экран номера и значения первых n = 10 элементов.

6. Пусть элементы числовой последовательности описываются формулой аі =1-2cos3і, і = 1,2,…,12. Вывести на экран номера только положительных элементов.

7. Один доллар стоит 8,15 грн. Вывести на экран в виде таблицы стоимость 1,2…10 долларов.

8. Сколько элементов последовательности аі =1- cosі, где і = 1,2,…,20, удовлетворяют условию 0<аі <1?

9. Напишите программу для вычисления периметра (p) и площяди (S) треугольника с тремя известными сторонами a,b,c. Программа должна проверять правильность исходных данных, то есть, существует ли треугольник.

0

12

Нина написал(а):

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

program n2;
var chislo1,chislo2:real; {точно не уверен может типл integer если числа например (1,5,9 ...) если (1.6 , 5.7 ) то это будет типо real}
begin
writeln('chislo1,chilso2-?');
readln(chislo1,chilso2);
if chislo1>chislo2 then writeln('max',chislo1,' min',chislo2) else
if chislo1<chislo2 then writeln('max',chislo2,'min', chislo1) else writeln('oni ravny');
readln;
end.

Нина написал(а):

3. Для заданного номера месяца вывести на экране название времени года. Для решения задачи используйте алгоретмическую конструкцию ”выбор” (case).

program n3;
var i:integer;
begin
writeln('i-?');
readln(i);
case i of
3..5:writeln('sprint');
6..8:writeln('summer');
9..11:writeln('осень');
12,1,2:writeln('зима');
else writeln('Вы что курнули'); {ну это на всякий случай , это показывается тогда когда ввели число больше 12 }
end;
readln;
end.

Нина написал(а):

4. Решить квадратное уравнение (а ≠ 0) ах2+bx+c=0. Если b<0, то вывести сообщение ”корней нет” .

program n4;
var a,b,c,d,x1,x2:real;
begin
writeln('a,b,c');
readln(a,b,c);
d:=(b*b)-(4*a*c);
if d<0 then begin writeln('kornet net'); readln; exit; end;
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
writeln('x1=',x1 '  x2',x2);
readln;
end.

Нина написал(а):

5. Элементы числовой последовательности описываются формулой аі = 3+cos2і. Вичислить и вывести на экран номера и значения первых n = 10 элементов.

program n5;
var  i,n:integer ;
begin
writeln('n');
readln(n);
for i:=1 to n do
write(' ',3+ cos(2*i):2:2); {если надо в столбик то пишем "writeln(' ',3+ cos(2*i):2:2)". Если что 2:2 в конце округляет до сотых}
readln;
end.

Нина написал(а):

7. Один доллар стоит 8,15 грн. Вывести на экран в виде таблицы стоимость 1,2…10 долларов.

подумаю над этим что то в голову мысли не приходят

Нина написал(а):

9. Напишите программу для вычисления периметра (p) и площяди (S) треугольника с тремя известными сторонами a,b,c. Программа должна проверять правильность исходных данных, то есть, существует ли треугольник.

program n9;
var a,b,c,per,p,s:real;
begin
writeln('a,b,c');
readln(a,b,c);
if ((a+b<c) or (b+c<a) or (c+a<b) then begin  writeln('такого треугольника не существует даже на МАРСЕ '); readln; end;
p:=(a+b+c)/2
s=sqrt(p*(p-a)*(p-b)*(p-c));
per:=a+b+c;
writeln('P=',per:2:2);
writeln('S=',s:2:2);
readln;
end.

1. определить сколько метров метки нужно, чтобы загородить большой сад поти примоугольной формы со сторонами а,b, и сколько удобрений (d) надо купить, если 1м2  требуется с кг? (p = 2(a+b), d= abc)
8. Сколько элементов последовательности аі =1- cosі, где і = 1,2,…,20, удовлетворяют условию 0<аі <1?

Вообще не понял , можно по подробнее написать не понял что надо делать

PS На среде проверял некоторые исходники , может быть там ошибки ну с точками и ";" рекомендую проверять

0

13

Dictor(prokopeck@mail.ru) написал(а):

Добрый вечер. Оказывается есть более простой вариант. Я ее запустил, она работает. Только, мне кажется, что она не видит пробелы. Она считает только первое слово, а когда вводишь строку из нескольких слов, то не считает. Тем более задание усложнено тем, что нужно поситать слова с Заглавной бувой и содержащих какой-либо знак типа (<,>,+,-,/,*,=,\,%,$,@,!,?).
Далле эта программа должна выводить список слов с, содержащий две рядом стоящие буквы.

интерфейс примерно должен быть таким, если не ошибаюсь (под двумя рядом стоящими буквами я понимаю слова с удвоенными согласными) типа:

text
Dfds- fdsff erde* Vv$ F/gge
slova c zagl. Bukv and znakom - 3
slova c 2 bykv - fdsff, Vv$, F/gge

Можно узнать , где ты учишься ? Что то она больно сложная

0

14

Спасибо большое условие задач перепроверю и выложу завтра. Еще раз спасибо.

0

15

В Ульяновском госудаственном педагогическом университете им. И.Н.Ульянова на первом курсе по направлению физика/математика на очке. Пошел учиться поздно еще работаю, чтобы было на что существовать, родители живут в Сибири не помогают. Физику/математику выбрал, как наиболее легкие профили из всех, а на очку пошел, чтобы съекономить на обучении. Меня напрягает информатика, преподавательница говорит, что это мы должны проходить в школе, а я школу окончил в 2002, когда еще информатику не преподавали. Вот так разрываюсь на два фронта работаю и учусь, и времени просто обрез, я забыл когда вставал без будильника.
Это к слову.
По второй задачке там вместо текста нужно оперировать словами. Дожно быть что-то подобно такому:
if slovo[1] in ['A'..'Z'] then
for j:=2 to length(slovo)
begin
  if slovo[j] in ['.','=','/','*','+','-','<','>','!']
   then
    begin
     kolichestvo:=kolichestvo+1;
     break;
    end;
end;
только не знаю как текст по пробелам пожно разбить на слова:(

0

16

Dictor(prokopeck@mail.ru) написал(а):

только не знаю как текст по пробелам пожно разбить на слова:(

парсит

Я думаю откуда такие задачи , я еще 11 класс не закончил и помочь  врятли смогу  ^^ знаний не хватить

0

17

Посмотри третье мое задание с файлами, можешь справишься.

0

18

Мне кажется проще последнее задание можно сделать по каждому пункту по программке. Единственно в третьей советуют поступить таким образом, только я не догоняю, может у тебя получится:
Код проверки для третьего варианта (если использовать тип byte):

Код:
if not(x in mn)
then
  begin
   write(g,x);
   mn:=mn+[x];
  end;

0

19

Dictor(prokopeck@mail.ru) написал(а):

Посмотри третье мое задание с файлами, можешь справишься.

забыл про них

Я сделал генератор чисел для 50 чисел и рандомные числи не не превосходящие 100

3. Заполнить файл последовательного доступа f целыми числами, полученных с помощью генератора случайных чисел. Получить в файле g:
а) те компоненты файла f, которые являются четными;

var f,f1:text;
x,i:integer;
begin
assign(f,'1.txt');
assign(f1,'2.txt');
rewrite(f);
randomize;
for i:=1 to 50 do
write(f,random(100),' '); close(f) ;
rewrite(f1);
reset(f);
for i:=1 to 50 do begin
read(f,x);
if x mod 2=0 then write(f1,x,' '); end;
close(f1);
close(f);
readln;
end.

б) те компоненты файла f, которые делятся на m и не делятся на n;

var f,f1:text;
i,x,n,m:integer;
begin
writeln('m,n-?');
readln(m,n);
assign(f,'1.txt');
assign(f1,'2.txt');
rewrite(f);
randomize;
for i:=1 to 50 do
write(f,random(100),' '); close(f) ;
rewrite(f1);
reset(f);
for i:=1 to 50 do begin
read(f,x);
if ((x mod m =0) and (x mod n<>0)) then write(f1,x,' '); end;
close(f1);
close(f);
readln;
end.

Dictor(prokopeck@mail.ru) написал(а):

c) все компоненты файла f, исключив повторные вхождения чисел, и вывести файл g на печать.

Надо будет подумать

0

20

Seo
братан помоги пожалуйста решить задачу!!!
к завтрешнему утру надо

0

21

сурен
Скиньте условие, если Seo зайдет сегодня, то он решит.
Я этими делами не занимаюсь.

0

22

Приветик!
помоги! Реши задачу  в среду уже сдавать надо.

1) напечатать все слова, содержащие две рядом стоящие одинаковые буквы. (Большие и малые буквы не различаются).
2) определить количество наибольших не четных чисел. Если их нет, тогда выдать сообщение.

0

23

rezxas написал(а):

1) напечатать все слова, содержащие две рядом стоящие одинаковые буквы. (Большие и малые буквы не различаются).

Что то мозг не варить. Подумаю может что то в голову придет

rezxas написал(а):

2) определить количество наибольших не четных чисел. Если их нет, тогда выдать сообщение.

program n2 ;
var a:array[1..10] of integer; i,max:integer;
begin
max:=0;
for i:=1 to 10 do begin
writeln('a[',i,']=');
readln(a[i]); end;
for i:=1 to 10 do
if a[i] mod 2=1  then
if a[i]>max then max:=a[i];
if max=0 then writeln('takogo chisla net') else writeln(max);
readln;
end.

0

24

сурен написал(а):

1)Лаб 6
в вещественном массиве х1 х2 .. хn заменить нулем все отрицательные элементы предшествующие его максимальному элементу.

Вроде так
элементы предшествующие его максимальному элементу--- мне вот это не понятно. Приведи пример , допустим задаем 1 -5 -9 8 а результат будет 1 0 0 8

program n7  ;
var a:array[1..10] of integer; n,i:integer;
begin
writeln('n-?') ;
readln(n);
for i:=1 to n do
read(a[i]);
for i:=1 to n do
if a[i]<0 then a[i]:=0;
for i:=1 to n do
write(a[i],' ');
readln;
end.

0

25

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

0

26

Подсчитать количество слов, начинающихся на большую букву и содержащих хотя бы один знак. Напечатать все слова, содержащие две рядом стоящие буквы. (большие и малые буквы не различаются):

решение задачи:

uses
crt;
var
u,s,a1,a2: string;
ws: array[1..100] of string;
kol,l,i,j,q,x,y,z: integer;

begin
writeln('Введите строку');
readln(u);
l:= length(u);
a1:='abcdefghijklmnoprstvuwxyzабвгдеёжзийклмнопрстуфхцчшщбыъэюя'
a2:='ABCDEFGHIJKLMNOPRSTVUWXYZАБВГДЕЁЖЗЙИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ'
i:=1;
{Разбиение строки на "слова"}
q:=1;
z:=0;
s:='';
ws[1]:='';
for i:=1 to l do
  begin
   if u[i]<>' '
    then
     ws[q]:=ws[q]+u[i]
    else
     begin
      if ws[q]<>''
       then
        begin
         inc(q);
         ws[q]:='';
        end;
     end;
  end;

if ws[q]=''
  then
   z:=q-1
  else
   z:=q;

{Вывод "слов" - для теста, можно убрать}
writeln;
for i:=1 to z do
  writeln(ws[i]);
readln;

{Подсчет количества слов, начинающихся с большой буквы, и с символом}
kol:=0;

for i:=1 to z do
  begin
   s:=ws[i];
   if pos(s[1],a2)<>0
    then
     for j:=2 to length(s) do
      begin
       if s[j] in ['.',',','!','+','/','*','-','=','^','&','%','@']
        then
         begin
          kol:=kol+1;
          break;
         end;
      end;
  end;

writeln('Количество = ',kol);

{Вывод слов, в которых есть одинаковые буквы}
writeln;
for i:=1 to z do
  begin
   s:=ws[i];
   for j:=1 to length(s)-1 do
    begin
     x:=pos(s[j],a1) + pos(s[j],a2);
     y:=pos(s[j+1],a1) + pos(s[j+1],a2);
     if (x = y) and (x <> 0)
      then
       begin
        writeln(ws[i]);
        break;
       end;
    end;
  end;
readln;
end.

0

27

Dictor(prokopeck@mail.ru) написал(а):

Подсчитать количество слов, начинающихся на большую букву и содержащих хотя бы один знак. Напечатать все слова, содержащие две рядом стоящие буквы. (большие и малые буквы не различаются):

Спасибо, надо будет разбирать , вдруг в ЕГЭ такая задачка встретиться

0

28

Дан двумерный массив. Составить одномерный массив из номеров столбцов, где на главной диагонали число Фибоначчи. Оформить в виде процедуры или функции. Помогите пожалуйста.

0

29

Анна написал(а):

число Фибоначчи

по подробнее что это такое ?  :tomato:  просто такие числа не знаю
PS Еще лучше когда напишите пример.
типо
1 2 3 5
4 5 9 6
2 8 7 1

и будет резульатат 1 5 7 ну типо того

0

30

Seo написал(а):

по подробнее что это такое ?    просто такие числа не знаю

Числа Фибоначчи — числовая последовательность, первые два элемента которой равны 1, а каждый последующий равен сумме двух предыдущих.

0


Вы здесь » Seo Форум Smo советы Дорвеи » Turbo Pascal 7.0 Delphi7 » Решение задач на turbo pascal , турбо паскаль, решебник по информатике