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

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


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

Из методички ( правда для Бейсика), но алгоритмическая сущность одинаково:

Задача: "Рассчитать сумму бесконечно убывающего ряда... и т.д.Здесь имеет неявный циклический процесс, так как не знаем сумму скольких слагаемых придется рассчитывать и выход из цикла не связан со значением перменной к. Другим словом в этом циклическом процессе нет счетчика цикла.

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

rutra:

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

ПОКА то-то ДЕЛАТЬ что-то,

еще не придумано.

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

Посчитать N, зная y, труда не представляет. Но причем тут циклы?

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

Итак, предположим, что имеется в виду решение нелинейного уравнения методом итераций по Ньютону. Тогда N - это искаженный замутненным сознанием y. Тогда

var x,xn,y,a,b:real;beginwrite('a? '); read(a); write('b? '); readln(b);x:=0; xn:=1;while 1e6*abs(x-xn)>abs(x)+abs(xn) do begin x:=xn; if x>=0 then y:=16*a-sqrt(x)/(a+b) else y:=1/a+2*x*b; xn:=y*y-8 end;writeln('x=',x); readln end.

a и b тут - это коэффициенты решаемого уравнения, которые вводим, взяв с потолка. Например, 1 и 1.

P.S. Немного изменил запись условия в цикле для большей компактности.

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

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

Описать структуру с именем Order, содержащую следующие поля: расчетный счет плательщика, расчетный счет получателя, перечисляемая сумма. Написать программу, выполняющую ввод с клавиатуры данных в массив Payments, состоящий из 15 элементов типа Order. Упорядочить записи по расчетным счетам плательщиков. Вывести на экран информацию о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры. Если такого расчетного счета нет, то вывести соответствующее сообщение. Поиск плательщика, введенного с клавиатуры оформить в виде отдельной функции.

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

Здравствуйте. Помогите пожалуйста найти ошибки в куске в кода...код написан на Delphi 7

vara,b,c:integer;begina:=56; b:=88; c:=0;while c<87if mod(a,12)=0 and mod(b,20)=0then begin c:=c+1;end;a:=a+1; b:=b+1;end;вывод (a).........
Ссылка на комментарий
Поделиться на другие сайты

provirt:

a) перед телом цикла while должно стоять do

б) функции mod в Паскале и Delphi нет. Есть операция mod

в) учитывая то, что begin и end ходят парами, на последнем end программа должна была закончиться. "вывод (a)" в тексте находится уже после конца программы.

Хотя все это должен был сказать уже компилятор.

Nata6enka:

Язык - Паскаль?

const n=15;type tOrder=record Pl,Pol,Sum:longint end;var Payments:array[1..n]of tOrder; T:tOrder; Index,i,j:integer; Pl:longint;function Ind(Pl:longint):integer; var i:integer; begin Ind:=0; for i:=1 to 15 do if Pl=Payments[i].Pl then Ind:=i end;beginfor i:=1 to n do with Payments[i] do begin Write(i:2,' Pl, Pol, Summa ? '); ReadLn(Pl,Pol,Sum) end;for i:=1 to n do for j:=1 to n-i do if Payments[j].Pl>Payments[j+1].Pl then begin T:=Payments[j]; Payments[j]:=Payments[j+1]; Payments[j+1]:=T end; Write('Pl ? '); Readln(Pl); Index:=Ind(Pl);if Index<>0 then Writeln('Summa=',Payments[index].Sum) else WriteLn('Pl ',Pl,' does not exist');ReadLnend.

Оформлением ввода-вывода не занимался, подсказки надо сделать более гуманными - "Номер расчетного счета плательщика" вместо "Pl" или как-нибудь иначе более понятно.

Для каждой записи номер плательщика, номер получателя и сумма вводятся через пробел, в конце ввода записи нажимается Enter.

Принято, что номера счетов и суммы - целые числа до 9 цифр. Если надо суммы вводить в рублях и копейках (долларах и центах), то при вводе и выводе надо переводить в копейки и обратно. Если 9 цифр нехватает (например, для зимбавийских долларов, см. ниже :)), то можно вместо типа longint использовать тип comp, в нем можно хранить до 19 цифр.

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

Кстати, для проверки, чтобы не вводить много данных, советую заменить значение константы n на 3 - тогда в массиве будут всего три записи.

P.S. фотография купюры:

zimbabwe_17.jpg

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

provirt:

a) перед телом цикла while должно стоять do

б) функции mod в Паскале и Delphi нет. Есть операция mod

в) учитывая то, что begin и end ходят парами, на последнем end программа должна была закончиться. "вывод (a)" в тексте находится уже после конца программы.

Хотя все это должен был сказать уже компилятор.

Nata6enka:

Язык - Паскаль?

const n=15;type tOrder=record Pl,Pol,Sum:longint end;var Payments:array[1..n]of tOrder; T:tOrder; Index,i,j:integer; Pl:longint;function Ind(Pl:longint):integer; var i:integer; begin Ind:=0; for i:=1 to 15 do if Pl=Payments[i].Pl then Ind:=i end;beginfor i:=1 to n do with Payments[i] do begin Write(i:2,' Pl, Pol, Summa ? '); ReadLn(Pl,Pol,Sum) end;for i:=1 to n do for j:=1 to n-i do if Payments[j].Pl>Payments[j+1].Pl then begin T:=Payments[j]; Payments[j]:=Payments[j+1]; Payments[j+1]:=T end; Write('Pl ? '); Readln(Pl); Index:=Ind(Pl);if Index<>0 then Writeln('Summa=',Payments[index].Sum) else WriteLn('Pl ',Pl,' does not exist');ReadLnend.

Оформлением ввода-вывода не занимался, подсказки надо сделать более гуманными - "Номер расчетного счета плательщика" вместо "Pl" или как-нибудь иначе более понятно.

Для каждой записи номер плательщика, номер получателя и сумма вводятся через пробел, в конце ввода записи нажимается Enter.

Принято, что номера счетов и суммы - целые числа до 9 цифр. Если надо суммы вводить в рублях и копейках (долларах и центах), то при вводе и выводе надо переводить в копейки и обратно. Если 9 цифр нехватает (например, для зимбавийских долларов, см. ниже :)), то можно вместо типа longint использовать тип comp, в нем можно хранить до 19 цифр.

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

Кстати, для проверки, чтобы не вводить много данных, советую заменить значение константы n на 3 - тогда в массиве будут всего три записи.

P.S. фотография купюры:

zimbabwe_17.jpg

Нет.... :) Извиняюсь, что сразу не указала.. с++ :)

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

Помогите пожалуйста написать еще одну программу на Delphi7(ну или на крайний случай на Паскале):

к массиву x=(3,7,1,2,6,8,4,5) применяется алгоритм сортировки:

for j:=2 to n doi:=j-1;y:=x[j];while y>x[i] and i>0;x[i+1]:=x[i];i:=i-1;end;x[i+1]:=y;end;

Вывести - сколько раз в процессе сортировки изменяются значения элементов массива?

P.S в коде возможны ошибки :( так как сам препод...пишет не правильно...

заранее благодарен за любую помощь....(самому мне не разобрать :( )

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

provirt:

Прости, но это не программа сортировки. Это абсурд. Тут нечего править. Для начала надо понять, что же некто имел в виду, когда принялся барабанить по клавишам.

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

Nata6enka:

Сначала - не надо цитировать простынями. Цитаты есть смысл использовать, только если отвечаешь на конкретные фразы, и только их и цитировать.

Второе - C++'ы тоже бывают разные. Поэтому для другого компилятора может потребоваться небольшая переделка программы. В данном случае я использовал Borland C++:

#include <iostream.h>const int n=15;struct tOrder{long  Pl,Pol,Sum;}; tOrder Payments[n],T;int Ind(long Pl)  {int k=-1; for(int i=0;i<n;i++)if(Pl==Payments[i].Pl)k=i; return k;}int main(){int Index,i,j; long Pl; for(i=0;i<n;i++){cout<<endl<<i+1<<" Pl, Pol, Summa ? ";cin>>Payments[i].Pl>>Payments[i].Pol>>Payments[i].Sum;} for(i=0;i<n;i++)for(j=0;j<n-i-1;j++)if(Payments[j].Pl>Payments[j+1].Pl){T=Payments[j]; Payments[j]=Payments[j+1]; Payments[j+1]=T;} cout<<endl<<"Pl ? "; cin>>Pl; Index=Ind(Pl); if(Index>=0)cout<<endl<<"Summa="<<Payments[index].Sum<<endl;else cout<<endl<<"Pl "<<Pl<<" does not exist"<<endl; return 0;}
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Nata6enka:

Поиск плательщика, введенного с клавиатуры оформить в виде отдельной функции.
Это она и есть:

int Ind(long Pl)

{int k=-1; for(int i=0;i<n;i++)if(Pl==Payments.Pl)k=i; return k;}

Функция возвращает -1, если расчетный счет плательщика (Pl) в записях массива Payments не найден или индекс записи с этим плательщиком в массиве, если плательщик найден. Сначала устанавливаем внутреннюю переменную функции k равной -1. Если запись с номером Pl найдется в массиве, то k присвоится индекс этой записи, если нет, k останется равным -1. А оператор return k присвоит значение k имени функции Ind.

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

Тролль

В первоначальном виде задание выглядело так:

к массиву x=(3,7,1,2,6,8,4,5) применяется алгоритм сортировки:

начало цикла для j от 2 до ni:=j-1y:=x[j];начало цикла пока y>x[i] и i>0x[i+1]:=x[i]i:=i-1конец циклаx[i+1]:=yконец цикла

собственно так и было записано....

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

provirt:

Ну, в первоначальном виде это уже (или еще) на что-то похоже. Законченная программа будет выглядеть так:

const n=8; x:array[1..n]of integer=(3,7,1,2,6,8,4,5); var i,j,y:integer;beginfor j:=2 to n do begin i:=j-1; y:=x[j]; while (y>x[i])and(i>0) do begin x[i+1]:=x[i]; i:=i-1 end; x[i+1]:=y end;for i:=1 to n do write(x[i]:5); readlnend.

P.S. Да, я вывел только результаты сортировки, сколько раз что менялось, не выводил. Если выводить еще и число присваиваний элементам массива, то программа будет выглядеть так:

const n=8; x:array[1..8]of integer=(3,7,1,2,6,8,4,5); var i,j,y,k:integer;begink:=0;for j:=2 to n do begin i:=j-1; y:=x[j]; while(y>x[i])and(i>0)do begin x[i+1]:=x[i]; inc(k); i:=i-1 end; x[i+1]:=y; inc(k) end;writeln('k=',k); for i:=1 to n do write(x[i]:3); readlnend.
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Голова сейчас опухнет. Кто придумал ети списки? Суть задания:

Создать двусвязный список и заполнить его n-ым количеством чисел типу int.

Знаком с однозвязными списками но по логике вещей двусвязный наверное еще имеет поле для адреса предыдущего елемента? Тогда для чего в етом задании двусвязный список? для научности метода?

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

core:

Знаком с однозвязными списками но по логике вещей двусвязный наверное еще имеет поле для адреса предыдущего елемента?
Точно. В принципе мало чем отличается от односвязного. Наличие двух указателей удобно при исключении элемента, кроме того, позволяет просматривать список и в обратном направлении.
Тогда для чего в етом задании двусвязный список?
Для освоения.
Кто придумал ети списки?
Списки придуманы Ньюеллом, Шоу и Симоном - если тебе от этого будет легче :blink: .
Ссылка на комментарий
Поделиться на другие сайты

core:

Встроенного в C++ класса списков нет. А пользовательские библиотеки классов зависят от того, какой C++, надо смотреть справку по прилагаемым библиотекам.

если несложно, то пример решения задания.

Создать двусвязный список и заполнить его n-ым количеством чисел типу int.

#include <iostream.h>#include <stdio.h>struct TList{int Data; TList *Prev,*Next;};int main(){int i,n,d; TList *begin,*end,*cur,*tmp;cout<<"\nHow many numbers? "; cin>>n;cout<<"\n1 Number? "; cin>>d;cur=new TList(); cur->Data=d; cur->Prev=cur->Next=NULL; begin=end=cur;for(int i=2;i<=n;i++){cout<<i<<" Number? "; cin>>d; tmp=new TList();   tmp->Data=d; cur->Next=tmp; tmp->Prev=cur; tmp->Next=NULL; cur=tmp;}end=cur; cout<<endl;for(cur=begin;cur!=end->Next;cur=cur->Next)cout<<cur->Data<<endl; cout<<endl;for(cur=end;cur!=begin->Prev;cur=cur->Prev)cout<<cur->Data<<endl;getchar(); getchar(); return 0;}

Запрашивает, сколько чисел ввести, затем сами эти числа, по мере ввода создает и заполняет двусвязный список, затем пробегает по нему вперед и назад, каждый раз распечатывая элементы списка. Проверил на Dev-C++.

P.S. Заметил у себя ошибку: в команде tmp->Data=i должно было быть не i, а d. Соответственно подправил букву.

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

Ragnos:

var c:char; i,m:byte; s:string;begin Write('Слово? '); Readln(s); for c:='A' to 'я' do begin m:=0; for i:=1 to length(s) do if s[i]=c then inc(m);if m<>0 then WriteLn(c,' : ',m) end; Readln end.
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

доброго времени суток вам, Тролль!)

опять у меня задачка на паскаль... не поможете?!

:

В библиотеке в читательском билете есть данные о человеке фамилия, записываются данные о книге (автор, название, дата, когда книгу брали читать). Определить, кто брал книгу Ефремова "Таис Афинская" 15.05.90, сколько читателей брали книги А.С.Пушкина, количество книг А.Дюма и какие есть в библиотеке, кто и какие книги брали 21.04.90

зарнее благодарен))

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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

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

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



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