IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Задачка на паскале
cattyfil
сообщение 28.9.2012, 14:57
Сообщение #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));

Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
граф Монте-Кристо
сообщение 28.9.2012, 15:20
Сообщение #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
сообщение 28.9.2012, 15:29
Сообщение #3


Новичок
*

Группа: Продвинутые
Сообщений: 7
Регистрация: 28.9.2012
Город: Москва
Учебное заведение: МГУ
Вы: студент



вы меня спасли просто)))) спасибо гигантское!!!!!!!!
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
граф Монте-Кристо
сообщение 29.9.2012, 11:59
Сообщение #4


Доцент
******

Группа: Преподаватели
Сообщений: 3 840
Регистрация: 27.9.2007
Из: Старый Оскол
Город: Москва
Учебное заведение: МФТИ/МАИ
Вы: другое



В МГУ до сих пор учат программированию на паскале? Беда...
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cattyfil
сообщение 17.10.2012, 16:14
Сообщение #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
сообщение 20.10.2012, 8:29
Сообщение #6


Ассистент
****

Группа: Julia
Сообщений: 593
Регистрация: 23.2.2007
Город: Улан-Удэ
Учебное заведение: БГУ
Вы: преподаватель



Если под латинскими символами понимаются латинские буквы, то сделайте их индексами массива, а элементами - количество вхождений.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cattyfil
сообщение 29.11.2012, 17:41
Сообщение #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
сообщение 30.11.2012, 1:45
Сообщение #8


Новичок
*

Группа: Продвинутые
Сообщений: 6
Регистрация: 30.11.2012
Город: Санкт-Петербург
Учебное заведение: мозга нет, не берут никуда. отчисленный
Вы: другое



Цитата(cattyfil @ 29.11.2012, 17:41) *

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


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
сообщение 30.11.2012, 5:03
Сообщение #9


Новичок
*

Группа: Продвинутые
Сообщений: 7
Регистрация: 28.9.2012
Город: Москва
Учебное заведение: МГУ
Вы: студент



Спасибо, мы как раз в Delphi работаем. Но ваша программа, к сожалению, не хочет считать, выдает либо ноль, либо 1, скоько слов ни вводи(((( И понять ошибку у вас я тоже не могу, вроде правильно всё.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
daslex
сообщение 30.11.2012, 10:30
Сообщение #10


Новичок
*

Группа: Продвинутые
Сообщений: 6
Регистрация: 30.11.2012
Город: Санкт-Петербург
Учебное заведение: мозга нет, не берут никуда. отчисленный
Вы: другое



Цитата(cattyfil @ 30.11.2012, 5:03) *

Спасибо, мы как раз в Delphi работаем. Но ваша программа, к сожалению, не хочет считать, выдает либо ноль, либо 1, сколько слов ни вводи(((( И понять ошибку у вас я тоже не могу, вроде правильно всё.


Русские слова вводите

Нужно в uses подключить Windows
uses
SysUtils, Windows;

и сразу после Begin
Begin
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
readln(S1); //Прочитали строку
Мой код
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cattyfil
сообщение 30.11.2012, 15:41
Сообщение #11


Новичок
*

Группа: Продвинутые
Сообщений: 7
Регистрация: 28.9.2012
Город: Москва
Учебное заведение: МГУ
Вы: студент



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

if S1[i] in ['A'..'z','А'..'я'] then inc(count); //Если текущий символ принадлежит множеству увеличиваем счетчик символов

Как это сделать не через множества, не знаете случайно?)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
daslex
сообщение 30.11.2012, 16:16
Сообщение #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
сообщение 1.12.2012, 15:31
Сообщение #13


Новичок
*

Группа: Продвинутые
Сообщений: 7
Регистрация: 28.9.2012
Город: Москва
Учебное заведение: МГУ
Вы: студент



Спасибо)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 17.5.2024, 4:23

Книжки в помощь: "Сборник заданий по высшей математике" Кузнецов Л.А., "Сборник заданий по высшей математике" Чудесенко В.Ф., "Индивидуальные задания по высшей математике" Рябушко А.П., и другие.




Зеркало сайта Решебник.Ру - reshebnik.org.ru