Skocz do zawartości

Programowanie


xemi

Rekomendowane odpowiedzi

I tak zrobilem :D

Przy uzyciu biblioteki JFreeChart, wystarczy sobie zrobic metode, ktora zwroci wspolrzedne dla funkcji i jazda :)

 

	public CombinedXYPlotDemo1(final String title) {

	super(title);
	final JFreeChart chart = createCombinedChart();
	final ChartPanel panel = new ChartPanel(chart, true, true, true, false,
			true);
	panel.setPreferredSize(new java.awt.Dimension(500, 270));
	setContentPane(panel);
}

private JFreeChart createCombinedChart() {

	XYDataset dataSet = initDataset();

	XYSplineRenderer splineRenderer = new XYSplineRenderer();

	NumberAxis yAxis = new NumberAxis("Y Axis");
	yAxis.setAutoRangeIncludesZero(false);

	XYPlot subPlot = new XYPlot(dataSet, null, yAxis,
			splineRenderer);
	subPlot.setRangeAxisLocation(AxisLocation.TOP_OR_LEFT);

	CombinedDomainXYPlot mainPlot = new CombinedDomainXYPlot(
			new NumberAxis("X Axis"));
	mainPlot.setGap(10.0);
	mainPlot.add(subPlot, 1);
	mainPlot.setOrientation(PlotOrientation.VERTICAL);

	return new JFreeChart("Spline Plot Example",
			JFreeChart.DEFAULT_TITLE_FONT, mainPlot, true);
}

private XYDataset initDataset() {

	final XYSeries dataset = new XYSeries("Y = X (do kwadratu :d)");

	dataset.add(0, 0);
	dataset.add(1, 1);
	dataset.add(2, 4);
	dataset.add(3, 9);
	dataset.add(4, 16);
	dataset.add(5, 25);
	dataset.add(6, 36);

	return new XYSeriesCollection(dataset);
}

public static void main(final String[] args) {

	final CombinedXYPlotDemo1 demo = new CombinedXYPlotDemo1(
			"Y = X (do kwadratu :d)");
	demo.pack();
	RefineryUtilities.centerFrameOnScreen(demo);
	demo.setVisible(true);
}

 

wynik dzialania: http://img521.imageshack.us/my.php?image=splinedemorz1.jpg

 

Okazalo sie latwiejsze niz myslalem, bo usprawnili biblioteke o renderer rysujacy krzywe miedzy poszczegolnymi punktami. Wczesniej trzeba bylo sie narobic ostro :D

Odnośnik do komentarza
  • 2 tygodnie później...

Mam takie małe pytanie, mam taki układ ramki

NORTH

CENTER EAST

rozmiar ramki robi się automatycznie na podstawie rozdzielczości ekranu, 80%, czyli dla 1024x768 to będzie to odpowiednio nieco mniejsze ;)

 

I teraz pytanie, w jaki sposób mogę określić szerokość panelu CENTER? W panelu EAST będzie jakiś text area, czy mogę jakoś % czy w pix określić jaka ma być szerokość EAST?

Odnośnik do komentarza
Mam takie małe pytanie, mam taki układ ramki

NORTH

CENTER EAST

rozmiar ramki robi się automatycznie na podstawie rozdzielczości ekranu, 80%, czyli dla 1024x768 to będzie to odpowiednio nieco mniejsze ;)

 

I teraz pytanie, w jaki sposób mogę określić szerokość panelu CENTER? W panelu EAST będzie jakiś text area, czy mogę jakoś % czy w pix określić jaka ma być szerokość EAST?

a najlepiej poprobuj i z % i z px, zobaczysz jakie efekty i co ci bardziej pasuje;)

ale troche topornie to opisales i do konca nie czaje o co ci chodzi;)

moze kod wrzuc samych ramek i opisz dokladniej jai hcesz miec uklad i jakie wymiary.

Odnośnik do komentarza

Kod ma 500 linijek więc raczej nie opłaca się go wrzucać ;)

 

