mulgear6 Mesaj tarihi: Ağustos 17, 2012 Paylaş Mesaj tarihi: Ağustos 17, 2012 abschluss 1 Aufgabenstellung In dieser Abschlussaufgabe sollen Sie ein Programm schreiben, das in der Lage ist, Boolesche Formeln (in GbI "aussagenlogische Formeln" genannt) darzustellen und einfache Operationen auf ihnen auszuführen. Boolesche Formeln Im Rahmen dieser Aufgabe werden wir Boolesche Formeln betrachten, die folgende Struktur haben. Unsere Formeln bestehen aus den Werten true / false, Variablen, dem logischen Und sowie dem logischen Oder und der Negation: Werte: true und false Variablen: Eine beliebige Anzahl von Variablen mit den Namen vi. Dabei ist i die Nummer der Variable. Diese Nummern müssen nicht fortlaufend sein, sollen aber im Bereich ? 0 und < Integer.MAX_VALUE liegen. Negation: Eine bestehende Boolesche Formel f kann zu der Booleschen Formel (not f) erweitert werden, welche die Negation von f darstellt. Logisches Und (Konjunktion): Zwei bestehende Boolesche Formeln f1, f2 können mit and verknüpft werden: (f1 and f2) ist wieder eine Boolesche Formel. Logisches Oder (Disjunktion): Zwei bestehende Boolesche Formeln f1, f2 können mit or verknüpft werden: (f1 or f2) ist wieder eine Boolesche Formel. Hinweise: Abgesehen von not, and und or muss Ihr Programm keine weiteren Operatoren unterstützen - es sollte aber so aufgebaut sein, dass sich diese leicht einbauen lassen. Achten Sie auf die Klammerung! Es sollen keine Klammern weggelassen werden, auch keine äußeren Klammern! Beispiele true ist eine Boolesche Formel. v3 ist eine Boolesche Formel. (not true) ist eine Boolesche Formel. ((v1 or v2) and (not v3)) ist eine Boolesche Formel, denn: v1, v2 und v3 sind Variablen und damit Boolesche Formeln. Demnach sind auch (v1 or v2) und (not v3) Boolesche Formeln. Da (v1 or v2) und (not v3) Boolesche Formeln sind, ist auch ((v1 or v2) and (not v3)) eine Boolesche Formel Weder or (v3 and true) noch (not) sind Boolesche Formeln. Operationen auf Booleschen Formeln Im Rahmen dieser Aufgabe sollen Sie zwei rekursiv definierte Operationen auf Boolesche Formeln implementieren: Das Ersetzen (Substitution) von Variablen durch Formeln und das Vereinfachen von bestehenden Formeln. Ersetzen / Substitution Sind f und g zwei Boolesche Formeln und vi eine Variable, so bezeichnet f' = f [g/vi] diejenige Boolesche Formel, die aus f dadurch hervorgeht, dass jedes Vorkommen von vi in f durch g ersetzt wird. Beachten Sie dabei, dass Vorkommen von vi in g nicht ersetzt werden. Die Operation f [g/vi] ist wie folgt definiert: vj [g/vi] › vj Variablen vj mit j ? i werden nicht ersetzt. Gleiches gilt für Werte. vi [g/vi] › g Die Variable vi wird durch g ersetzt. (not f1) [g/vi] › (not f1 [g/vi]) Bei einer Negation wird die Substitution zunächst in der negierten Formel durchgeführt und das Ergebnis anschließend wieder negiert. ( f1 and f2 ) [g/vi] › ( f1 [g/vi] and f2 [g/vi] ) Bei einer Konjunktion wird die Substitution zunächst auf den beiden Teilformeln durchgeführt und die Ergebnisse anschließend mit and verknüpft. ( f1 or f2 ) [g/vi] › ( f1 [g/vi] or f2 [g/vi] ) Eine Disjunktion wird analog zur Konjunktion behandelt. Durch rekursives Anwenden dieser Regeln lassen sich alle Vorkommen von vi in f durch g ersetzen. Vereinfachen Bei dieser Operation geht es darum, eine Boolesche Formel mit Hilfe bestimmter Regeln in eine andere Boolesche Formel von einfacherer Gestalt zu verwandeln, die aber äquivalent ist, d.h. bei jeder Belegung der in ihr vorkommenden Variablen zum selben Wahrheitswert auswertet. Hierzu werden Teilformeln eliminiert, die unabhängig von den Belegungen der Variablen immer zu true bzw. false auswerten. Beispielsweise kann ((v1 or (not v1)) and v2) zu v2 vereinfacht werden, da (v1 and (not v1)) für jede Belegung von v1 immer zu false auswertet und (false or v2) für jede Belegung von v2 zum selben Wahrheitswert auswertet wie v2. Insgesamt sollen (genau) die folgenden Regeln angewendet werden: Variablen und Werte: Variablen und Werte werden stets zu sich selbst vereinfacht. Negation: (not false) › true (not true) › false (not (not f)) › f Negierte Werte werden ausgewertet und eine doppelte Negation wird entfernt. Konjunktion: (f and true) › f (true and f) › f (f and false) › false (false and f) › false (f and (not f)) › false ((not f) and f) › false (f and f) › f Konjunktionen mit true werden weggelassen, Konjunktionen mit false werden immer zu false vereinfacht. Die Konjunktion einer Formel mit ihrer Negation wird zu false vereinfacht. Eine Konjunktion von zwei identischen Formeln f ist äquivalent zu f selbst und wird daher zu f vereinfacht. Disjunktion: (f or false) › f (false or f) › f (f or true) › true (true or f) › true (f or (not f)) › true ((not f) or f) › true (f or f) › f Disjunktionen mit false werden weggelassen, Disjuktionen mit true werden immer zu true vereinfacht. Die Disjunktion einer Formel mit ihrer Negation wird zu true vereinfacht. Eine Disjunktion von zwei identischen Formeln f ist äquivalent zu f selbst und wird daher zu f vereinfacht. Hinweise: Die Anwendung der Vereinfachungsregeln erfolgt rekursiv. Solange die vorliegende Formel weder ein Wert noch eine Variable ist, also noch weitere Teilformeln enthält, wenden sie die Vereinfachungsregeln zuerst auf die Teilformeln an, bevor sie die Formel selbst vereinfachen. Beispiel: Die Formel (v1 and (v2 or (not v2))) wird vereinfacht, indem zunächst die Teilformeln v1 und (v2 or ((not v2))) vereinfacht werden. v1 ist schon vereinfacht und (v2 or ((not v2))) kann mittels der Regel (f or (not f)) › true zu true vereinfacht werden. Auf die so entstandene Formel (v1 and true) kann nun die Regel (f and true) › f angewendet werden, wodurch sie zu v1 vereinfacht wird. Insgesamt wird also (v1 and (v2 or ((not v2)))) zu v1 vereinfacht. Formeln werden hier rein syntaktisch behandelt. Bei der Prüfung zweier Formeln auf Gleichheit dürfen Sie also keinerlei Eigenschaften der Operatoren not, and oder or ausnutzen. Beispielsweise sind (f1 and f2) und (f2 and f1) nicht gleich und auch (f1 or (f2 or f3)) und ((f1 or f2) or f3) sind verschieden. Die Kommandoschnittstelle Sie sollen auch eine Kommandoschnittstelle implementieren. Mit dieser soll man Boolesche Formeln schrittweise aufbauen, vereinfachen und substituieren können. Um auch komplexe Formeln aufbauen zu können, soll Ihr Programm einen Formelspeicher für bereits zusammengesetzte Formeln verwalten. Mit Hilfe von diesem sollen bereits gebaute Formeln über Referenzen auf Ihren Index im Formelspeicher angesprochen werden können. Wird dann in einem Befehl eine solche Referenz verwendet, so soll für diese Referenz die referenzierte Formel eingesetzt werden. Referenznummern beginnen immer mit 0 und werden aufsteigend vergeben. Beispiel: bool> not v1 #0 = (not v1) bool> and #0 v1 #1 = ((not v1) and v1) Mit dem ersten Befehl wird die Formel (not v1) definiert. Die Ausgabe deutet an, dass sich diese Formel nun über die Referenz #0 ansprechen lässt. Im nächsten Befehl wird mit dann die Konjunktion der ersten Formel mit v1 gebildet, die im Folgenden über die Referenz #1 angesprochen werden kann. Beachten Sie auch: Variablen und Werte können immer direkt verwendet werden. Formate der Ein- und Ausgaben Werte sind entweder true oder false. Variablen (im Folgenden durch dargestellt) haben das Format v, wobei eine Zahl ? 0 und < Integer.MAX_VALUE ist. Referenzen (im Folgenden durch dargestellt) haben das Format #, wobei eine ? 0 und < Integer.MAX_VALUE ist. Eine atomare Formel (im Folgenden durch , , etc. dargestellt) kann ein Wert, eine Variable oder eine Referenz sein. Klammerung: Konjunktionen und Disjunktionen werden eingeklammert. Auch die äußersten Klammern werden nicht weggelassen. Negationen, Variablen und Werte hingegen werden nicht geklammert. Wird durch Eingabe eines entsprechenden Befehls dem Formelspeicher eine Formel hinzugefügt oder eine Formel aus dem Formelspeicher angezeigt (siehe Befehle list und show), so wird diese Formel mit ihrer Referenz im Format = ausgegeben. Dabei ist vollständig aufgelöst, d.h. dort sind keine Referenzen enthalten. Fehlermeldungen haben die Gestalt "Error! ", wobei ein sinnvoll gewählter Fehlerbeschreibungstext ist. Fehlermeldungen enthalten keine Zeilenumbrüche. ACHTUNG: Da wir automatische Tests dieser Schnittstelle machen, müssen die Ausgaben Ihrer Shell exakt den Vorgaben entsprechen. Insbesondere sollen sowohl Klein- und Grossbuchstaben als auch die Leerzeichen und Zeilenumbrüche genau übereinstimmen. Geben Sie auch keine zusätzlichen Informationen aus. Beginnen Sie frühzeitig mit dem Einreichen, um Ihre Lösung dahingehend zu testen, und verwenden Sie das Forum, um eventuelle Unklarheiten zu klären. Befehle Der Prompt der Shell ist "bool> ". Ihre Shell muss mindestens folgende Befehle kennen: not Fügt die Negation von zum Formelspeicher hinzu. and Fügt die Konjunktion von und zum Formelspeicher hinzu. or Fügt die Disjunktion von und zum Formelspeicher hinzu. show Gibt die durch referenzierte Formel aus. list Listet die Formeln im Formelspeicher zeilenweise und aufsteigend nach Referenznummer sortiert auf. simplify Berechnet die vereinfachte Version der referenzierten Formel und fügt das Ergebnis dem Formelspeicher als neue Formel hinzu. subst Berechnet die Formel, die aus der durch referenzierten Formel dadurch hervorgeht, dass alle Vorkommen von durch die von beschriebene Formel ersetzt werden. Ist eine Variable oder ein Wert, so wird direkt durch ersetzt. Ist eine Referenz, wird diese vor der Ersetzung zu der entsprechenden Formel aus dem Formelspeicher aufgelöst. Das Ergebnis des Ersetzungsprozesses wird dem Formelspeicher als neue Formel hinzugefügt. quit Beendet das Programm. Verhalten der Shell Hat ein Parameter das falsche Format oder erfüllt er eine zur erfolgreichen Ausführung eines Befehls erforderliche Bedingung nicht, so ist stets eine Fehlermeldung auszugeben. Beispielsweise soll eine Fehlermeldung ausgegeben werden, wenn der Benutzer eine nicht vergebene Referenz angibt. Tritt ein Fehler auf, soll der Zustand des Programms derselbe sein, als wäre der zum Fehler führende Befehl nicht abgesetzt worden. Ablaufbeispiele Beispiel 1: bool> and v1 v2 #0 = (v1 and v2) bool> or #0 false #1 = ((v1 and v2) or false) bool> simplify #1 #2 = (v1 and v2) bool> show #1 #1 = ((v1 and v2) or false) bool> not v3 #3 = (not v3) bool> subst #1 v2 #3 #4 = ((v1 and (not v3)) or false) bool> subst #4 v1 true #5 = ((true and (not v3)) or false) bool> simplify #5 #6 = (not v3) bool> list #0 = (v1 and v2) #1 = ((v1 and v2) or false) #2 = (v1 and v2) #3 = (not v3) #4 = ((v1 and (not v3)) or false) #5 = ((true and (not v3)) or false) #6 = (not v3) bool> quit Beispiel 2: bool> not v1 #0 = (not v1) bool> or #0 v2 #1 = ((not v1) or v2) bool> not v2 #2 = (not v2) bool> or v1 #2 #3 = (v1 or (not v2)) bool> and #1 #3 #4 = (((not v1) or v2) and (v1 or (not v2))) bool> subst #5 v1 false Error! First argument: Invalid reference! bool> subst #4 v1 false #5 = (((not false) or v2) and (false or (not v2))) bool> subst #4 v1 true #6 = (((not true) or v2) and (true or (not v2))) bool> simplify #5 #7 = (not v2) bool> simplify #6 #8 = v2 bool> quit Allgemeine Hinweise zur Implementierung Modellieren Sie eine passende Datenstruktur für Formeln. Beachten Sie dabei, dass Formeln eine Baumstruktur haben, in der jedes Element entweder kein (Werte und Variablen), ein (Negation) oder zwei (Konjunktion und Disjunktion) Kind(er) hat. Die Blätter des Formelbaums bestehen somit ausschließlich aus Werten und Variablen. Mehr über Bäume in Java erfahren Sie z.B. im Kapitel "Bäume" aus dem Buch "Programmieren lernen" von P.Pepper. Das Buch ist im Springer-Verlag erschienen und kann daher aus dem KIT-Netz (bzw. über VPN) kostenlos (zum persönlichen Gebrauch) unter SpringerLink im PDF- Format heruntergeladen werden. Einmal erstellte Formelobjekte sollten nicht mehr veränderbar sein. Jede Operation, die eine bestehende Formel transformiert (Substitution, Vereinfachung), sollte eine neue Formel erzeugen. Abgabe der Lösung im Praktomat Reichen Sie bei der Abgabe Ihrer Lösung in jedem Fall folgende Dateien mit ein: Eine Datei Shell.java, die die main-Methode enthält. Eine Datei Tests.txt, die eigene Testfälle enthält. Dokumentieren Sie die Testfälle in Form von Programmabläufen, wie im obigen Beispiel. Beachten Sie: Geben Sie keine weitere Klasse ab, die eine main-Methode enthält! Achten Sie bei der Bearbeitung dieser Abschlussaufgabe auf korrekte Java (1.7)-Syntax Einhaltung der Java Code Conventions Einrückungen Einhaltung vorgegebener Schnittstellen Umsetzung des Geheimnisprinzips ausführliche Dokumentation des Quelltextes adäquates Verhalten öffentlicher Methoden bei ungültigen Parametern sinnvolle Modellierung der Klassenstruktur Hinweis zur Benutzung der Klasse Terminal: Wenn Sie für Ihre Abgabe die Klasse Terminal benutzen, dann reichen Sie diese auf keinen Fall mit ein! Praktomat stellt die Klasse im Package ipd bereit. Wenn Sie bei sich lokal die Klasse ebenfalls im package ipd benutzen (d.h. mit package-Anweisung, Klasse im Ordner ipd, in benutzenden Klassen korrekt importiert), dann sollte es keine Probleme bereiten, wenn Sie die Klasse nicht mit hochladen. Praktomat wird für diese Abschlussaufgabe folgende automatische Prüfungen auf Ihren Lösungen ausführen. Fett markierte Prüfungen müssen bestanden werden, damit die Lösung eingereicht werden kann: Maximale Zeilenbreite: 120 Zeichen Übersetzen (Java 1.7) Checkstyle WS: Überprüfen korrekter Whitespace-Setzung Checkstyle JCC 1: Überprüft, ob Namenskonventionen eingehalten wurden und ob die eingereichten Klassen mit Javadoc-Kommentaren versehen wurden. Checkstyle JCC 2: Überprüft erweiterte Konventionen, zum Beispiel ob Utility-Klassen nicht instantiiert werden können Funktionalitätstest: Testet die Funktionalität Ihres Programmes. Einfache Tests: Testet die Ablaufbeispiele. Erweiterte Tests: Schwierigere und umfassendere Tests. Unabhängig von den Tests, die Praktomat auf Ihrer Abgabe dürchführt, sollten Sie Ihre Lösung vor Abgabe selbst ausgiebig testen! Hierzu gibt es zum Beispiel das Test-Framework JUnit, das auch von Entwicklungsumgebungen wie Eclipse oder NetBeans unterstützt wird, siehe dazu auch hier bzw. hier. Informationen über Checkstyle finden Sie unter http://checkstyle.sourceforge.net/. Bewertung Ihrer Abgabe Sowohl diese als auch die zweite Abschlussaufgabe werden jeweils in den Kategorien Funktionalität und Programmiermethodik mit einer Punktezahl von 7 bis 0 bewertet. Zum Bestehen der Abschlussaufgaben müssen beide Aufgaben erfolgreich in Praktomat eingereicht sein (d.h. die oben fett markierten Prüfungen müssen bestanden werden) und der Durchschnitt über beide Aufgaben in Funktionalität besser oder gleich 4 Punkte sein und der Durchschnitt über beide Aufgaben in Programmiermethodik besser oder gleich 4 Punkte sein. Bei der Berechnung der Endnote werden die Punkte in Funktionalität doppelt gewichtet. Bei Abschreiben werden beide Abschlussaufgaben mit nicht bestanden bewertet. Auch dann, wenn nur eine der Aufgaben abgeschrieben wurde. Beispiel 1: Aufgabe 1: Funktionalität: 7, Programmiermethodik: 5 Aufgabe 2: Funktionalität: 5, Programmiermethodik: 3 Es gilt also für den Durchschnitt: Funktionalität: 6, Programmiermethodik: 4 ? Bestanden! Beispiel 2: Aufgabe 1: Funktionalität: 7, Programmiermethodik: 3 Aufgabe 2: Funktionalität: 7, Programmiermethodik: 4 Es gilt also für den Durchschnitt: Funktionalität: 7, Programmiermethodik: 3,5 ? Nicht bestanden! Beispiel 3: Aufgabe 1: Funktionalität: 5, Programmiermethodik: 1 Aufgabe 2: Funktionalität: 6, Programmiermethodik: 3 Es gilt also für den Durchschnitt: Funktionalität: 5,5, Programmiermethodik: 2 ? Nicht bestanden! Beispiel 4: Aufgabe 1: Funktionalität: 6, Programmiermethodik: 7 Aufgabe 2: Funktionalität: 7, Programmiermethodik: 2 Es gilt also für den Durchschnitt: Funktionalität: 6,5, Programmiermethodik: 4,5 ? Bestanden! Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Seele Mesaj tarihi: Ağustos 17, 2012 Paylaş Mesaj tarihi: Ağustos 17, 2012 soru dedim ama wot atti. yada bekle birince semesteri bitiriyim bakaraim ssdfasdf. aksam bakarim bi ara :) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Suark Mesaj tarihi: Ağustos 17, 2012 Paylaş Mesaj tarihi: Ağustos 17, 2012 bari ingilizce olsaydı yae :/ şimdi senin inputların v1-v2 outputunda rakamlar mı? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
mulgear6 Mesaj tarihi: Ağustos 17, 2012 Paylaş Mesaj tarihi: Ağustos 17, 2012 örnek üzerinden gidiyim olay şu v1 true yada false olabilicek bi variable ona göre mesela v1 yada true yazdıgında v1 or true bunu direk v1 olarak simplifylıyabiliyo filan 1 1 0 1 bool> not v1 ilk inputu giriyoruz not v1 #0 = (not v1) #0 olarak onu kaydediyo bool> or #0 v2 #0 or v2 diyoruz onu da #1 olarak atıyo #1 = ((not v1) or v2) bool> not v2 #2 = (not v2) bool> or v1 #2 #3 = (v1 or (not v2)) bool> and #1 #3 #4 = (((not v1) or v2) and (v1 or (not v2))) bool> subst #5 v1 false Error! First argument: Invalid reference! bool> subst #4 v1 false #5 = (((not false) or v2) and (false or (not v2))) bool> subst #4 v1 true #6 = (((not true) or v2) and (true or (not v2))) bool> simplify #5 #7 = (not v2) bool> simplify #6 #8 = v2 bool> quit Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Seele Mesaj tarihi: Ağustos 17, 2012 Paylaş Mesaj tarihi: Ağustos 17, 2012 Buch "Programmieren lernen" von P.Pepper. bana gönder bu kitabi faceden felan. benim üninin kitapligina giris kodlarim yok. yoksa indirirdim. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
mulgear6 Mesaj tarihi: Ağustos 17, 2012 Paylaş Mesaj tarihi: Ağustos 17, 2012 direk bäume kısmını indirdim pdften atıyım istersen fesbuktan Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Seele Mesaj tarihi: Ağustos 17, 2012 Paylaş Mesaj tarihi: Ağustos 17, 2012 benim soru arada kaynadi :( Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Fly Mesaj tarihi: Ağustos 17, 2012 Paylaş Mesaj tarihi: Ağustos 17, 2012 libraryler icin bir repository acip ana release surumlerini ayri ayri saklayabilirsin, en azindan yillardir bir seyleri update cart curt yaparken genel sekli bu benim gordugum booelan geyiginde agac kullanin dedigi sey expressionu parselarken sanirim ? sonucu uretirken de kullandirtabilirsin de n. sonucu listeye ekleyip sonradan kullanmak disinda pratikte ne olayi olabilir anlamadim ha maksat sekil dursun ise yeni expressioni bir yaprak olarak uretirsin ondan direk false yaptiklarin ondan dallanir daha kompleks expression varsa degerine bakmadan yeni dal olabilir v1 or true'ya ise yeni yaprak acmak yerine her dala erisim icin key+entry no list olur tek key+entryno yerine az daha dusunsem atilabilecek baska taklalar bulabilriim, agac kullanin tabiri cok genel sanki Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Suark Mesaj tarihi: Ağustos 17, 2012 Paylaş Mesaj tarihi: Ağustos 17, 2012 şimdi bunu treele yapmak istiosun dmi? ( ne olduğunu bilmiorm bakındım biraz ) şu yardımcı olur mu http://craicpropagation.blogspot.com/2009/10/practice-practice-practice.html ? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Seele Mesaj tarihi: Ağustos 17, 2012 Paylaş Mesaj tarihi: Ağustos 17, 2012 repository svn cart curt yok. :( Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Fly Mesaj tarihi: Ağustos 17, 2012 Paylaş Mesaj tarihi: Ağustos 17, 2012 genel olarak repository sart sanki su anda tek bir devasa dosyada biseyler yapiyorum ben ve ona ragmen eksigini cekiyorum hani dedigin sey tipik 1.4 surumu 1.5 surumu iste eski surumleri tutmanin en guzel yolu bu ha sorun webservice 1.4 interface 1.3 e gore ise calismasini nasil saglarim ise o daha farkli bir sey sanki Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Seele Mesaj tarihi: Ağustos 17, 2012 Paylaş Mesaj tarihi: Ağustos 17, 2012 patron version version takilalim diyor. anlatamadim adam svn kuralim diyorum yok diyor. müsteri ver versiona göre lib yapicaz artik. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Fly Mesaj tarihi: Ağustos 17, 2012 Paylaş Mesaj tarihi: Ağustos 17, 2012 kendine rep ac ya svn git bunlar hep zaten version version tutuyor guncellemeleri gelistirme daliniz olur ana releaseler icin de ayri branchiniz olur baska turlu mu izah ettin Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Seele Mesaj tarihi: Ağustos 17, 2012 Paylaş Mesaj tarihi: Ağustos 17, 2012 repository icin ne önerirsin Subversion felan. suan proje üzerinde calisan iki kisiyiz. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
mulgear6 Mesaj tarihi: Ağustos 17, 2012 Paylaş Mesaj tarihi: Ağustos 17, 2012 turtoise svn Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Fly Mesaj tarihi: Ağustos 17, 2012 Paylaş Mesaj tarihi: Ağustos 17, 2012 subversion yeter sanirim bir de git kullandim da arti eksi bilemedim simdi iki kisi icin en bildiginiz seyi kullanin gecin vakit harcayasiniz yoksa Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
GEd Mesaj tarihi: Ağustos 21, 2012 Paylaş Mesaj tarihi: Ağustos 21, 2012 Apache Poi ile excele yazdigim bilgileri (tabela) .SVG formatina cevirmek istiyorum. http://www.svgmaker.com/ soyle bir add-in buldum ama bir turlu istedigim cozunurlukte cevirmiyor. Tabelayi kucultuyor falan. Oysa tabela cok genis diye .SVG almak istiyorum. Cozunurlukten kaybetmeden tabela uzerinde hareket edebileyim yani. Bunun baska yolunu bilen var mi ? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Suark Mesaj tarihi: Eylül 20, 2012 Paylaş Mesaj tarihi: Eylül 20, 2012 oha tam da apache poi ile ilgili bişi sormaya gelmiştim. Şimdi xlsx datası çekmek istiyorum, en mantıklı yol apache poi gibi duruyor, ama bu meret normal jarlardan farklı bişi gibi ( heh ) şimdi ben bununla halletsem işimi, başkalarına bu progamı gönderdiğimde apache kurmaları gerekir mi? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
uk Mesaj tarihi: Eylül 20, 2012 Paylaş Mesaj tarihi: Eylül 20, 2012 Suark said: oha tam da apache poi ile ilgili bişi sormaya gelmiştim. Şimdi xlsx datası çekmek istiyorum, en mantıklı yol apache poi gibi duruyor, ama bu meret normal jarlardan farklı bişi gibi ( heh ) şimdi ben bununla halletsem işimi, başkalarına bu progamı gönderdiğimde apache kurmaları gerekir mi? apache poi jarlarini da gonderecegin executable jar icine eklersen sorun cikmaz Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Suark Mesaj tarihi: Eylül 20, 2012 Paylaş Mesaj tarihi: Eylül 20, 2012 stack overflowa sordum buraya da sorayım çok basit bi işim var, apache poi ile xlsx datası okumam lazım. WorkBook'a atayabiliyorum dosyayı ama içinde ki worksheeti SXSSFSHeet e atayamıyorum. sıkıntılı kısım şu : kod SXSSFRow DummyRow; SXSSFCell DummyCell; int RowCount; OPCPackage pkg = OPCPackage.open(blabla string adress); XSSFWorkbook wb = new XSSFWorkbook(pkg); Workbook MainBook = new SXSSFWorkbook(wb,100); int a = MainBook.getNumberOfSheets(); SXSSFSheet MainSheet= (SXSSFSheet) MainBook.getSheetAt(0); RowCount = MainSheet.getLastRowNum(); orada ki getnumberofsheets doğru döndürüyor ( 1-2 kere değiştirip denedim ) ama getSheetat veya getSheet işlemiyor. nerde hata yapıyorum? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
uk Mesaj tarihi: Eylül 20, 2012 Paylaş Mesaj tarihi: Eylül 20, 2012 asdsfdfg MainBook diye bi class mı var diye bakıyorum sonra yukarı bakınca farkettim, değişken isimlerini büyük harfle başlamayaydın iyidi peki getSheet dediğinde null mü dönüyor yoksa? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Suark Mesaj tarihi: Eylül 20, 2012 Paylaş Mesaj tarihi: Eylül 20, 2012 evet null döndürüyor cast yapmadan direk WorkSheet instance'ına döndüreyim dedim o da null dönüyor. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Suark Mesaj tarihi: Eylül 20, 2012 Paylaş Mesaj tarihi: Eylül 20, 2012 ooo aklıma gelmemiş düzeltiyorum, sheet e null döndürmüyor, getsheetname dedim, aynen ismini yazdı. Rowlara erişemiyorum o zaman hmm Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
uk Mesaj tarihi: Eylül 20, 2012 Paylaş Mesaj tarihi: Eylül 20, 2012 Suark said: ooo aklıma gelmemiş düzeltiyorum, sheet e null döndürmüyor, getsheetname dedim, aynen ismini yazdı. Rowlara erişemiyorum o zaman hmm şunu dener misin: SXSSFSheet MainSheet= (SXSSFSheet) MainBook.getSheetAt(0); yerine, XSSFSheet mainsheet = (XSSFSheet) MainBook.getSheetAt(0); Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Suark Mesaj tarihi: Eylül 20, 2012 Paylaş Mesaj tarihi: Eylül 20, 2012 tmm denerim ama sheete yazdırıyor null gelmiyor, baya alıyorum sheeti. Rowu null döndürüyor eveet sanırım dediğin olacak ama bi kaç şeyi daha değiştirmem lazım http://stackoverflow.com/questions/12513981/reading-data-from-xlsx-sxssfsheet-with-apache-poi-java adam yapaman onla anca yazarsın panpa demiş. sdsfsds vuuuu bingo teşekkürler uk Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar