Прошу помочь написать программы, кто может помогите плиз...

Автор artlite, 26 Вересень 2008, 22:20:53

Попередня тема - Наступна тема

artlite

Прошу помочь написать мне программы в институт а то препод мои решения забраковал.
Вот условия:
Задание 1
ЦитатаПрограмування циклічних процедур.
Розробити програму табулювання функції, вивести їх значення у вигляді  таблиці.  Розробити три варіанти обчислення з  використанням  трьох  видів  циклів, для контролю підрахувати суму значень функцій, результати  вивести окремо у одному файлі. Знак '^' означає 'у ступеню'.
y = 0.05cos(x + 1); інтервал : відрізок [Pi/4,Pi], крок Pi/8.

Задание 2
ЦитатаЗадана матриця цілих чисел M x N, компоненти якої можуть бути і нулями. Зробити контрольне виведення матриці на екран у природному вигляді. Матрицю ініціаліазувати як константу.

Задане дійсне число А. Поміняти елементи матриці (4х3), які більше А  на  0, вивести нову матрицю на екран

Задание 3
ЦитатаРозробити програму, у якій вказані у варіантах завдань обчислення оформити як процедуру та функцію (два варианті одного обчислення). Процедура та функція повинні знаходитись у одному файлі.
Підрахувати суму п'ятьох дійсних чисел x = a^5 + b^5 + c^5 + d^5+ e^5.

Задание 4
ЦитатаЗадан довільний рядок, виконати з ним наступні дії.
Видалити зайві проміжки з рядка.

Завдання 5
ЦитатаЗадані поля запису, визначити їх типи даних, написати програму для введення довільної кількості записів через масив, який ініціалізувати як типізовану константу.  Вивести записи згідно з вказаним крітерієм на екран у формі, зручній для перегляду.
Людина: прізвище, стать, зріст, вага. Критерій: особи з відношенням
(зріст-100)/вага >1

Завдання 6
ЦитатаПри розробці програми не використовувати функції і процедури, які розширяють файл до структури прямого доступу.
Створити текстовий файл цілих чисел, в якому спочатку розташовані від'ємні компоненти, а потім додатні. Вставити між ними цифру 0.

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

user_lol

Ну ти не вказав на чому. І я не думаю чи хтось допоможе, може тільки наштовхне

artlite

Знание силы не дает силу, но ее осознание ведет к совершенству...

dojik

Погугли. Без подколов. Это не уникальные задания.

FalseMan

http://www.dpk.com.ua/forums/index.php?topic=5088.0
ЦитатаНе задавайте вопросы из домашних заданий

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

Если вы подозреваете, что вам подкинули вопрос из домашнего задания, но все равно не можете дать на него ответ, попытайтесь задать вопрос в форуме группы пользователей или (в крайнем случае) в "пользовательском" списке рассылки/форуме соответствующего проекта. Хотя хакеры его и "опознают", некоторые из продвинутых пользователей могут, по крайней мере, дать вам подсказку.

giena

Такие задачи(или подобные) есть в ЛЮБОМ учебнике по программированию на интересующем Вас языке...
Серп в жатве сеч - Сек жадно меч, Был ран резец Клинка конец И стали рдяны От стали льдяной Доспехи в рьяной Потехе бранной

skif_en

Цитатано если кто может то помогите сделать все
А в чем заключается помощь? Сделать за тебя? Вряд ли кто-то согласится, такие темы уже проскакивали на форуме, вот например - http://www.dpk.com.ua/forums/index.php?topic=4438.0

βεερ_βooρ

Цитата: artlite від 26 Вересень 2008, 23:10:38
На паскале
Добавь в заглавие на каком языке надо написать программы, исправь орфографическую ошибку(програММы).

Цитата: artlite від 26 Вересень 2008, 22:20:53
Прошу помочь написать мне программы в институт а то препод мои решения забраковал.
Риторический вопросс: Ты их вообще пытался делать? Приведи свои варианты решений, скажи что не понравилось преподавателю.
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Edd.Dragon

Цитата: skif_en від 27 Вересень 2008, 23:52:29
А в чем заключается помощь? Сделать за тебя? Вряд ли кто-то согласится
Да там понты работы! Алгоритмы в 1-2-3 строки.

Вот только всей писанины в целом гораздо больше, и проверить все надо на работоспособность перед тем как давать решение. А еще вспомнить паскаль и вспомнить, где он лежит. После чего адаптироваться к его интерфейсу (время то прошло).  :D

Цитата: beep_boop від 28 Вересень 2008, 00:31:25
Риторический вопросс: Ты их вообще пытался делать? Приведи свои варианты решений, скажи что не понравилось преподавателю.
Угу, вчера прочел первый пост и обидился, что препода значится решениями порадовал, а нам - фигу :(

artlite

Цитата: beep_boop від 28 Вересень 2008, 00:31:25
Добавь в заглавие на каком языке надо написать программы, исправь орфографическую ошибку(програММы).
Риторический вопросс: Ты их вообще пытался делать? Приведи свои варианты решений, скажи что не понравилось преподавателю.
Да вот мои исходники:
Задание 2:
Цитатаprogram Lab_3;
{$APPTYPE CONSOLE}
uses
  SysUtils;
Var
  A:array[1..4,1..3] of integer;
  i,j:integer;
  d:integer;
begin
  A[1,1]:=25;
  A[1,2]:=69;
  A[1,3]:=15;
  A[2,1]:=36;
  A[2,2]:=15;
  A[2,3]:=78;
  A[3,1]:=98;
  A[3,2]:=75;
  A[3,3]:=45;
  A[4,1]:=12;
  A[4,2]:=14;
  A[4,3]:=19;
  writeln ('Procesing input screen in massive...');
writeln('This massive is:');
for i:=1 to 4 do
begin
for j:=1 to 3 do
  write(A[i,j]:4);
  writeln;
end;
write('Press Enter to next step.....');
readln;
write ('Input chislo from massive. A=');
repeat
readln(d);
until (d=A[1,1]) or (d=A[1,2]) or (d=A[1,3]) or (d=A[2,1]) or (d=A[2,2]) or (d=A[2,3]) or (d=A[3,1]) or (d=A[3,2]) or (d=A[3,3]) or (d=A[4,1]) or (d=A[4,2]) or (d=A[4,3]);
if A[1,1]>d then A[1,1]:=0;
if A[1,2]>d then A[1,2]:=0;
if A[1,3]>d then A[1,3]:=0;
if A[2,1]>d then A[2,1]:=0;
if A[2,2]>d then A[2,2]:=0;
if A[2,3]>d then A[2,3]:=0;
if A[3,1]>d then A[3,1]:=0;
if A[3,2]>d then A[3,2]:=0;
if A[3,3]>d then A[3,3]:=0;
if A[4,1]>d then A[4,1]:=0;
if A[4,2]>d then A[4,2]:=0;
if A[4,3]>d then A[4,3]:=0;
writeln('Processing data.....');
writeln('Processing massive is:');
for i:=1 to 4 do
  begin
  for j:=1 to 3 do
  write (A[i,j]:4);
  writeln;
  end;
  writeln('Thank you for use my program......');
  writeln ('ArTJIauT Inc. 2008');
  writeln;
  writeln;
  writeln ('Press Enter to exit....');
  readln;
end.

Задание 1
Цитатаprogram Laboratorna;
{$APPTYPE CONSOLE}
{ y = 0.05cos(x + 1); ³íòåðâàë : â³äð³çîê [Pi/4,Pi], êðîê Pi/8.}
uses
  SysUtils,
  Math;

var i:integer;
    x,y,s1,s2,s3:real;
begin
  writeln('Funk "for"');
  x:=pi/4;
  s1:=0;
   for i:=1 to 6 do
    begin
    y:=0.05*cos(x+1);
    x:=x+pi/8;
    s1:=s1+y;
    writeln('y=',y:6:2,'  x=',x:6:2);
    end;
  writeln;
  Writeln('Funk "while"');
  x:=pi/4;
   s2:=0;
   i:=1;
  while i <=6 do
    begin
    y:=0.05*cos(x+1);
    x:=x+pi/8;
    s2:=s2+y;
    Inc(I);
    writeln('y=',y:6:2,'  x=',x:6:2);
    end;
    writeln;
    writeln('Funk "repeat"');
    x:=pi/4;
    s3:=0;
    i:=0;
  repeat
    y:=0.05*cos(x+1);
    x:=x+pi/8;
    s3:=s3+y;
     Inc(I);
     writeln('y=',y:6:2,'  x=',x:6:2);
until I>5;
  writeln;
  s1:=pi;
  s2:=pi;
  s3:=pi;
  writeln('Results:');
  writeln('funk "for"');
  writeln('s1=',s1:6:3);
  writeln;
  writeln('funk "while"');
  writeln('s2=',s2:6:3);
  writeln;
  writeln('funk "repeat"');
  writeln('s3=',s3:6:3);
  writeln('Press Enter to exit');
  readln;
end.

А мне сказали что программы написано неверно.

Цитата: giena від 27 Вересень 2008, 23:26:58
Такие задачи(или подобные) есть в ЛЮБОМ учебнике по программированию на интересующем Вас языке...
Вот именно как раз я делал это решение по учебнику.
Знание силы не дает силу, но ее осознание ведет к совершенству...

Edd.Dragon

Цитата: artlite від 28 Вересень 2008, 04:04:53
Задание 2:
Матрицю ініціаліазувати як константу.
А у тебя что? Черным по белому:
Var A

Далее
Цитатаif A[1,1]>d then A[1,1]:=0;
if A[1,2]>d then A[1,2]:=0;
if A[1,3]>d then A[1,3]:=0;
if A[2,1]>d then A[2,1]:=0;
if A[2,2]>d then A[2,2]:=0;
if A[2,3]>d then A[2,3]:=0;
if A[3,1]>d then A[3,1]:=0;
if A[3,2]>d then A[3,2]:=0;
if A[3,3]>d then A[3,3]:=0;
if A[4,1]>d then A[4,1]:=0;
if A[4,2]>d then A[4,2]:=0;
if A[4,3]>d then A[4,3]:=0;
Что это?!  ??? А если бы в задании было указано что матрица 10х10?
Уже только за разложение циклов в прямой код можно рубить это решение.

Далее, какой физичиский смысл этого кода? Что он делает? )))
Цитатаrepeat
readln(d);
until (d=A[1,1]) or (d=A[1,2]) or (d=A[1,3]) or (d=A[2,1]) or (d=A[2,2]) or (d=A[2,3]) or (d=A[3,1]) or (d=A[3,2]) or (d=A[3,3]) or (d=A[4,1]) or (d=A[4,2]) or (d=A[4,3]);
Допустим у меня в матрице числа от 0 до 9, а с клавы я ввожу число 100. Что дальше? И к чему вообще сравнение с элементами матрицы?