Chodzi o to, że:

- mam 3 ramki

*północną, gdzie jest parę przycisków koło siebie

*centralną, gdzie jest narysowana szachownica

*wschodnią, gdzie mam 2 przyciski

 

Teraz pytanie, czy mogą jakoś określić jakie są wymiary poszczególnych ramek, albo samemu je jakoś precyzyjnie ustalić. Bo póki co mam dane samo

contentPane.add(rysuj, BorderLayout.CENTER);

co raczej nie pozwala na ustawienie szerokość ramki center, bądź east.

Odnośnik do komentarza

Program: Uzytkownik wprowadza z klawiatury 4 dane - imie, nazwisko, zarobki, staz. Program lapie dane 4 osob kolejno wprowadzonych, sortuje po nazwisku i wypisuje na ekranie przykladowo:

 

Kasia Nowacka 1900 2 lata

 

Chce to zrobic za pomoca tablicy + Scanner. I tu moje pytanie czy to wykonalne? :> Narazie napisalem tyle. Za wszelkie wskazowki i pomoc serdecznie dziekuje :).

 

import java.util.*;
import java.io.*;

public class dane {

public static void main(String[] args) 
{

	char string [] = "imie";
	char string [] = "nazwisko";
	char string [] = "staz";
	char string [] = "zarobki";

	Scanner wejscie=new Scanner(System.in);

		System.out.println("Podaj kolejno imie, nazwisko, zarobki i staz pracy:");
		if(wejscie.hasNextChar()){
		imie=wejscie.nextChar();
		}			
		if(wejscie.hasNextChar()){
		nazwisko=wejscie.nextChar();
		}		
		if(wejscie.hasNextChar()){
		staz=wejscie.nextChar();
		}	
		if(wejscie.hasNextChar()){
		zarobki=wejscie.nextChar();
		}

		System.out.println("sre");
		}

Odnośnik do komentarza

ja bym to zrobil StreamTokenizerem

 

i do tego zapisywalbym te dane do jakiegos zbioru kolekcji bo tam mozna bardzo latwo i szybko te dane posortowac

 

 

 

jeszcze takie pytanie: programowal ktos kiedys w asemblerze? potrzebuje napisac w nim program mnozacy macierze dowolnego rozmiaru

 

 

edyta daje rozwiazanie:

 

package Manort;

/**
*
* @author Fenomen
*/
public class Person implements Comparable{

String surname;
String name;
int salary;
int experience;

Person(String surname, String name, int salary, int experience)
{
	this.surname = surname;
	this.name = name;
	this.salary = salary;
	this.experience = experience;
}

public String getSurname() {return surname;}
public String getName() {return name;}
public int getSalary() {return salary;}
public int getExperience() {return experience;}

public void setSurname(String surname) {this.surname = surname;}
public void setName(String name) {this.name = name;}
public void setSalary(int salary) {this.salary = salary;}
public void setExperience(int experience) {this.experience = experience;}

@Override
public String toString() 
{
	return surname + ", "+name+", "+salary+" zl, "+experience+".";
}

public int compareTo(Object p)
{
	Person person = (Person)p;
	if (this.surname.equals(person.surname))
	{
		if (this.name.equals(person.name))
		{
			if (this.salary == person.salary)
			{
				return (this.experience - person.experience);
			}
			return (this.salary - person.salary);
		}
		return (this.name.compareTo(person.name));
	}
	return (this.surname.compareTo(person.surname));
}

}

 

package Manort;

/**
*
* @author Ja
*/
import java.util.*;
import java.io.*;

public class PersonList {

private ArrayList<Person> list;
private int numberofpeople;

PersonList(int numberofpeople)
{
	this.numberofpeople = numberofpeople;
	list = new ArrayList<Person>(numberofpeople);
}

public void addPerson(String surname, String name, int salary, int experience)
{
	list.add(new Person(surname, name, salary, experience));
}

public void sort()
{
	Collections.sort(list);
}

public void print()
{
	for (int i=0; i<numberofpeople; i++) System.out.println(list.get(i));

}


}

 

package Manort;

/**
*
* @author Ja
*/
import java.io.*;

public class Main {

public static void main(String [] args) throws IOException
{
	StreamTokenizer input = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
	String surname, name;
	int salary, experience;
	System.out.println("Ile osob chcesz wpisac: ");
	input.nextToken();
	int number = (int)input.nval;
	PersonList personlist = new PersonList(number);
	for (int i=0; i<number; i++)
	{
		System.out.println("Podaj nazwisko");
		input.nextToken();
		surname = input.sval;
		System.out.println("Podaj imie");
		input.nextToken();
		name = input.sval;
		System.out.println("Podaj pensje");
		input.nextToken();
		salary = (int)input.nval;
		System.out.println("Podaj doswiadczenie");
		input.nextToken();
		experience = (int)input.nval;
		personlist.addPerson(surname, name, salary, experience);

	}
	System.out.println("Po wstawieniu:");
	personlist.print();
	personlist.sort();
	System.out.println("po posortowaniu");
	personlist.print();
}


}

 

dolaczam jeszcze przykladowy wydruk:

 

init:

deps-jar:

compile-single:

run-single:

Ile osob chcesz wpisac:

3

Podaj nazwisko

Nowak

Podaj imie

Jan

Podaj pensje

1000

Podaj doswiadczenie

9

Podaj nazwisko

Kowalski

Podaj imie

Marian

Podaj pensje

1900

Podaj doswiadczenie

Podaj nazwisko

7

Podaj imie

Araszczuk

Zygmunt

Podaj pensje

1200

Podaj doswiadczenie

5

Po wstawieniu:

Nowak, Jan, 1000 zl, 9.

Kowalski, Marian, 1900 zl, 7.

Araszczuk, Zygmunt, 1200 zl, 5.

po posortowaniu

Araszczuk, Zygmunt, 1200 zl, 5.

Kowalski, Marian, 1900 zl, 7.

Nowak, Jan, 1000 zl, 9.

BUILD SUCCESSFUL (total time: 31 seconds)

Odnośnik do komentarza

Thx :). Pisalem to dla kolegi i taki ostatecznie dalem mu efekt.

 

import javax.swing.*;
import java.util.*;


class Osoba1
{ String nazwisko; float staz; String imie; float zarobki;		//Tworzy zmienne typu string (znakowy)
static int ile_obiektow = 0;
public void Inicjuj()
{ile_obiektow++;}

public	void Nadaj_nazwisko(String lan)
{ nazwisko=lan;}

public  String Podaj_nazwisko()								//Wszystkie publiki - tworzy zmienne publiczne
{return nazwisko;}

public	void Nadaj_imie(String lan)
{ imie=lan;}

public String Podaj_imie()
{return imie;}

public	void Nadaj_staz(float staz_)
{ staz=staz_;}

public float Podaj_staz()
{return staz;}

public void Nadaj_zarobki(float zarobki_)
{ zarobki=zarobki_;}

public float Podaj_zarobki()
{return zarobki;}


public void Wstaw()
{ String S; 
Inicjuj();
S = JOptionPane.showInputDialog(null, "Podaj nazwisko"); // wyswietla komunikat bys podal dane
Nadaj_nazwisko(S);										//Pobiera dane
S = JOptionPane.showInputDialog(null, "Podaj staz"); // wyswietla komunikat bys podal dane
Nadaj_staz(Float.parseFloat(S));						//Pobiera dane
S = JOptionPane.showInputDialog(null, "Podaj imie"); // wyswietla komunikat bys podal dane
Nadaj_imie(S);											//Pobiera dane
S = JOptionPane.showInputDialog(null, "Podaj zarobki"); // wyswietla komunikat bys podal dane
Nadaj_zarobki(Float.parseFloat(S));						//Pobiera dane
}

public void Wyswietl()
{
String napis="";
napis+="\n Nazwisko: "+nazwisko; 
napis+="\n Średnia: "+staz; 
napis+="\n Imie: "+imie; 
napis+="\n Zarobki: "+zarobki;
napis+="\n Liczba osób jest równa "+ile_obiektow; JOptionPane.showMessageDialog(null, napis);
}
}

 

import javax.swing.*;
import java.util.*;

public class Cala{ 
static public  void main(String args[])
{Osoba1 os1 = new Osoba1();
os1.Wstaw(); os1.Wyswietl(); System.exit(0);
}
}

 

Powiedzialem mu by dopisal sobie petle ile osob ma powtarzac i dodal sortowanie. Ja juz mam zaliczone Programowanie :)

Odnośnik do komentarza

u mnie ten kolega by nie zaliczyl ;d

 

Chocby ze wzgledu na takie pozorne pierdoly jak:

- konwencja: nazwy klas piszemy z duzej, nazwy metod zaczynamy z malych liter i w ogole w Javie obowiazuje zasada "wielblada" :) - jesli chcemy miec metode "pobierz dane misia" to nazywamy ta metode: pobierzDaneMisia, a nie PobierzDaneMisia, nie Pobierz_dane_misia itd. To sa podstawy

- zamiast metod Podaj_Imie, Nadaj_Imie zrobilbym tzw. gettery/settery, akcesory, mutatory, czyli getImie, setNazwisko - mechanizm getterow/setterow jest bardzo czesto wykorzystywany przez rozne Frameworki (np. Spring Framework) i jest to, podobnie jak pierwszy punkt, standardem w Javie (mimo, ze tez ma przeciwnikow bo tak naprawde troche lamie zasady obiektowosci). Oczywiscie mozna tego nie wiedziec, ale od tego jest wykladowca, aby to powiedzial. Jak nie powiedzial to znaczy, ze to dupa, a nie wykladowca.

 

Ze juz nie wspomne o tak banalnej wydawaloby sie sprawie jak czytelnosc kodu :)

Odnośnik do komentarza
  • 4 miesiące później...

Pytanie lamera :D

#include "stdafx.h"

int dodaj (int, int);
int main(int argc, char* argv[])
{
int x,y,wynik;
wynik=0;
	printf("podaj pierwsza liczbę: ");
	scanf("%d",&x);
		printf("Podaj druga liczbe: ");
		scanf("%d",&y);
	wynik=dodaj(x,y);
	printf("\nSuma: %d\n",wynik);
		return 0;
}
int dodaj (int x, int y)
{
return x+y;
}

 

Co zrobic, zeby debugowanie mi sie nie zamykalo od razu.. (nie zdaze nawet zobaczyc wyniku na ekranie)

Odnośnik do komentarza

Krotka pilka: czemu po uruchomieniu tego kodu (java) nie wyswietla mi sie przycisk "Load image"? :|

 

edit: problem rozwiazany (jakubkwa :* )

 

package graphics1;

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

class Panel extends JPanel
{
public static final long serialVersionUID = 123456L;  
public void paintComponent(Graphics g)
{

}
}

public class Graphics2 implements ActionListener
{
JFrame window;
JPanel panel;
JButton drawlinebutton;
JButton drawrectanglebutton;
JButton loadimagebutton;
JButton exitbutton;

public static void main(String[] args)
{
	Graphics1 graphics1 = new Graphics1();
	graphics1.userInterface();
}

public void userInterface()
{
	window = new JFrame();
	window.setTitle("Graphics1");
	window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	window.setLocation(100, 100);
	window.setSize(800, 600);

	panel = new Panel();
	panel.setSize(window.getSize());
	panel.setVisible(true);

	drawlinebutton = new JButton("Draw line");
	drawlinebutton.setSize(drawlinebutton.getPreferredSize());
	drawlinebutton.setLocation(50, 100);
	drawlinebutton.addActionListener(this);

	drawrectanglebutton = new JButton("Draw rectangle");
	drawrectanglebutton.setSize(drawrectanglebutton.getPreferredSize());
	drawrectanglebutton.setLocation(50, 200);
	drawrectanglebutton.addActionListener(this);

	loadimagebutton = new JButton("Load image");
	loadimagebutton.setSize(loadimagebutton.getPreferredSize());
	loadimagebutton.setLocation(50, 300);
	loadimagebutton.addActionListener(this);

	exitbutton = new JButton("Exit");
	exitbutton.setSize(exitbutton.getPreferredSize());
	exitbutton.setLocation(50, 400);
	exitbutton.addActionListener(this);

	panel.add(drawlinebutton);
	panel.add(drawrectanglebutton);
	panel.add(loadimagebutton);
	panel.add(exitbutton);

	window.getContentPane().add(panel);
	window.setVisible(true);
}

public void actionPerformed(ActionEvent event)
{
	Graphics2D graphics2d = (Graphics2D)panel.getGraphics();
	Object source = event.getSource();
	if (source == drawlinebutton)
	{
			graphics2d.setXORMode(Color.white);
			graphics2d.setStroke(new BasicStroke(5));
			graphics2d.setColor(new Color(0, 255, 255));
			graphics2d.drawLine(300, 300, 400, 400);
	}
	else if (source == drawrectanglebutton)
	{
			graphics2d.setXORMode(Color.white);
			graphics2d.setStroke(new BasicStroke(3));
			graphics2d.setColor(new Color(255, 0, 0));
			Rectangle rect = new Rectangle(100, 100, 100, 100);
			graphics2d.fill(rect);
	}
	else if (source == loadimagebutton)
	{
		System.exit(-1);
	}
	else if (source == exitbutton)
	{
		System.exit(-1);
	}
}

}

Odnośnik do komentarza

Programowanie na 2 roku czas zaczac again :| Tym razem tez potrzebuje malej pomocy. Zalozenie jest dosc proste. Program ma wypisac 20 pierwszych liczb ciagu Fibonacciego. Narazie zrobilem tyle..

 

public class Fib20 {

public static int fib(int n){
	if ((n==1)||(n==2))
		return 1;
	else
		return fib(n-1)+fib(n-2);
}

public static void main(String[] args) {
	int n;
	System.out.println("Podaj, ile wyrazow ciagu Fibonacciego obliczyc i wypisac");

			[???]

	System.out.println(n+"-ty wyraz ciagu Fibonacciego: "+fib(n));
	return; 
}
}

 

Nie musi byc zczytywana wartosc n z klawiatury. Moze byc algorytm w srodku liczacy. Z gory dziekuje :) Jak ja tego Programowania nienawidze.. :/

Odnośnik do komentarza

Efektywniej, bez uzycia rekurencji:

 

/**
*
* @author Fenomen
*/
public class Fibonacci 
{
public static int Fib(int n)
{
	int first = 1;
	int second = 1;
	if (n == 1) return 1;
	else if (n == 2) return 2;
	else
	{
		for (int i=3; i<=n; i++)
		{
			second += first;
			first = second - first;
		}
	}
	return second;
}

public static void main(String[] args)
{
	int n=6;
	System.out.println("Wartosc ciagu Fibonacciego dla "+n+" wynosi "+Fib(n));
}

}

Odnośnik do komentarza
Efektywniej, bez uzycia rekurencji:

 

[...]
	if (n == 1) return 1;
	else if (n == 2) return 2;
	else
	{
		for (int i=3; i<=n; i++)
		{
			second += first;
			first = second - first;
		}
	}
	return second;
[...]

Jak juz o efektywnosci mowimy:

 

if (n > 0 && n < 3) return n;
	for (int i=3; i<=n; i++)
	{
		second += first;
		first = second - first;
	}
	return second;
	}

Odnośnik do komentarza

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić obrazków. Dodaj lub załącz obrazki z adresu URL.

Ładowanie
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...