Лабораторные и курсовые работы по информатике
Правила форума
Раздел для предложений товаров и услуг
Раздел для предложений товаров и услуг
- Mabus
- Забанен
- Сообщения: 5281
- Зарегистрирован: 26 фев 2007, 14:49
- Пол: мужской
- Семейное положение: свободен
- Благодарил (а): 37 раз
- Поблагодарили: 135 раз
- Контактная информация:
Re: Лабораторные и курсовые работы по информатике
Да это школьная олимпиадная задача по программированию, я ее решал еще будучи школьником...
Я начал спорить? Значит, скорее всего, я прав.
Государство недалекого будущего.
Государство недалекого будущего.
- FonDrakes
- Сообщения: 3182
- Зарегистрирован: 11 фев 2008, 23:56
- Пол: мужской
- Благодарил (а): 37 раз
- Поблагодарили: 83 раза
- Контактная информация:
Re: Лабораторные и курсовые работы по информатике
Напишите мне за бутылку пива синтаксический анализатор математических выражений (калькулятор) на Java. За ещё одну бутылку пива объясните как оно всё это работает 

Re: Лабораторные и курсовые работы по информатике
В олимпиадах без гугла не обойтись, задачки очень специфичны) я говорил только то что в голову приходило. Что ж, расскажи теперь решение.
- Mabus
- Забанен
- Сообщения: 5281
- Зарегистрирован: 26 фев 2007, 14:49
- Пол: мужской
- Семейное положение: свободен
- Благодарил (а): 37 раз
- Поблагодарили: 135 раз
- Контактная информация:
Re: Лабораторные и курсовые работы по информатике
FonDrakes писал(а):Напишите мне за бутылку пива синтаксический анализатор математических выражений (калькулятор) на Java. За ещё одну бутылку пива объясните как оно всё это работает
Не обляпайся:
Код: Выделить всё
package supe;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class soop extends Applet implements ActionListener {
float num;
float buf;
int code;
String str;
boolean point;
Button but[];
public void init()
{
num=0;
buf=0;
code=0;
str="0";
point=false;
but=new Button[17];
Panel pn=new Panel(new GridLayout(5,4,2,2));
but[0]=new Button("0");
but[0].addActionListener(this);
pn.add(but[0]);
but[1]=new Button("1");
but[1].addActionListener(this);
pn.add(but[1]);
but[2]=new Button("2");
but[2].addActionListener(this);
pn.add(but[2]);
but[3]=new Button("3");
but[3].addActionListener(this);
pn.add(but[3]);
but[4]=new Button("4");
but[4].addActionListener(this);
pn.add(but[4]);
but[5]=new Button("5");
but[5].addActionListener(this);
pn.add(but[5]);
but[6]=new Button("6");
but[6].addActionListener(this);
pn.add(but[6]);
but[7]=new Button("7");
but[7].addActionListener(this);
pn.add(but[7]);
but[8]=new Button("8");
but[8].addActionListener(this);
pn.add(but[8]);
but[9]=new Button("9");
but[9].addActionListener(this);
pn.add(but[9]);
but[12]=new Button(".");
but[12].addActionListener(this);
pn.add(but[12]);
but[11]=new Button("+");
but[11].addActionListener(this);
pn.add(but[11]);
but[13]=new Button("=");
but[13].addActionListener(this);
pn.add(but[13]);
but[10]=new Button("-");
but[10].addActionListener(this);
pn.add(but[10]);
but[14]=new Button("*");
but[14].addActionListener(this);
pn.add(but[14]);
but[15]=new Button("/");
but[15].addActionListener(this);
pn.add(but[15]);
but[16]=new Button("C");
but[16].addActionListener(this);
pn.add(but[16]);
add(pn);
}
public void paint(Graphics gr){
gr.drawString(str,10,15);
}
public void actionPerformed(ActionEvent e){
num=new Float(str).floatValue();
if(e.getSource()==but[0])zero();
if(e.getSource()==but[1])chislo("1");
if(e.getSource()==but[2])chislo("2");
if(e.getSource()==but[3])chislo("3");
if(e.getSource()==but[4])chislo("4");
if(e.getSource()==but[5])chislo("5");
if(e.getSource()==but[6])chislo("6");
if(e.getSource()==but[7])chislo("7");
if(e.getSource()==but[8])chislo("8");
if(e.getSource()==but[9])chislo("9");
if(e.getSource()==but[10]){code=1;buf=num;str="0";}// -1
if(e.getSource()==but[11]){code=2;buf=num;str="0";}// +2
if(e.getSource()==but[14]){code=3;buf=num;str="0";}// *3
if(e.getSource()==but[15]){code=4;buf=num;str="0";}// /4
if(e.getSource()==but[12])pnt();
if(e.getSource()==but[16])sbros();
if(e.getSource()==but[13])result();
}
private void result(){
num=new Float(str).floatValue();
if(code==1)num=buf-num;
if(code==2)num=buf+num;
if(code==3)num=buf*num;
if(code==4 && num!=0)num=buf/num;
else str="delenie na nol - nelzya";
str=str.valueOf(num);
repaint();
}
private void sbros(){
num=0;
buf=0;
code=0;
str="0";
point=false;
repaint();
}
private void zero(){
if(str!="0")str=str+"0";
repaint();
}
private void chislo(String s){
if(str=="0")str=s;
else str=str+s;
repaint();
}
private void pnt(){
if(point == false)str=str+".";
point=true;
repaint();
}
}
Добавлено спустя 6 минут 29 секунд:
Malicious Penetrator писал(а):В олимпиадах без гугла не обойтись, задачки очень специфичны) я говорил только то что в голову приходило. Что ж, расскажи теперь решение.
В олимпиадах нет времени на гуглы. Решение задачи 3-5 минут и часы отладки =)))
Решение простое:
1) Создание списка протыканий с удалением одинаковых элементов. SUM=0;
2-5) В цикле проходим все протыкания.
3) m=N
4 ) Протыкание проверяем на пересечение с другими протыканиями которые уже прошли в цикле. при совпадении уменьшаем m на один.
5) SUM=SUM + m;
Я начал спорить? Значит, скорее всего, я прав.
Государство недалекого будущего.
Государство недалекого будущего.
- FonDrakes
- Сообщения: 3182
- Зарегистрирован: 11 фев 2008, 23:56
- Пол: мужской
- Благодарил (а): 37 раз
- Поблагодарили: 83 раза
- Контактная информация:
Re: Лабораторные и курсовые работы по информатике
Mabus
Я чего-то в твоём примере не вижу работы со скобками, а это надо. В прочем как и возведение в степень, перевод чисел в двоичную и шестнадцатиричную системы счисления, все тригонометрические функции. И это ещё не полный список, препод решил извертнуться и заставил меня писать клиент-серверный калькулятор, плюс ещё чтоб вводимые формулы с их ответами заносились в базу данных, чтобы можно было к ним обращаться позже.
Добавлено спустя 34 минуты 48 секунд:
+ ещё из кода видно, что это простой калькулятор без анализа вводимой строки
Я чего-то в твоём примере не вижу работы со скобками, а это надо. В прочем как и возведение в степень, перевод чисел в двоичную и шестнадцатиричную системы счисления, все тригонометрические функции. И это ещё не полный список, препод решил извертнуться и заставил меня писать клиент-серверный калькулятор, плюс ещё чтоб вводимые формулы с их ответами заносились в базу данных, чтобы можно было к ним обращаться позже.
Добавлено спустя 34 минуты 48 секунд:
+ ещё из кода видно, что это простой калькулятор без анализа вводимой строки
- Mabus
- Забанен
- Сообщения: 5281
- Зарегистрирован: 26 фев 2007, 14:49
- Пол: мужской
- Семейное положение: свободен
- Благодарил (а): 37 раз
- Поблагодарили: 135 раз
- Контактная информация:
Re: Лабораторные и курсовые работы по информатике
FonDrakes, не вижу сложностей =))) если руки от туда торчат написать это не проблема 

Я начал спорить? Значит, скорее всего, я прав.
Государство недалекого будущего.
Государство недалекого будущего.
- nexuos
- Funny Cat
- Сообщения: 1329
- Зарегистрирован: 12 июл 2007, 19:45
- Пол: мужской
- Благодарил (а): 217 раз
- Поблагодарили: 21 раз
Re: Лабораторные и курсовые работы по информатике
FonDrakes писал(а):клиент-серверный калькулятор
, эт как?- FonDrakes
- Сообщения: 3182
- Зарегистрирован: 11 фев 2008, 23:56
- Пол: мужской
- Благодарил (а): 37 раз
- Поблагодарили: 83 раза
- Контактная информация:
Re: Лабораторные и курсовые работы по информатике
Mabus
Да вот пока что голову ломаю и никак.
nexuos
Это только в извращённых фантазиях препода
Шутка. Короче формулы вводить на клиенте, а сам движок с просчётом на сервере.
Да вот пока что голову ломаю и никак.
nexuos
Это только в извращённых фантазиях препода
Шутка. Короче формулы вводить на клиенте, а сам движок с просчётом на сервере.Re: Лабораторные и курсовые работы по информатике
А нафига тебе клиент? сверстай в хтмл страничку, прикрути туда движок калькулятора и БД с результатами.
- FonDrakes
- Сообщения: 3182
- Зарегистрирован: 11 фев 2008, 23:56
- Пол: мужской
- Благодарил (а): 37 раз
- Поблагодарили: 83 раза
- Контактная информация:
Re: Лабораторные и курсовые работы по информатике
Malicious Penetrator
У меня есть HTML страничка с вполне нормальным калькулятором, который меня устраивает почти на все 100%. Написан он вроде как на javascript. Но я дуб в этих вопросах и не могу сказать что javascript и java это одно и тоже, а следовательно страничка не прокатит
У меня есть HTML страничка с вполне нормальным калькулятором, который меня устраивает почти на все 100%. Написан он вроде как на javascript. Но я дуб в этих вопросах и не могу сказать что javascript и java это одно и тоже, а следовательно страничка не прокатит

