![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
cattyfil |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Продвинутые Сообщений: 7 Регистрация: 28.9.2012 Город: Москва Учебное заведение: МГУ Вы: студент ![]() |
Задали вот такую вот штуку...
Дано натуральное число n. Вычислить (IMG:http://s1.ipicture.ru/uploads/20120928/wNvsx4YJ.jpg) Я начала делать на паскале, но не знаю, правильно ли и что делать дальше. Сложность именно в дроби и в том, что и к знаменателю, и к числителю прибавляются выражения. Если кому-то не сложно, подскажите, что делать дальше, как конкретно сделать этот цикл. Вот мое скромное var n,s,i: integer; begin writeln('введите n'); readln(n); if n<=0 then writeln('ошибка введите натуральное число'); s:=0; for i:=1 to n do begin s:=s*(cos(i)+cos(i+1))/(sin(i)+sin(i+1)); |
граф Монте-Кристо |
![]()
Сообщение
#2
|
Доцент ![]() ![]() ![]() ![]() ![]() ![]() Группа: Преподаватели Сообщений: 3 840 Регистрация: 27.9.2007 Из: Старый Оскол Город: Москва Учебное заведение: МФТИ/МАИ Вы: другое ![]() |
Вам необходимо в каждой итерации цикла изменять три числа: числитель дроби, знаменатель дроби и всё произведение. То есть:
Код p := 1; su := 0; sd := 0; for i:=1 to n do begin su := su + cos(i); sd := sd + sin(i); s := s*su/sd; end |
cattyfil |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Продвинутые Сообщений: 7 Регистрация: 28.9.2012 Город: Москва Учебное заведение: МГУ Вы: студент ![]() |
вы меня спасли просто)))) спасибо гигантское!!!!!!!!
|
граф Монте-Кристо |
![]()
Сообщение
#4
|
Доцент ![]() ![]() ![]() ![]() ![]() ![]() Группа: Преподаватели Сообщений: 3 840 Регистрация: 27.9.2007 Из: Старый Оскол Город: Москва Учебное заведение: МФТИ/МАИ Вы: другое ![]() |
В МГУ до сих пор учат программированию на паскале? Беда...
|
cattyfil |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Продвинутые Сообщений: 7 Регистрация: 28.9.2012 Город: Москва Учебное заведение: МГУ Вы: студент ![]() |
и еще кое-что нам задали...
"вводится цепочка латинских символов до появления символа ".".Необходимо вычислить частоту появления каждой буквы. Мои попытки: const t='.'; var a: array [1..100] of Char; b: array [1..100,1..100] of Char; i,j,l,n: Integer; begin Writeln ('vvedite bukvy'); while a[i]<>t do begin Readln (a[i]); l:=l+1; end; l:=l-1; for i:=1 to l do for j:= i+1 to l do begin if a[i]=a[j] then begin b[i,1]:=a[i]; Inc(b[i,2]); end; end; Write(b[i,j],' '); Writeln; readln; end. главным услоивем является ОТСУТСТВИЕ СТРИНГА! Вот то, что у меня получилось. Получается ввести массив, а дальше не могу задать так, чтоб именно считало количество повторяющихся букв и выводило и сами символы, которые повторяются и их кол-во. буду очень благодарна за помощь или подсказку, как это сделать. |
Julia |
![]()
Сообщение
#6
|
Ассистент ![]() ![]() ![]() ![]() Группа: Julia Сообщений: 593 Регистрация: 23.2.2007 Город: Улан-Удэ Учебное заведение: БГУ Вы: преподаватель ![]() |
Если под латинскими символами понимаются латинские буквы, то сделайте их индексами массива, а элементами - количество вхождений.
|
cattyfil |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Продвинутые Сообщений: 7 Регистрация: 28.9.2012 Город: Москва Учебное заведение: МГУ Вы: студент ![]() |
Вводится строка символов. Определить, сколько в нем слов длиннее 5 букв. Слова при введении отделяются пробелами.
Вот результат моих мучений Var s,s1:string; j,i,k:integer; Begin write('введите строку'); readln(s); k:=0; for i:=1 to Length(s) do Begin if s[i]<>' ' then s1:=s1+s[i]; // вбиваем в S1 символы из S до пробела if Length(s1)>5 then k:=k+1; // если длина s1 больше 5, то К увеличивается на единицу s1:=' '; // обнуляем S1, чтобы заново вбить туда символы из S до следующего пробела. End; Writeln(k); // выводим количество слов, длинее пяти букв. Readln; End. Подозреваю, что ошибка с обнулением S1. Если у кого-то есть идеи, как исправить это безобразие или решить задачу другим подходом, прошу откликнуться. |
daslex |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Продвинутые Сообщений: 6 Регистрация: 30.11.2012 Город: Санкт-Петербург Учебное заведение: мозга нет, не берут никуда. отчисленный Вы: другое ![]() |
Если у кого-то есть идеи, как исправить это безобразие или решить задачу другим подходом, прошу откликнуться. var i,count,count2:integer; //Счетчик цикла, Счетчик символов и Счетчик слов S1:String; //Строка begin S1:='ck jjjjjj kk k jjd ksdj a приветик'; //наша строка. Подправите writeln(S1); //вывел на экран count:=0; //Ставим счетчики в нули count2:=0; S1:=S1+' '; //На всякий случай дописываю пробел в конец строки. for i:=0 to length(S1) do Begin //Начинаем проход по строке if S1[i] in ['A'..'z','А'..'я'] then inc(count); //Если текущий символ принадлежит множеству увеличиваем счетчик символов if S1[i]=' ' then Begin //Если текущий символ пробел if count>5 then inc(count2); //То проверяем счетчик символов и если символов больше пяти, то увеличиваем счетчик слов, в которых больше пяти букв count:=0; //так как был пробел, то обнуляем счетчик end; end; writeln(count2); //Рисуем количество слов, в которых букв больше пяти readln; end. Это в консоли Delphi. Должно работать в Паскале. ========= |
cattyfil |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Продвинутые Сообщений: 7 Регистрация: 28.9.2012 Город: Москва Учебное заведение: МГУ Вы: студент ![]() |
Спасибо, мы как раз в Delphi работаем. Но ваша программа, к сожалению, не хочет считать, выдает либо ноль, либо 1, скоько слов ни вводи(((( И понять ошибку у вас я тоже не могу, вроде правильно всё.
|
daslex |
![]()
Сообщение
#10
|
Новичок ![]() Группа: Продвинутые Сообщений: 6 Регистрация: 30.11.2012 Город: Санкт-Петербург Учебное заведение: мозга нет, не берут никуда. отчисленный Вы: другое ![]() |
Спасибо, мы как раз в Delphi работаем. Но ваша программа, к сожалению, не хочет считать, выдает либо ноль, либо 1, сколько слов ни вводи(((( И понять ошибку у вас я тоже не могу, вроде правильно всё. Русские слова вводите Нужно в uses подключить Windows uses SysUtils, Windows; и сразу после Begin Begin SetConsoleCP(1251); SetConsoleOutputCP(1251); readln(S1); //Прочитали строку Мой код |
cattyfil |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Продвинутые Сообщений: 7 Регистрация: 28.9.2012 Город: Москва Учебное заведение: МГУ Вы: студент ![]() |
Уфф,спасибо большое за труды) попыталась сдать сегодня эту задачу. Русские слова это полбеды, хоть с английскими работает и то хорошо. Проблема в другом - преподаватель не разрешила использовать множества
if S1[i] in ['A'..'z','А'..'я'] then inc(count); //Если текущий символ принадлежит множеству увеличиваем счетчик символов Как это сделать не через множества, не знаете случайно?) |
daslex |
![]()
Сообщение
#12
|
Новичок ![]() Группа: Продвинутые Сообщений: 6 Регистрация: 30.11.2012 Город: Санкт-Петербург Учебное заведение: мозга нет, не берут никуда. отчисленный Вы: другое ![]() |
var S1,S2:String;
i,j:Integer; begin SetConsoleCP(1251); SetConsoleOutputCP(1251); i:=0; //счетчик цикла j:=0; //счетчик слов S1:='Привет мой друг, дорогой и любезный'; //наша строка S1:=S1+' '; //дописываю пробел в конец writeln(S1); //вывожу на экран for i:=1 to length(S1) do Begin //проход по строке if S1[i]<>' ' then S2:=S2+S1[i] //если текущий символ не пробел, то составляю слово else Begin //если же пробел if length(S2)>5 then inc(j); //проверяю длину составленного слова и если там больше пяти букв, увеличиваю счетчик слов S2:=''; //обнуляю слово end; end; writeln(j); //вывожу число слов из более чем 5 букв. readln; end. ============== минусы, разделители будут считаться за букву слова. (, - " @ и т.д.) ваше почти. |
cattyfil |
![]()
Сообщение
#13
|
Новичок ![]() Группа: Продвинутые Сообщений: 7 Регистрация: 28.9.2012 Город: Москва Учебное заведение: МГУ Вы: студент ![]() |
Спасибо)
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2025, 18:32 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru