Skocz do zawartości

Programowanie


xemi

Rekomendowane odpowiedzi

hmmm... chyba mam jeszcze większy problem

help needed :|

 

10c. W pliku o danej nazwie znajduje się pewien tekst. Ile jest wierszy tekstu? Z ilu znaków składa się ten tekst ? Ile jest w nim „czarnych znaków” ? Jaką długość ma najdłuższy wiersz ? Usuń z niego wszystkie wiersze zaczynające się ciągiem „//” . Wyświetl tekst na ekranie pomijając zbędne odstępy między słowami itp.

10d. W pliku binarnym umieszczono ciąg liczb rzeczywistych. Napisz program wczytujący ten ciąg liczb i obliczający wartość średnią i odchylenie średniokwadratowe (sigma) jego elementów . Czy można to zrobić odczytując dane ze zbioru tylko raz ? UWAGA: plik może mieć tak dużo wartości ,że nie zmieszczą się one w tablicy.

Odnośnik do komentarza

Czy jest ktoś zajmujący się grafiką komputeorwą ?

 

Mam zadany projekt "Skalowanie map bitowych (zmiejszanie/powiększanie)"

Program ma być napisacy w języku C z wykorzystaniem biblioteki allegro. W zasadzie mam wszystko tyle brakuje mi tej najważniejszej rzeczy, zmiejszania i powiększania. Nie wiem jak to zaimplementować. Ktoś może coś doradzić ?

Odnośnik do komentarza

Obliczasz stosunek oczekiwanego boku bitmapy do oryginalnego rozmiaru (w pikselach). Potem rysujesz tyle razy dany piksel ile wynosil ten stosunek (oczywiści obcinasz do int). To samo w pionie, ale z liniami.

 

Algorytm stary jak świat, siermiężnie prosty, pisany jeszcze w asm :)

 

http://my.opera.com/lenczewski/blog/matlab...razu-metoda-naj

Odnośnik do komentarza

Mam takie zadanie:

Zdefiniuj klase Moja o metode int ile (double eps, double x) obliczajaca ile wyrazow nalezy zsumowac aby podana nizej rownosc byla spelniona z dokladnoscia eps dla x*x<1:

suma(od k=1 do nieskonczonosci) k*x^k = x / (1-x)^2

wymyslilem to sobie tak, zeby podzielic lewa strone przez prawa i ze ten stosunek musi byc mniejszy od eps... wtedy program wyglada mniej wiecej tak:

 

public static double potega(double podstawa, double wykladnik) 
	{
		double potega = 1;
		if (podstawa>0 && wykladnik>0)
		{
			if (podstawa == 0) return 0;
			else if (podstawa == 1) return potega;
			else 
				{
					if (wykladnik == 0) return 1;
					else if (wykladnik ==1) return podstawa;
					else
						{
							for (int i=0; i<wykladnik; i++)
								{
									potega *= podstawa;
								}
							}
						}
					}
					return potega;
				}


public static int ile(double x, double eps)
		{
			double suma = x;
			int i = 1;
			while ((suma*(1-x)*(1-x)/x) > eps)
				{
					i++;
					suma += potega(i,x);
				}
			return i;
		}

 

czy to moze byc tak zrobione?

 

generalnie program dziala jesli w metodzie ile podam w miare normalne argumenty (do jednego lub dwoch miejsc po przecinku), przy wiekszych dokladnosciach (trzy lub cztery miejsca po przecinku sie zawiesza :]

Odnośnik do komentarza

Mam jeszcze jedno zadanie, tym razem trochę bardziej złożone - chodzi o zastosowanie kolekcji. Też bym prosił żeby ktoś na to rzucił okiem :)

 

mam Hurtownie, ona wspolpracuje ze zbiorem Dostawcow ( nazwa_dostawcy i zbior Towarow(nazwa, ilosc, cena ) , ktore moze dostarczac )

1) dopiszTowar( ) - zapisuje ze dany dostawca moze dostarczac towar o danej nazwie w podanej cenie i ilosci