- nexuos
- Funny Cat
- Сообщения: 1329
- Зарегистрирован: 12 июл 2007, 19:45
- Пол: мужской
- Благодарил (а): 217 раз
- Поблагодарили: 21 раз
Re: Лабораторные и курсовые работы по информатике
FonDrakes писал(а):Короче формулы вводить на клиенте, а сам движок с просчётом на сервере.
Жесть, ну это вполне просто реализуемо, но попахивает извращением!
- Mabus
- Забанен
- Сообщения: 5281
- Зарегистрирован: 26 фев 2007, 14:49
- Пол: мужской
- Семейное положение: свободен
- Благодарил (а): 37 раз
- Поблагодарили: 135 раз
- Контактная информация:
Re: Лабораторные и курсовые работы по информатике
, и слава богу... а то уже совсем дуболомы пошли...FonDrakes писал(а):не могу сказать что javascript и java это одно и тоже
А насчет вычислений на строне сервера ты уточни... что-то тут не то. Учитывая специфику java выполняется она на клиентской машине. А вот доступ к БД с формулами это уже реализация клиента-серверного приложения.
Я начал спорить? Значит, скорее всего, я прав.
Государство недалекого будущего.
Государство недалекого будущего.
- FonDrakes
- Сообщения: 3182
- Зарегистрирован: 11 фев 2008, 23:56
- Пол: мужской
- Благодарил (а): 37 раз
- Поблагодарили: 83 раза
- Контактная информация:
Re: Лабораторные и курсовые работы по информатике
Mabus
Базы и сеть это просто препод хочет чтоб мы в своих курсовых показали работу с сетью и с базами. У меня попался калькулятор, вот и вышло извращение
Базы и сеть это просто препод хочет чтоб мы в своих курсовых показали работу с сетью и с базами. У меня попался калькулятор, вот и вышло извращение