______________________________________________________________________

Задание №1

Цитатаx:=pi/4;
  s1:=0;
   for i:=1 to 6 do
    begin
    y:=0.05*cos(x+1);
    x:=x+pi/8;
    s1:=s1+y;
    writeln('y=',y:6:2,'  x=',x:6:2);
    end;
Это не ошибка, но просто хочется спросить, а как ты узнал, что у цикла будет 6 шагов? Наверное провел не хитрый расчет в уме? Так почему в уме, ане в проге?

Цитатаx:=pi/4;
   s2:=0;
   i:=1;
  while i <=6 do
    begin
    y:=0.05*cos(x+1);
    x:=x+pi/8;
    s2:=s2+y;
    Inc(I);
    writeln('y=',y:6:2,'  x=',x:6:2);
    end;
А вот здесь твое знание кол-ва шагов уже является бредом. У тебя сказано "начать в pi/4 и с шагом pi/8 добраться до pi". Именно это ты и должен был сказать на языке паскаль. Переменную i вообще нужно убрать с Repeate и While. Иначе ты не понял всю их "прелесть".

далее
считам сумму S1 в первом цикле
считам сумму S2 во втором
считам сумму S3 в третьем

а потом... бац в конце проги перед выводом!
s1:=pi;
s2:=pi;
s3:=pi;

и дальше уже выводим, что s1=s2=s3=3.1415 :D Простой, но слишком уж бросающийся в глаза чит (если вообще сумма должна была равняться именно pi). Препод что, идиот и этого должен был не заметить?!


P.S.: Ну и за функцию наверняка скажет, что ее надо было вынести в функцию, а не повторять три раза.


Nikolai

А скажите, это на всем паскале такой код нечитабельный, или только у него?
If you do what you have always done, you'll get what you have always got

βεερ_βooρ

Цитата: Nikolai від 29 Вересень 2008, 00:13:36
А скажите, это на всем паскале такой код нечитабельный, или только у него?
У него
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering.
All that's here is Fear! Suppression! Betrayal! Despair! Contempt! Regret! Sadness! Anguish! Madness! And Pain, right?

Edd.Dragon

Цитата: Nikolai від 29 Вересень 2008, 00:13:36
А скажите, это на всем паскале такой код нечитабельный, или только у него?
При использовании Quote любой код трудно читаемый

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

x := pi / 4;
s2 := 0;
i := 1;
while (i <= 6) do
begin
    y := 0.05 * cos(x + 1);
    x := x + pi / 8;
    s2 := s2 + y;
    inc(i);
    writeln('y=', y:6:2, '  x=', x:6:2);
end;


Ну а с подсветкой тем более.

Nikolai