2) ileTowarow - ile roznych towarow mozemy sprzedawac

3) mogeZamowic - u ktorego dostawcy mozna zamowi podany towar w potrzebnej ilosci, wynikiem powinna byc nazwa dostawcy i cena towaru

4) najtanszy - ktory dostawca ma podany towar w najnizszej cenie

5) zapiszZamowienie - jako argument podajemy ile i jakich towarow potrzebujemy, wynikiem ma byczapisane w pliku textowym 'zamowienie.txt' zestawienie. Kazdy wiersz pliku powinien zawierac: numer pozycji, nazwe towaru, ilosc, cene, i nazwwe dostawcy

UWAGA: pomijamy zlecenia ktorych nie mozemy zrealizowac [ czyli nie mamy odpowiedniego dostawcy ]

 

 

import java.util.*;

public class Dostawca
{
	String nazwa;
	HashSet<Towar> towary = new HashSet<Towar>();

	void dopiszTowar(String nazwa, int ilosc, int cena)
		{
			Towar towar = new Towar(nazwa, ilosc, cena);
			towary.add(towar);
		}

}

 

public class Towar
{
	String nazwa;
	int ilosc;
	double cena;

	Towar(String nazwa, int ilosc, int cena)
		{
			this.nazwa = nazwa;
			this.ilosc = ilosc;
			this.cena = cena;
		}


}

 

public class Dostepny
{
	String nazwa;
	double cena;
}

 

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

public class Hurtownia
{
	HashSet<Dostawca> dostawcy = new HashSet<Dostawca>();

	int ileTowarow()
		{
			int ile = 0;
			for (Dostawca d : dostawcy)
				{
					for (Towar t : d.towary)
						{
							ile++;
						}
				}
			return ile;
		}

	Dostepny mogeZamowic(String nazwa_towaru, int ilosc_towaru)
		{
			Dostepny dost = new Dostepny();
			for (Dostawca d : dostawcy)
				{
					for (Towar t : d.towary)
						{
							if (t.nazwa.equals(nazwa_towaru) && (t.ilosc == ilosc_towaru))
							dost.nazwa = nazwa_towaru;
							dost.cena = t.cena;
						}
				 }
			return dost;
		 }

   double najnizszaCenaTowaru(String n)
	   {
		double tablica[] = new double [ileTowarow()];
			for (int i=0; i<tablica.length; i++)
			{
					for (Dostawca d : dostawcy)
					{
						for (Towar t : d.towary)
							{
								if (t.nazwa.equals(n))
								tablica[i] = t.cena;
							}
						}
			}
			double cena = tablica[0];	
			for (int i=1; i<tablica.length; i++)
				{
					if (tablica[i] < cena) cena = tablica[i];
				}
		return cena;
			}  

   String najtanszy(String k)
		{
			String naj = " ";
			for (Dostawca d : dostawcy)
				{
					for (Towar t : d.towary)
						{
							if (t.cena == najnizszaCenaTowaru(k)) naj = d.nazwa;
						}
				}
			 return naj;   
		}

   void zapiszZamowienie() throws IOException
		{
			PrintWriter zapis = new PrintWriter(new BufferedWriter(new FileWriter("zamowienie.txt")),true);
			// zadanie skoncze jak zrozumiem tresc polecenia :)
		}
}

Odnośnik do komentarza

Mam problem, w jakimś stopniu wiąże się on z programowaniem. Mianowicie poszukuję informacji z inżynierii (o)programowania, czym zajmują się poszczególne osoby: analityk, projektant, weryfikator, serwisant. Projektant występuje w dwóch wersjach : architektura i implementacja. Szukałem na necie ale tam jest tylko ogólnikowo to opisane, a ja potrzebuję większej rozpiski. Czy ktoś może mieć jakieśmateriały u siebie, albo wie gdzie to można znaleźć ?

Odnośnik do komentarza
Mam jeszcze jedno zadanie, tym razem trochę bardziej złożone - chodzi o zastosowanie kolekcji. Też bym prosił żeby ktoś na to rzucił okiem :)

 

mam Hurtownie, ona wspolpracuje ze zbiorem Dostawcow ( nazwa_dostawcy i zbior Towarow(nazwa, ilosc, cena ) , ktore moze dostarczac )

1) dopiszTowar( ) - zapisuje ze dany dostawca moze dostarczac towar o danej nazwie w podanej cenie i ilosci

2) ileTowarow - ile roznych towarow mozemy sprzedawac

3) mogeZamowic - u ktorego dostawcy mozna zamowi podany towar w potrzebnej ilosci, wynikiem powinna byc nazwa dostawcy i cena towaru

4) najtanszy - ktory dostawca ma podany towar w najnizszej cenie

5) zapiszZamowienie - jako argument podajemy ile i jakich towarow potrzebujemy, wynikiem ma byczapisane w pliku textowym 'zamowienie.txt' zestawienie. Kazdy wiersz pliku powinien zawierac: numer pozycji, nazwe towaru, ilosc, cene, i nazwwe dostawcy

UWAGA: pomijamy zlecenia ktorych nie mozemy zrealizowac [ czyli nie mamy odpowiedniego dostawcy ]

 

Uch, długie :)

W każdym razie: w ileTowarow nie sprawdzasz, czy przypadkiem towar się nie powtarza.

W mogeZamowic, linijka "dost.cena = t.cena;" wykona się zawsze - błąd

warunek też powinien być raczej if (t.nazwa.equals(nazwa_towaru) && (t.ilosc >= ilosc_towaru))

Co więcej, co jeśli jeden ma 2 sztuki a inny 3 sztuki, a Ty chcesz 5?

najnizszaCenaTowaru jest niedobra, lepiej napisz jeszcze raz

 

 

import java.util.*;

public class Dostawca
{
	String nazwa;
	HashSet<Towar> towary = new HashSet<Towar>();

	void dopiszTowar(String nazwa, int ilosc, int cena)
		{
			Towar towar = new Towar(nazwa, ilosc, cena);
			towary.add(towar);
		}

}

 

public class Towar
{
	String nazwa;
	int ilosc;
	double cena;

	Towar(String nazwa, int ilosc, int cena)
		{
			this.nazwa = nazwa;
			this.ilosc = ilosc;
			this.cena = cena;
		}


}

 

public class Dostepny
{
	String nazwa;
	double cena;
}

 

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

public class Hurtownia
{
	HashSet<Dostawca> dostawcy = new HashSet<Dostawca>();

	int ileTowarow()
		{
			int ile = 0;
			for (Dostawca d : dostawcy)
				{
					for (Towar t : d.towary)
						{
							ile++;
						}
				}
			return ile;
		}

	Dostepny mogeZamowic(String nazwa_towaru, int ilosc_towaru)
		{
			Dostepny dost = new Dostepny();
			for (Dostawca d : dostawcy)
				{
					for (Towar t : d.towary)
						{
							if (t.nazwa.equals(nazwa_towaru) && (t.ilosc == ilosc_towaru))
							dost.nazwa = nazwa_towaru;
							dost.cena = t.cena;
						}
				 }
			return dost;
		 }

   double najnizszaCenaTowaru(String n)
	   {
		double tablica[] = new double [ileTowarow()];
			for (int i=0; i<tablica.length; i++)
			{
					for (Dostawca d : dostawcy)
					{
						for (Towar t : d.towary)
							{
								if (t.nazwa.equals(n))
								tablica[i] = t.cena;
							}
						}
			}
			double cena = tablica[0];	
			for (int i=1; i<tablica.length; i++)
				{
					if (tablica[i] < cena) cena = tablica[i];
				}
		return cena;
			}  

   String najtanszy(String k)
		{
			String naj = " ";
			for (Dostawca d : dostawcy)
				{
					for (Towar t : d.towary)
						{
							if (t.cena == najnizszaCenaTowaru(k)) naj = d.nazwa;
						}
				}
			 return naj;   
		}

   void zapiszZamowienie() throws IOException
		{
			PrintWriter zapis = new PrintWriter(new BufferedWriter(new FileWriter("zamowienie.txt")),true);
			// zadanie skoncze jak zrozumiem tresc polecenia :)
		}
}

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

Mam takie zadanie: dane są klasy: class Punkt1 {int x, int y}, class A {HashSet<Punkt1> punkty; ...}. Napisz metode, której wynikiem są punkty tworzące najdłuższy odcinek poziomy. Ja to sobie wymyśliłem tak, że najpierw muszę mieć klasę pomocniczą, która posłuży mi jako typ zwracanego wyniku. Gdy już będę miał tę klasę, to po prostu będę porównywał pola x poszczególnych obiektów typu Punkt. Na koniec zwrócę jako wynik te dwa punkty, których różnica współrzędnych x jest największa. Wszystko jest ładnie, pięknie, ale pojawia się problem: mianowicie gdy zwracany jest wynik, to jako współrzędna y (czyli ta, z którą nic nie robimy) zostaje nadpisana taką samą wartością, jaką posiada współrzędna x.

Any ideas?

 

public class Punkt1
{
int x;
int y;

Punkt1(int x, int y)
	{
		this.x = x;
		this.y = y;
	}

Punkt1()
	{
	}
}

 

public class ParaPunktow
{
	Punkt1 punkt1 = new Punkt1();
	Punkt1 punkt2 = new Punkt1();
}

 

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

public class A
{
	StreamTokenizer strTok = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
	HashSet<Punkt1> punkty = new HashSet<Punkt1>();

	void dodawaniePunktow() throws Exception
	{
		System.out.println("Podaj wspolrzedne punktu, aby zakonczyc wpisz >>quit<<");
		while (strTok.nextToken() == StreamTokenizer.TT_NUMBER)
		{
			int a = (int) strTok.nval;
			int b = (int) strTok.nval;
			punkty.add(new Punkt1(a,b));
		}
	}

	ParaPunktow najdluzszyPoziomy()
		{
			int pom = 0;
			int pom2 = 0;
			ParaPunktow para = new ParaPunktow();
			for (Punkt1 p : punkty)
				{
					for (Punkt1 q : punkty)
						{
							if (p.x != q.x)
								{
									if (p.x > q.x) pom = (p.x - q.x);
									else pom = (q.x - p.x);
									if (pom > pom2)
										{
											pom2 = pom;
											para.punkt1 = p;
											para.punkt2 = q;
										}
								}
						}
				}
			return para;
		}
}

Odnośnik do komentarza

Nie znam klasy StreamTokenizer, ale wygląda na to, że to w jej użyciu tkwi błąd. Mianowicie pobierasz w pętli token, a następnie przypisujesz jego wartość liczbową zarówno zmiennej a, jak i b. Współrzędna y nie jest więc wcale zmieniana, tylko ustawiana na taką samą jak x już na początku. Musisz wywołać metodę nextToken() jeszcze raz przed drugim pobraniem wartości atrybutu nval.

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

Oczywiscie wiem gdzie jest blad, nie mialo prawo dzialac, juz wiem jak zrobic zeby dzialalo.

heh zly przyklad sobie na dzialanie tego zrobilem.

PS. ale nie wiem jak przeedytowac tamten post, albo jak go usunac.

 

PS2. dzieki za usuniecie wczesniejszego posta. Tego jakos mi sie udalo przeedytowac (nadal nie wiem jak ta opcja dziala)

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

Nadal męczę pascala :] Tym razem moje zadanie polega na stworzeniu okręgu i opisanego na nim kwadratu (tak do upadłego :D ). Kombinowałem, kombinowałem i wyszło mi takie coś:

 

program rys;
uses graph;
var st,tr,i,x,y,a,b:integer;
begin
detectgraph (st,tr);
initgraph (st,tr,'');
setcolor(white);
setbkcolor(blue);
x:=GetMaxX div 2;
y:=GetMaxY div 2;
a:=30;
b:=trunc (sqrt(2));
  rectangle(x-a,y+a,x+a,y-a);
  for i:=1 to 10 do
  rectangle(x-i*a*b,y+i*a*b,x+i*a*b,y-i*a*b);
  circle(x,y,trunc((a*b)));
  for i:=1 to 10 do
  circle(x,y, trunc ((i*a*b)));
readln;
closegraph;
end.

 

Problem polega na tym, że kwadraty 3 i powyżej zaczynają przecinać okręgi. Gdzie mogłem się walnąć?

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

mam takie zadanie i nie wiem jak je ugryzc, prosilbym o pomoc :)

1. Oprogramuj klase OrderedArrayList dziedziczaca z klasy ArrayList. Stworz nowa definicje metody add, ktorej zadaniem jest wstawianie do listy na wlasciwej pozycji (tzn zgodnie z uporzadkowaniem)

2. Oprogramuj klase SetLList dziedziczaca z klasy OrderedArrayList. Klasa SetList ma reprezentowac zbior niepowtarzajacych sie elementow (dla ulatwienia przy manipulowaniu na zbiorze nalezy wykorzystac reprezentacje listy uporzadkowanej). Stworz nowa definicje metody add, ktorej zadaniem jest wstawienie do listy uporzadkowanej elementu pod warunkiem, ze element nie znajduje sie na liscie.

Odnośnik do komentarza

Hmm, nie wiem za bardzo jak w Javie wyglądają te typy, ale ogólny zarys wygląda tak:

ad1) Kopiujesz wszystkie elementy listy (od końca) na pozycję i+1 aż do momentu znalezienia elementu równego dodawanemu.

n = count(list);
i = n;
while (list[i] > new)
{
 list[i+1] = list[i];
 i--;
}
list[i] = new;

 

ad2) Wypadałoby przed pętlą stwierdzić czy element jest na liście (żeby nie kopiować jak jest). Algorytmów na to jest trochę. Być może istnieje też jakieś bardziej optymalne rozwiązanie, ale nie przychodzi mi w tej chwili do głowy.

 

Nie jestem też przekonany co do proponowanego rozwiązania rozszerzenia klasy (zapewne za pomocą konstrukcji extends), ale to temat na osobny wątek, ba na książkę :]

Odnośnik do komentarza

probowalem zrobic tak jak napisales, ale w zaden sposob nie udalo mi sie przeniesc tego na kod javy (tzn niby znalazlem odpowiednie metody, ale kompilator tego nie łyka); zrobilem natomiast po swojemu - wrzuce tutaj caly kod bo mam w sumie dwa pytania, a nie jedno :)

 

package zaliczenie2;

import java.util.*;

public class OrderedArrayList extends ArrayList
{
ArrayList<Double> lista = new ArrayList<Double>();

public boolean add(double value)
{
		int i=1;
		while (lista.get(i)<value) i++;
		lista.add(i,value);
		return true;
	}

public boolean addFirst(double value)
{
	lista.add(0, value);
	return true;
}
}

tak zrobilem te klase, ale przy uruchomieniu programu wywala wyjatek IndexOutOfBoundsException, ktorego nie potrafie naprawic :/

 

druga rzecz, przy ktorej program sie wysypuje to metoda zamieniajaca przecinki na kropki

// public static void zamienPrzecinkiNaKropki(String nazwaPliku) throws IOException
{
	BufferedReader odczyt = new BufferedReader(new FileReader(nazwaPliku));
	String linia_tekstu;
	while ((linia_tekstu = odczyt.readLine()) != null)
	{
		(linia_tekstu = odczyt.readLine()).replace(",",".");
	}
}

tutaj tez program sie skompiluje, ale podobnie jak wczesniej, przy uruchomieniu wywala sie wyjatek, tym razem jest to NullPointerException i rowniez nie wiem jak temu zaradzic

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ę...