Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Заказы "Сделайте все за меня"


Рекомендуемые сообщения

Не понял вопрос... брр-рр-рр!

Что значит загадочная фраза "Текст является десятичной записью числа, кратного кол-ву символов"?

Есть текст из букв и цифр. Мы считаем количество символов, потом мы должны найти десятичное число, которое кратно кол-ву символов.

А как может быть ТЕКСТ десятичной записью числа? Насколько я знаю числа записываются цифрами (ну еще бывает буквами - прописью, но про это здесь ни слова нет)

Расшифруйте мне пожалуйста эту загадочную фразу, а то я ее себе в подпись поставлю!

Ссылка на комментарий
Поделиться на другие сайты

Бумер:

Текст - это последовательность символов, в которую могут входить буквы, цифры, знаки препинания и т.д. В общем, то, из чего состоят в языках программирования типы символ и строка. То есть текст "123" - это все же текст, одно из толкований которого - это запись числа 123.

В этом примере число (123) не кратно количеству символов (3), а вот 122 было бы кратно количеству символов в его записи, т.е. 3.

neprogramist:

{$N+}var s:String[12]; k:Double; n:Integer;begin ReadLn(s);Val(s,k,n);WriteLn((Abs(Frac(k/Length(s)))<0.01)and(n=0));ReadLnend.

Pshuk:

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

Писать целую программу "электропианино" - это многовато :) . Как я понимаю, в основном там надо барабанить по клавишам и писать всякое оформление программы. Звуки генерируются просто, например, эта программка будет играть гамму.

uses CRT;var  i,j,t:Integer;const f:array[1..7] of integer=(262,294,330,349,392,440,494);begint:=1000;for i:=1 to 7 do begin Sound(f[i]);for j:=1 to 100 do Delay(t);Nosound endend.

Тут, правда, есть одно "но": насколько я помню, при запуске из Windows таймер Turbo Pascal работает неправильно (в несколько десятков раз быстрее), эта версия будет работать под Windows, а при запуске из DOS, скорее всего, придется убрать фрагмент for j:=1 to 100 do , который обеспечивает стократное увеличение задержки, указанной в Delay.

Ссылка на комментарий
Поделиться на другие сайты

ФАК мне помог! Вот и сама формула генерации звуков http://img524.imageshack.us/my.php?image=clipimage002mu1.gif

Hz - змінна типу Word, частота ноти в Гц;

Okt - змінна типу Integer, приймає значення від -3 до 4;

Nota - змінна типу Byte, приймає значення від 1 до 12.

СКЛ програму по этой формуле...

Ссылка на комментарий
Поделиться на другие сайты

Pshuk:

Программа пишется не по формуле. По формуле пишется только выражение в программе. А вокруг сто одежек, и все без застежек. Сама формула в записи Паскаля будет выглядеть так: Hz:=Round(440*Exp(Ln(2)*(Oct-(10-Nota)/12)));

Пример реализация звучания по этой формуле в программе - так, например:

uses CRT;const Note:array[1..12] of String[4]=('Do','Do#','Re','Re#','Mi','Fa','Fa#','Sol','Sol#','La','La#','Si');var Nota:Byte; Oct:Integer; j,t,Hz:Word;beginrepeat Read(Nota); if Nota=0 then break; Read(Oct);Hz:=Round(440*Exp(Ln(2)*(Oct-(10-Nota)/12)));WriteLn('Octava: ',Oct,'  Note: ',Note[Nota],'  Frequenz: ',Hz); t:=1000;Sound(Hz); for j:=1 to 100 do Delay(t); Nosound; until Falseend.

Номера ноты и октавы тут вводятся друг за другом, разделяемые пробелом или Enter. Выход из программы по номеру ноты, равному нулю. До нормального интерфейса электропианино, однако, тут еще семь верст по клавиатуре.

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

1 1 2 2 3 3 4 4 0

и нажать Enter, программа проиграет четыре заданные ноты и закончит работу (т.к. последнее число - 0).

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Спасибо большое! выручили...

Помогите плиииз... ума не приложу как это делать

Дана непустая последовательность слов из строчных русских букв; между соседними словами – запятая, за последним словом – точка. Напечатать в алфавитном порядке множества, сформированные согласно варианту:

Справка:

гласные буквы: а, е, ё, и, о, у, ы, э, ю, я;

согласные: все остальные буквы, кроме й, ь, ъ;

звонкие согласные: б, в, г, д, ж, з, л, м, н, р;

глухие согласные: п, к, с, т, ф, х, ц, ч, ш, щ.

Вариант 2:

1)Все русские гласные буквы (а, е, и, о, у, ы, э, ю, я), входящие в этот текст;

2)все звонкие согласные буквы, которые входят в каждое нечетное слово и не входят ни в одно четное слово.

На Borlans pascal...

Ссылка на комментарий
Поделиться на другие сайты

neprogramist:

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

Ссылка на комментарий
Поделиться на другие сайты

Там похожая но не такая... Мне нужно именно ту которая выполнит мои условия.. Я даже не знаю как ее переправить((

напиши пожалуйста для моего условия...

Дана непустая последовательность слов из строчных русских букв; между соседними словами – запятая, за последним словом – точка. Напечатать в алфавитном порядке множества, сформированные согласно варианту.

Справка:

гласные буквы: а, е, ё, и, о, у, ы, э, ю, я;

согласные: все остальные буквы, кроме й, ь, ъ;

звонкие согласные: б, в, г, д, ж, з, л, м, н, р;

глухие согласные: п, к, с, т, ф, х, ц, ч, ш, щ.

2.

Все русские гласные буквы (а, е, и, о, у, ы, э, ю, я), входящие в этот текст;

все звонкие согласные буквы, которые входят в каждое нечетное слово и не входят ни в одно четное слово.

Для вывода множества использовать процедуру PRINT(M: N),

Задача... Текст является десятичной записью числа, кратного количеству символов;

а эту зачачу написать с какими нибудь функциями типа CHR, ORD, PRED, SUCC.

Ссылка на комментарий
Поделиться на другие сайты

Помогите решить задачу.

Язык С. Компилятор Visual Studio.NET 2005

Необходимо вывести числа, вводимые в одномерный массив (количество элементов 10) наоборот.

Например, с клавиатуры вводится 12, 23, 34 - на экран выводится 34, 23, 12.

Заранее спасибо!

Ссылка на комментарий
Поделиться на другие сайты

neprogramist:

type N=set of char;var M1,M2,M3,M4,M5,M6:set of char; s:string; k:boolean; i:byte;procedure Print(M:N); var j:char;begin for j:='а' to 'я' do if j in M then Write(j); WriteLn end;beginM1:=['a','е','и','о','у','ы','э'..'я'];M2:=['б'..'д','ж','з','л'..'н','р']; ReadLn(s); M3:=[]; for i:=1 to Length(s) do if s[i] in M1 then Include(M3,s[i]); Print(M3); k:=true; M4:=M2; M6:=M2; for i:=1 to length(s) do if s[i]<='.' then begin if k then begin M6:=M5*M6; M5:=[] end;k:=not k end   else if s[i] in M2 then if k then Include(M5,s[i])  else Exclude(M4,s[i]); Print(M6*M4); ReadLnend.
{$N+}var s:String[12]; k,p:Double; i,n:Integer;beginReadLn(s);n:=0;k:=0;p:=1;for i:=Length(s) downto 1 doif(s[i]>='0')and(S[i]<='9')then begin k:=k+(Ord(s[i])-48)*p;p:=p*10 endelse begin n:=1;break end;WriteLn((Abs(Frac(k/Length(s)))<0.01)and(n=0));ReadLnend.

Charlie Rat:

main(){int i,m[10];for(i=0;i<=9;i++)scanf("%d",&m[i]);   for(i=9;i>=0;i--)printf("%d\n",m[i]);getch();}
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

neprogramist:

Насчет блок-схем я уже писал, не буду. Это значит перерисовывать текст программы в квадратики и ромбики, посмотри, какой материал вам давали по этому поводу, бери карандаш и линейку... Рисованием я не увлекаюсь :(

		 /\   /	\ /		\  /		 	\/   s[i]<='.'	  \\		 	   /  \		   /  \	  /	 \/

Бр-р...

Никто не думает квадратиками и ромбиками, хотя использование крупноблочных блок-схем полезно для иллюстраций. Тут такая схема выглядела бы как Ввод - Решение - Вывод ;) Блок-схемы пришли из древних языков программирования, когда по виду оператора программы было непонятно, что он делает. Тогда к программам составляли очень подробные описания в виде блок-схем. Потом, чтобы программы стали понятны человеку, изобрели языки программирования высокого уровня вроде Pascal, гораздо более понятные и компактные. Но так как подробные блок-схемы на всякий случай иногда требовались заказчиками, были созданы программы для рисования блок-схем по коду программы. Для автоматического построения блок-схем Pascal-программ тут есть русскоязычная, компактная и простая в использовании программа Avtoshema. Правда, блок-схемы получаются, будто программа рисовала их, слегка (а может, и порядочно) подвыпив :doh: , но очень красивые. Для сдачи блок-схем придется, скорее всего, их несколько подкорректировать, они не вполне соответствуют стандартам, но по крайней мере, корректировать куда легче, чем делать с нуля.

и вы можете объясните написание проги для предыдущих двух задач...
Хм... Для себя я формулировал алгоритм примерно так...

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

Просматриваем текст, создавая множество всех просмотренных символов, входящих в множество гласных. Печатаем полученное множество.

Снова просматриваем текст, фиксируя в переменной k признак нечетности слова. Для каждого нечетного слова создаем множество входящих в него символов и множим его на множество символов, вошедших во все предыдущие нечетные слова, первоначально - полное множество звонких согласных; для четных слов исключаем каждый входящий в них символ из множества звонких согласных. После просмотра всех слов печатаем произведение этих множеств.

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

Вторая задача:

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

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

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

спасибо за объяснение... к стати очень клевая прога по постройке блок-схем... ВСЕМ СОВЕТУЮ!!!

а как будет выглядеть ''таблица внешних спецификаций'' по этим двум задачам?

Ссылка на комментарий
Поделиться на другие сайты

neprogramist:

а как будет выглядеть ''таблица внешних спецификаций'' по этим двум задачам?
Как препод захочет. Внешние спецификации - это просто четко записанные условия задачи, тут скорее всего имеется в виду формализованное описание, с какими-нибудь псевдоматематическими обозначениями. Табличное - значит, надо оформить в виде таблицы. В какой точно форме, можно узнать только у тебя из конспекта.
Ссылка на комментарий
Поделиться на другие сайты

вот пример таблицы:

№ Имя Назначение Е. Изм. Тип О.Д.З.

1 B Сформированный вектор - Вещ. R

2 Х Исходный вектор из n элементов - Вещ. R

3 M (minx + maxx)/2 - Вещ. R

4 N Количество элементов - Вещ. 1……12

Ссылка на комментарий
Поделиться на другие сайты

Как обычно, пример на уровне 2х2=4, поэтому трудно сказать, какие претензии будут к более сложным заданиям. Можно написать что-то типа

1 s Исходная строка string

2 M3 Результат: Множество set of char ['a','е','и','о','у','ы','э'..'я']

3 - Результат: Множество set of char ['б'..'д','ж','з','л'..'н','р']

1 s Исходная строка string[N]

2 N Количество элементов Цел. 0<=N<=12

3 - Результат: Булевская переменная (Цел.(s) mod N =0) boolean

Вообще-то в спецификации полагалось бы вписать и условие задачи (или, в стиле Microsoft, текст программы - то, что делает программа, принимается за правильное поведение как аксиома :g: ). Но, делая что-то бессмысленное, надо стараться ограничиваться минимумом. Хотя какой минимум устроит вашего преподавателя, сказать не берусь.

Ссылка на комментарий
Поделиться на другие сайты

Спасибо!!! Эти задачи я сдал с успехом!! Но преаодаватель насел на меня еще больше(типо я шарю в програмировании и могу решить задачи и по труднее).

Пожалуйста, как можно подробнее объясните как новичку, принцип ее решения... объясните какие команды что выполняют... :)

Задача:

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

Удалить из исходной строки слова, в которых имеются повторяющиеся литеры(буквы). Найти первое цифровое слово и увеличить его значение в 10 раз.

Решить задачу по этому примеру:

Program prim_lab;

Const Doubl=' '; {2 пробела}

VAR

S:string;

i,k:byte;

Massiv:array[1..100] of string;

Begin

Write('ввод строки текста'); readln(s);

{Удалим пробелы слева} While s[1]=’’ do delete(s,1,1);

s:=s+' '; {обеспечим пробел в конце текста}

repeat

i:=pos(doubl,s); {i – позиция двух пробелов в тексте}

if i>0 then delete(s,i,1) {удаление первого пробела из пары}

until i=0;

{Переносим выделенные слова в массив, после чего они удаляются

из исходного текста}

k:=0; {счетчик слов в формируемом массиве}

repeat

i:=pos(‘ ‘,s);

if i>0 then

begin

inc(k);

massiv[k]:=copy(s,1,i-1); {запись в massiv найденного слова}

delete(s,1,i) {удаление первого слова c пробелом}

end

until s=’’; {повторять, пока строка не пуста}

{вывод массива слов}

for i:=1 to k do writeln(massiv);

end.

объясните какие команды что выполняют!

Ссылка на комментарий
Поделиться на другие сайты

задача 2 Модульное программирование

тоже объяснить какие команды что выполняют.

Даны две целые матрицы А[5,6] и В[7,8]. Если у какой-либо из этих матриц больше половины строк начинается с простого числа, то все отрицательные элементы этой матрицы заменить на 1.

Ссылка на комментарий
Поделиться на другие сайты

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

Многоуважаемые знатоки языка Паскаль помогиет пожалуста с маленькой программой просчета массивов.

Суть такова :sly: Задан массив из 20 чисел вводиться число С. И все числа в которых нет данного числа С выводяться

на экран пример: допустим есть пять чисел 1245; 5467; 6788; 9654; 2341; вводим С например 5 и выводяться только те числа в которых нет С тоесть: 6788 и 2341

Просьба помочь а то сам както не справляюсь :blushing:

Ссылка на комментарий
Поделиться на другие сайты

neprogramist:

Первую задачу решить не могу. Условие противоречиво. Проблема в запятой. "Казнить нельзя помиловать" :blushing: По 1-му предложению граница слова - пробел или запятая, по 3-му - только пробел.

Вторую задачу я тоже не понимаю: что значит "даны"? Если даны, где они? Если их надо вводить, так и надо написать. Кстати, если их надо выводить, это тоже надо бы написать :sly:

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

type t=array[1..10,1..10] of integer;var i,j,m,n:integer; a:t;function P(k:integer):boolean; var i:integer;begin   if k>1 then begin P:=true; for i:=2 to trunc(sqrt(k+1)) do  if k mod i = 0 then begin P:=false; break end end else P:=false  end;procedure Q(m,n:integer;var a:t); var i,j,s:integer;begin s:=0; for i:=1 to m do if P(a[i,1]) then Inc(s); if s>m div 2 then for i:=1 to m do for j:=1 to n do if a[i,j]<0 then a[i,j]:=1;end;begin Write(' m=');ReadLn(m);Write(' n=');ReadLn(n); for i:=1 to m dofor j:=1 to n do begin Write('a[',i:2,',',j:2,']='); ReadLn(a[i,j]) end; Q(m,n,a); for i:=1 to m do begin for j:=1 to n do Write(a[i,j]:7); WriteLn end; ReadLnend.

Trueman:

const n=20;var a:array[1..n] of integer; i,j,c,k:integer; p:boolean;begin for i:=1 to n do begin Write('a[',i:2,']=');ReadLn(a[i]) end;Write('c='); ReadLn©;for i:=1 to n do  begin k:=a[i]; p:=true; repeat if k mod 10 =c then p:=false;  k:=k div 10 until k=0; if p then Write(a[i]:8) end; ReadLnend.

Можно было немного короче со строками, но до них вы, наверное, не дошли...

При проверке советую для простоты ввода заменить n на меньшее число, например, для приведенного примера из пяти чисел на 5.

P.S. Я тут исходил из того, что С - однозначное число, как в примере. Если нет, то можно переделать, но тогда уже прямой смысл использовать строки.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

что то я не пойму. по условию мы вводим две матрицы. а в задаче вводится одна. и он почему то не заменяет у матрицы отрицательные числа на единицу.

не могли бы вы как нибудь внедрить туда вторую матрицу для выполнения условия задачи. А в первой задаче текст может быть и с запятыми и с пробелами одновременно.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...