Не будем углублятся :). Люди в теме знают обширность данной.. темы.
If you do what you have always done, you'll get what you have always got

SA-211

написал программу на С++, задача: создать список из слов, в который все слова исходного текста входили бы только один раз, но проблема вот в чем - препод говорит что она должна(правильный вариант) немного по другому, хотя эта отлично работает! Может кто подскажит в чем проблема, что не так?

#include"iostream"
#include"fstream"
#include"string"
using namespace std;
ifstream in("in.txt");
ofstream out("out.txt");
struct TNode{
   string inf;
   TNode*next;
}*f1,*f2,*f3;
void stack(TNode*&f,string a){
   TNode*e = new TNode;
   e -> inf = a;
   e -> next = f;
   if(f1==NULL){
      e->next=NULL;
      f=e;
   }
   else f=e;
}
void stack2(TNode*f){
   string s;
   if(f==NULL)
      out << "spisok pust";
   while(f! = NULL){
      f -> inf+='.';
      for(unsigned int i = 0,n = 0;i < f -> inf.size();i++,n++){
         if(ispunct(f -> inf.at(i))){
            s = f -> inf.substr(i-n,n);
            while( s.size()>0&&(ispunct(s.at(0))))
               s.erase(0,1);
            stack(f2,s);i++;n=0;
         }
      }
      TNode*e = f; f = e -> next;
      delete e;
   }
}
bool ne_sovp(TNode*f,string a){
   while(f! = NULL){
      if(f -> inf==a)
         return false;
      f = f -> next;
   }
   return true;
}
void stack3(TNode*f){
   int k;
   stack(f3,f -> inf);
   TNode*e = f;
   f = e -> next;
   delete e;
   while(f! = NULL){
      if(ne_sovp(f3,f -> inf))
         stack(f3,f -> inf);
      TNode*e = f;f = e -> next;
      delete e;
   }
}
void print(TNode*f){
   while(f!=NULL){
      out << f->inf << " ";
      f = f -> next;
   }
}
int main(){
   string a;
   while(in.peek()!=EOF){
      in >> a;
      stack(f1,a);
   }
   stack2(f1);stack3(f2);
   print(f3);
   in.close();out.close();
   return 0;
}

Edd.Dragon

#16
Цитата: SA-211 від 24 Серпень 2009, 18:58:55препод говорит что она должна(правильный вариант) немного по другому
Правильный вариант тот, который выдает правильный результат. Если таких 10 - значит все 10 правильные.
Это конечно если не указано дополнительных условий для реализации алгоритма.
Ты таковых не указал, то как нам знать, что именно хочет твой препод?

А так разве что можно попридираться к лишним телодвижениям. Например, к чему такие "сложности"?
TNode*e = f;
f = e -> next;
delete e;

вместо

f = f->next;


или, на вскидку (в смысл тоих функций не вникал, ты мог бы по пару строк коментов перед ними и написать) - у тебя целых несколько функций, а для добавления (или игнорирования) нового слова в список, нам понадобится 1 достаточно простая функция, т.е. разделить ее на 3 будет весьма проблематично или по крайней мере неоптимально.

и т.д.

SA-211

препод сказал что нужно было все это делать не в стеке а на улице - а затем записать в стек))

Edd.Dragon

Ну если он разбирался, что именно у тебя делается и зачем аж три стека (*f1,*f2,*f3), то может он тоже имел ввиду то, что я без разбирательства назвал "Тут что-то слишком много всего лишнего" )))))))


Т.е. для реализации того, что ты лаконично указал выше вот все что надо:
#include <string>
#include <iostream>

using namespace std;

// входные данные
string input[10] = {"mama", "papa", "mama", "ded", "papa", "mama", "baba", "ded", "mama", "mama"};

struct TNode
{
string value;
TNode* next;
};

// верхушка стека
TNode* first = NULL;

// добавляет в начало стека новое слово (если такого в нем нет)
void AddUniqueNode(string value)
{
TNode* node = first;

// поиск такого же слова
while(node != NULL)
{
if(node->value == value) break;
node = node->next;
}

// добавление если не было найдено
if(node == NULL)
{
node = new TNode;
node->value = value;
node->next = first;
first = node;
}
}

// выводит на экран содержимое стека
void PrintStack()
{
TNode* node = first;
cout << "Stack content:" << endl;
while(node != NULL)
{
cout << node->value << endl;
node = node->next;
}
}

int main()
{
for(int i = 0; i < 10; i++) AddUniqueNode(input[i]);
PrintStack();

return 0;
}


Без коментов, пустых строк и переносов открывающей скобки в отдельную строку вообще понты кода получается

SA-211