Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Java / JSP

Cevapla
 
LinkBack Seçenekler
Eski 19/11/2004, 21:09   #1 (permalink)
Üye
 
hanife Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2004
Mesaj: 6
Varsayılan JAVA Programlama ödevi!

Bu ödevi pazartesine kadar yapmam gerekiyor, yardim edebilecek olursa sevinirim

Class´in ismi addiere ve bu sinifla naturel (türkcede umarim böyledir ) iki rakamin toplamini elde etmek gerekiyor(0 da dahil). Basis su rakamlarla {0,1,...b-1} temsil ediliyor.

ödevde static method la calisilmasi isteniyor ve parameter su sekilde :

long addiere(long, long, int)

ilk 2 parameter rakam1(Zahldarstellung1) ve rakam2(zahldarstellung2) yi temsil ediyor ücüncü parameter(basis) ise rakamlarin hangi temele göre temsil edildigini bildiriyor.Sollergebnis Summe ise toplam sonuc oluyor.

Main methode
araciligi ile class Zahldarstellung´u, method addiere´yi ekteki rakamlari vererek System.out.println(...) talimati ile cagiriniz diyor.

Örnek: System.out.println(addiere(1001, 11, 2));

Verilen metodlarin disinda yardimci metodlarlada calisilabilinirmis


Tabi bundan önce return üde kullanarak formül vermek gerekiyor. ben orada takildim iste. Yani en olmayacak yerde. Bana biraz yardim edebilen olursa sevinirim.
Eklenmiş Dosyalar
File Type: pdf Blatt04.pdf (37.5 KB, 14 views)
hanife hatta değil   Alıntı Yaparak Yanıtla
Eski 19/11/2004, 21:50   #2 (permalink)
Üye
 
Üyelik Tarihi: 11/2004
Mesaj: 6
Varsayılan

http://www.cs.princeton.edu/introcs/51data/

adresinde kısa bi araştımayla bu ödevi yapabilirsin!
BinaryConverter.java dosyası en çok yardım eden olur.

iki yöntem izleyebilirsin..

1- binary görünümdeki sayıları int'e çevirip, toplama yapıp sonucu tekrar binary'e çevirirsin.(ben bu versiyonu yaptım 10 dk'da :))

2- biraz kasıp önce nasıl çalıştığını anlar daha sonra bit-bit toplama olayını halledersin. Ama bence bu kadar kasmaya gerek yok...
based hatta değil   Alıntı Yaparak Yanıtla
Eski 19/11/2004, 22:18   #3 (permalink)
Üye
 
Üyelik Tarihi: 11/2004
Mesaj: 6
Varsayılan

sadece binary(2 lik tabanda denedim ama sanırım geri kalan içinde çalışır)


public class Addiere {

// converts integer n into a base b string
static String toString(int n, int base) {
// special case
if (n == 0) return "0";

String digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String s = "";
while (n > 0) {
int d = n % base;
s = digits.charAt(d) + s;
n = n / base;
}
return s;
}

// convert a String representing a base b integer into an int
static int fromString(String s, int b) {
int result = 0;
int digit = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= '0' && c <= '9')
digit = c - '0';
else if (c >= 'A' && c <= 'Z')
digit = 10 + c - 'A';
else return 0;

if (digit < b) result = b * result + digit;
else return 0;
}
return result;
}


public static long addiere(long binary_1, long binary_2, int basis)
{
int int_total = fromString(binary_1+"",basis) + fromString(binary_2+"", basis) ;
long retVal = 0;
try{
retVal = Long.parseLong(toString( int_total , basis ) );
}catch(Exception exc){}
return retVal;
}


public static void main(String[] args) {

long s1 = 101111;
long s2 = 101111;

System.out.println("a: " +s1+ " - " + fromString(""+s1,2));
System.out.println("b: " +s2+ " - " + fromString(""+s2,2));
System.out.println("+");
System.out.println("-------------");
System.out.println("c: " + addiere(s1,s2,2) +" - "+fromString(""+addiere(s1,s2,2),2));

System.exit(0);
}
}
based hatta değil   Alıntı Yaparak Yanıtla
Eski 20/11/2004, 03:10   #4 (permalink)
Üye
 
hanife Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2004
Mesaj: 6
Yukarı Tesekkürler

cok tesekkür ederim. Sagolun. Dogrusu cevap beklemiyordum. Ya birde 10 dk bitirmissin tebrik ediyorum. Ben hic anlamiyorumda. Uni ye yeni basladim ve ilk kez programlama yapiyorum malumunuz. BIrde benim her hafta ödevim oluyor eger anlamazsam yine yazarim
Konuyla ilgili sorum olursa sizi rahatsiz ederim.
hanife hatta değil   Alıntı Yaparak Yanıtla
Eski 20/11/2004, 16:22   #5 (permalink)
Üye
 
hanife Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2004
Mesaj: 6
Ok

Dün vaktim yoktu tam olarak bakamamistim yazdiginiz sonuca. Ama simdi baktimda cikan sonuclarin, ekteki kagidin ücücüncü sütunundaki(Sollergebnis Summe) sonuclarla ayni olmasi gerekiyor.
Yani ödevin sonuclari zaten verilmis ama buna uygun formülü yapamiyorum. Tekrar tesekkürler zaman ayirdiginiz icin
hanife hatta değil   Alıntı Yaparak Yanıtla
Eski 20/11/2004, 17:47   #6 (permalink)
Üye
 
Üyelik Tarihi: 11/2004
Mesaj: 6
Varsayılan

Zahldarstellung 1 ve Zahldarstellung 2 kısımlarında yazan sayıları long s1 = 101111;
long s2 = 101111; deki sayılarla yer değiştirirsen olur...

yani;
s1 toplanacak birinci sayı, s2'de ikinci sayı.


yeni halini gönderiyorum..


/************************************************** ***********************
* Compilation: javac BinaryConverter.java
* Execution: java BinaryConverter
*
* Converts an integer to and from its binary representation.
*
************************************************** ***********************/

public class Addiere {

// converts integer n into a base b string
static String toString(int n, int base) {
// special case
if (n == 0) return "0";

String digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String s = "";
while (n > 0) {
int d = n % base;
s = digits.charAt(d) + s;
n = n / base;
}
return s;
}

// convert a String representing a base b integer into an int
static int fromString(String s, int b) {
int result = 0;
int digit = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= '0' && c <= '9')
digit = c - '0';
else if (c >= 'A' && c <= 'Z')
digit = 10 + c - 'A';
else return -1;

if (digit < b) result = b * result + digit;
else return -1;
}
return result;
}


public static long addiere(long binary_1, long binary_2, int basis)
{
int number1 = fromString(binary_1+"",basis);
int number2 = fromString(binary_2+"", basis);
if(number1==-1 || number2==-1) return -1;
long retVal = -1;
try{
retVal = Long.parseLong(toString( number1+number2 , basis ) );
}catch(Exception exc){}
return retVal;
}

public static void printResult(long number1, long number2, int basis)
{
System.out.println("a: " +number1+ " - " + fromString(""+number1,basis));
System.out.println("b: " +number2+ " - " + fromString(""+number2,basis));
System.out.println("+");
System.out.println("-------------");
System.out.println("c: " + addiere(number1,number2,basis) +" - "+fromString(""+addiere(number1,number2,basis),bas is));

System.out.println("\n----------------------------------------------------\n");
}


public static void main(String[] args) {

long s1 = 1001;
long s2 = 11;
int basis = 2;
printResult(s1,s2,basis);

s1 = 11011;
s2 = 1110;
printResult(s1,s2,basis);

s1 = 210;
s2 = 11;
basis = 2;
printResult(s1,s2,basis);

s1 = 0;
s2 = 773;
basis = 8;
printResult(s1,s2,basis);

s1 = 0;
s2 = 107;
printResult(s1,s2,basis);

s1 = 773;
s2 = 107;
printResult(s1,s2,basis);

s1 = 773;
s2 = 1239;
printResult(s1,s2,basis);

s1 = 950;
s2 = 192;
printResult(s1,s2,basis);

s1 = 9145;
s2 = 882;
basis = 10;
printResult(s1,s2,basis);

s1 = 11111111111L;
s2 = 1;
basis = 2;
printResult(s1,s2,basis);

s1 = 323;
s2 = 133;
basis = 4;
printResult(s1,s2,basis);


System.exit(0);
}
}


çalışıyor test ettim ama senin anlayıp, düzenlemen lazım
based hatta değil   Alıntı Yaparak Yanıtla
Eski 20/11/2004, 19:53   #7 (permalink)
Üye
 
hanife Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2004
Mesaj: 6
Varsayılan

Anlarsam düzenlerim tabi
Ama derste kullanmadigimiz terimlerle calisamiyoruz maalesef. Mesela digit, base, reteval ve result gibi. Bunlarin ne oldugunu bile bilmiyorum Degistirmek mümkün mü?
Birde method stringle calismissin onuda degistirebilirmiyim.


Bundan bir önceki ödevim, hemen hemen sistem ayni olacak ama simdiki ödevde bazi degisiklikler var.

(kusura bakma seninde basini agritiyorum ama ben simdiye kadar java nin birtek adini duymustum )


public class Rekursion {
/**
* Berechnet die Summe von Quadratzahlen von 1 bis einschließlich der
* angegebenen Zahl n.
*
* @param n Zahl, die bestimmt welche Quadratzahlen berechnet werden.
* @return Summe der Quadratzahlen bis einschließlich n
*/
public static long berechneSummeQuadrate(int n) {
/* rekursive Realisierung (von n bis 1) */
return (n > 0) ? n * n + berechneSummeQuadrate(n - 1) : 0;
}


/**
* Hilfsmethode zur Berechnung der Stellenanzahl von einer Zahl.
*
* @param n Zahl, deren Stellenanzahl ermittelt wird.
* @return Stellenzahl von n
*/
public static long berechneStellen(long n){
/* rekursive Realisierung (Stellen bis 0) */
return (n / 10) <= 0 ? 1 : (10 * berechneStellen(n / 10));
}


/**
* Realisiert die ziffernweise Umkehrung der Dezimaldarstellung einer Zahl.
* Da die Stellenanzahl der umzukehrenden Zahl variabel ist, wird die Anzahl
* der Stellen mit Hilfe der Methode berechneStellen ermittelt.
*
* @param zahl Zahl, die umgekehrt wird.
* @return umgekehrte Ziffernfolge von zahl
*/
public static long kehreZahlUm(long zahl){
/* rekursive Realisierung */
return (zahl / 10) <= 0 ? zahl
: (zahl % 10 * berechneStellen(zahl) + kehreZahlUm(zahl / 10));
}


/**
* Führt beispielhafte Berechnungen aus und gibt die
* Ergebnisse auf dem Bildschirm aus.
*/
public static void main(String[] args){
System.out.println(berechneSummeQuadrate(5));
System.out.println(berechneSummeQuadrate(10));
System.out.println(berechneSummeQuadrate(0));
System.out.println(berechneSummeQuadrate(-2));

System.out.println(kehreZahlUm(123456789012L));
System.out.println(kehreZahlUm(700));
System.out.println(kehreZahlUm(0));
System.out.println(kehreZahlUm(120034));
}

}
hanife hatta değil   Alıntı Yaparak Yanıtla
Eski 21/11/2004, 21:09   #8 (permalink)
Üye
 
hanife Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2004
Mesaj: 6
Varsayılan

Ödevimin en son hali bu, buraya kadar gelmesini saglayan based etesekkürler . Dogru sonuclar cikmasina ragmen, String metodunu derste islemedigimiz icin kullanamiyoruz. String kullanmadan nasil yapabilirim. Yardim edebilecek olan varsa acele cevap bekliyorum. Tskler.


public class Zahldarstellung {

/**
*Berechnet der Summe von zwei natürliche Zahlen(einschließlich 0).
*
*@param ...
*@return...
*/

public static String toString(int n, int base) {

if (n == 0) return "0";
String digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String s = "";
while (n > 0) {
int d = n % base;
s = digits.charAt(d) + s;
n = n / base;
}
return s;
}



// convert a String representing a base b integer into an int
static int fromString(String s, int b) {
int result = 0;
int digit = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= '0' && c <= '9')
digit = c - '0';
else if (c >= 'A' && c <= 'Z')
digit = 10 + c - 'A';
else return -1;

if (digit < b) result = b * result + digit;
else return -1;
}
return result;
}

public static long addiere(long Zahldarstellung1, long Zahldarstellung2,
int Basis) {

int number1 = fromString(Zahldarstellung1 + "",Basis);
int number2 = fromString(Zahldarstellung2 + "", Basis);
if(number1==-1 || number2==-1) return -1;
long retVal = -1;
try{
retVal = Long.parseLong(toString( number1+number2 , Basis ) );
} catch(Exception exc){}
return retVal;

}


/**
* @param args the command line arguments
*/

public static void Zahldarstellung(long number1, long number2, int basis) {

System.out.println( addiere(number1,number2,basis) );


}

public static void main(String[] args) {

long s1 = 1001;
long s2 = 11;
int basis = 2;
Zahldarstellung(s1,s2,basis);

s1 = 11011;
s2 = 1110;
Zahldarstellung(s1,s2,basis);

s1 = 210;
s2 = 11;
basis = 2;
Zahldarstellung(s1,s2,basis);

s1 = 0;
s2 = 773;
basis = 8;
Zahldarstellung(s1,s2,basis);

s1 = 0;
s2 = 107;
Zahldarstellung(s1,s2,basis);

s1 = 773;
s2 = 107;
Zahldarstellung(s1,s2,basis);

s1 = 773;
s2 = 1239;
Zahldarstellung(s1,s2,basis);

s1 = 950;
s2 = 192;
Zahldarstellung(s1,s2,basis);

s1 = 9145;
s2 = 882;
basis = 10;
Zahldarstellung(s1,s2,basis);

s1 = 11111111111L;
s2 = 1;
basis = 2;
Zahldarstellung(s1,s2,basis);

s1 = 323;
s2 = 133;
basis = 4;
Zahldarstellung(s1,s2,basis);


System.exit(0);


}
}
hanife hatta değil   Alıntı Yaparak Yanıtla
Eski 22/11/2004, 00:41   #9 (permalink)
Üye
 
hanife Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 11/2004
Mesaj: 6
Varsayılan

Benim yapmam gereken böyleymis Arkadasim yolladi sagolsun. Ama ilgilenen arkadaslarinda cok faydasi oldu. Allah razi olsun. Bu ödevlerin sürümü gelecektir. Yardimlarinizin devamini bekliyorum.

public class Zahldarstellung {

/*
* In dieser Methode wird kontrolliert, ob die Zahlendarstellungen
* überhaupt erst gültig sind. Dazu wird hier das "x < 1" verwendet,
* damit diese Methode, wenn diese 0 ist aufhört zu rechnen. Aber
* solange dies nicht der Fall ist wird kontrolliert, ob die Zahlen, die
* die Zahlendarstellung beinhaltet gültig sind, d.h. sie müssen kleiner
* gleich die Basis sein. Ist die Zahlendarstellung ungültig so wird die
* -1 gegeben.
* @param long x fuer Zahlendarstellung
* @param int b fuer Basis
* @return prueft, ob die Zahl gueltig ist oder nicht.
*/
public static long pruefe(long x, int b) {

return (x < 1) ? 0 : (x % 10) >= b ? -1 : pruefe(x / 10, b);
}

/*
* In dieser Methode wird die Zahlendarstellung in Dezimalzahlen umgerechnet.
* Dies geschieht wiederum indem vorerst kontrolliert wird, ob die Zahlen -
* darstellung < 1 ist, denn wenn dies der Fall ist kann man direkt die 0
* herausgeben. Ist die nicht der Fall, so wird hier der modulo 10 genommen,
* damit die letzte Zahl quasi "abgeschnitten" wird, um damit im naechsten
* Schritt rechnen zu können. Zusaetzlich wird im naechsten Schritt das "b"
* mit "b" weiter multipliziert.
* Also im 1. Durchgang werden die Zahlen nur zugewiesen, d.h es kommt immer
* der modulo 10 raus und erst im 2. Schritt kommt es zu einer Umrechnung.
* @param long x fuer Zahlendarstellung
* @param in b fuer Basis
* @return gibt die Zahlendarstellung in Dezimalzahl an
*/
public static long rechneUm(long x, int b) {

return (x < 1) ? 0 : (x % 10) + (rechneUm(x / 10, b) * b);
}

/*
* In dieser Methode wird die Dezimalzahl wieder in ihrer Ursprungs-
* zahlendarstellung umgerechnet. Zuerst wird kontrolliert, die Zahl
* wirklich gleich null ist. Erst wenn dies der Fall ist, endet das
* Rechnen. Ist die jedoch nicht der Fall, so werden im ersten
* Schritt alle Werte erstmal zu gewiesen. Dabei wird nur der modulo
* der Basis herausgegeben und erst im naechsten Schritt wird mit den
* Werten "gerechnet".
* @param long x fuer Zahlendarstellung
* @param int b fuer Basis
* @return die zuvor in Dezimalzahlen umgewandelte Zahlen werden
* wieder in Zahlendarstellungen zu den jeweiligen Basen gerechnet.
*/
public static long rechneZurueck(long x, int b) {

return (x == 0) ? 0 : (x % b) + (rechneZurueck (x / b, b) * 10);
}

/* In dieser Methode wird alles quasi zusammengefuegt. Hier wird als
* erstes ueberprueft, ob die Ergebnisse von "Pruefe" bereits -1
* (also false) ergeben haben. Ist dies nicht der Fall so werden die
* Ergenisse von "rechneUm" addiert und dies wiederum in die Funktion
* "rechneZurueck" eingesetzt. Hier kommt noch der "y" - Wert hinzu,
* das dann das "x" ersetzt, um den 2. Wert durch die ganzen Rechnungen
* zu fuehren.
* @param long x fuer Zahlendarstellung
* @param long y fuer 2. gegebene Zahlendarstellung
* @param int b fuer Basis
* @return addition der Dzimalzahlen und wieder umrechenen in die Zahlen-
* darstellungen, die die Zahlen vorher hatten.
*/
public static long addiere(long x,long y, int b) {

return pruefe(x, b) == - 1 || pruefe(y, b) == -1 ? -1
: rechneZurueck(rechneUm(x,b) + rechneUm(y,b),b);
}


/**
* Gibt Ergebnisse der Auswertung aus.
*/
public static void main(String[] args) {

System.out.println(addiere(1001, 11, 2));
System.out.println(addiere(11011, 1110, 2));
System.out.println(addiere(210, 11, 2));
System.out.println(addiere(773, 0, 8));
System.out.println(addiere(0, 107, 8));
System.out.println(addiere(773, 107, 8));
System.out.println(addiere(773, 1239, 8));
System.out.println(addiere(950, 192, 8));
System.out.println(addiere(9145, 882, 10));
System.out.println(addiere(11111111111L, 1, 2));
System.out.println(addiere(323, 133, 4));
}

}
hanife hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
acil java ödevi yardımı doeegoo Java / JSP 3 12/03/2007 12:35
C ödevi (XOR la ilgili) TheX C / C++ 8 07/12/2006 20:03
Soru : Java ile Network Programlama dubrovski Java / JSP 4 30/11/2004 11:01
linux ödevi var yardım zakkeyboorock GNU / Linux / UNIX / BSD / Pardus 1 29/11/2003 00:19
c ödevi stevenseagal C / C++ 3 13/12/2002 00:38


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 03:01.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net