الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال مهم في String وخصوصا للأخ alnabris

مغلق
بدأه مبرمجة الحزن في 7 نوفمبر 2005 · 11 رد · 801 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عندي سؤال ثاني إذا ممكن تساعدوني فيه

وفكرة السؤال هو انا نختبر الكلمة اللي نطلب من المستخدم يدخلها هل هو تقرا من اليمين للسيار والعكس

يعني مثلا كلمة MOM

تقرأ من اليمين لليسار والعكس بعد ، ومثال ثاني كلمة radar

والبرنامج اللي راح نستخدمه لازم يكون فيه boolean

ولازم نستخدم Joption عشان نطلب من المستخدم انه يدخل الكلمة واحنا بعدين نطبق عليها الكود ونختبرها

والربنامج اللي انا كتبته هو

import javax.swing.JOptionPane;

public class palindrome {

public static void main(String[] args) {

String s = JOptionPane.showInputDialog("Enter your string");

palindrome1(s);

}

public static void palindrome1 (String s){

for ( int i=0 ; i<=(s.length()-1)/2;i++){

if(s.charAt(i)== s.charAt(s.length()-i-1))

i++;

else

break;

}

}

}

بليز ريد مساعدتكم

:blink: :s :(

ومشكورين

مع العلم أنني لا أريد الحل الجاهز ولكني اريد ان تشرحو لي فكرة البرنامج ولقد وضعت البرنامج اللذي كتبته لكي اتلقى تعليقاتكم عليه

تم تعديل هذه المشاركة بواسطة مبرمجة الحزن في 7 نوفمبر 2005 في 17:51

#2

كودك مزبوط وبيشتغل بس فيه خطأ واحد

لاحظي لما بنقارن الحرف الأول بالأخير

انتي بتعملي عملية وحدة لكن المفروض تعملي عمليتين

العملية اللي انتي بتعمليها

i++

وهذي العملية بتنقل الفحص من أول حرف للثاني

لكن المفروض تعملي عملية ثانية

تعمل على نقل الفحص من الحرف الأخير للحرف اللي قبل الأخير مثلا في داخل الفور لووب

length -- ;

على العموم هذا كود معدل على الكود اللي أرسلتيه إن شاء الله بيكون واضح

import javax.swing.JOptionPane;

public class Check {

public static void main(String[] args) {

String s = JOptionPane.showInputDialog("Enter your string");

//bedna ne3ref 3adad 7eroof alkalema

int length = s.length();

// if yes = true then the word is plaindrome

boolean yes= false;

//here note we are going to check the first letter with the last

for( int i =0; i <=(length/2) ; i++){

if( s.charAt(i )==s.charAt(length-1)){

//if every letter = his peer then yes is true

yes = true;

}

//

else{

//if two letters are not equals then yes = false and break the for loop

yes = false ;

break;

}

length-- ;

}

if(yes) JOptionPane.showMessageDialog(null,"Your Number is Plaindrome");

else JOptionPane.showMessageDialog(null,"Your Number is not Plaindrome");

}

}

#3

مشكور أخوي وما تقصر :)

بس أنا عدلت على الكود اللي ارسلته وصار كالتالي صح وإلا غلط؟

import javax.swing.JOptionPane;

public class palindromee {

public static void main (String args[]){

String s = JOptionPane.showInputDialog("Enter your string");

System.out.println ("your String " + isPalindrome(s));

}

//-----------------------------------------------------------------

public static String isPalindrome(String a){

String n = "";

int length = a.length();

boolean yesItIspalindrome = false;

for( int i =0; i <=(length/2) ; i++){

if( a.charAt(i )==a.charAt(length-1)){

yesItIspalindrome = true;

}

else{

yesItIspalindrome = false ;

break;

}

length-- ;

}

if(yesItIspalindrome) n="is Plaindrome";

else n="is not Plaindrome";

return n;

}

}

#4

الكود هيك صحيح

وما غيرتي كتير (;

#5

مشكور الغالي ما تقصر

:)

#6

أختي المبرمجة العزيزة أدعوكي الى مراجعة قواعد هذة المنتدى في ربط التالي

/index.php?showtopic=29343

*** يمنع منعا باتا توجيه السؤال الي شخص بعينه لان هذا قد يدفع الاخرين الي عدم الاجابة ****

مع تحياتي

winter-main.jpg

6179.gif

#7

:s

فعلا آسفة والله ما كنت أعرف

بس حبيت أسأل كيف أقدر أغير عنوان المشاركة

ومرة ثانية أكرر أسفي

#8

أعتقد أن تغير عنوان هي من صلاحيات المشرف (أخوانا العزيز رامي) بس رامي هذة الأيام مشغول بنظام البنكي و أن شاء عما قريب يعود الى منتدى و غير عنوان

winter-main.jpg

6179.gif

#9

أخي الكريم إذا كانت لديك خبرة في برمجة تراكيب البيانات data Structure ممكن تسخدم كل من Stack & Array حيث أن Stack تعيد اخر حرف من الكلمة و Array تعيد القيمة الأولى ,, وبعد ذلك تقوم بمقارنة كلا الحرفين وهكذا ..

أنا أعلم أن إجابتي مختصرة جدا لكن أرجو المسامحة منك وبارك الله فيك

سأقوم بوضع كود خاص بذلك في المشاركة المقبلة..

تم تعديل هذه المشاركة بواسطة MKSoft في 8 نوفمبر 2005 في 15:22

#10

أخي أنا وضعت الكود الخاص

بطلبك ولا أريد إلا الفائدة لك ولأعضاء المنتدى ولك كامل الحرية في اختياره وأخذه أو لا ...

أولا إنشاء مايسمى ب Node وهذه في علم DataStructure

public class NodeMOM {
	private char data;
	private NodeMOM next;
	public NodeMOM(){
  this('a',null);
	}
	public NodeMOM(char info,NodeMOM n){
  this.data=info;
  this.next=n;
	}
	public char getData(){
  return this.data;
	}
	public void setData(char info){
  this.data=info;
	}


	public NodeMOM getNext(){
  return this.next;
	}

	public void setNext(NodeMOM n){
  this.next = n;
	}

}

هذا الكود خاص بربط كل Node مع الأخرى

ملاحظة: هذان الكودان فقط أنشأتهما حتى أنشأ ما يسمى ب Stack

public class LinkedStackMOM {
private	NodeMOM top;
private int size;
public LinkedStackMOM(){
	top=null;
	size=0;

}

public boolean isEmpty(){
	return (top==null);
}
public int size(){
	return size;
}

public char top(){
	if(isEmpty())
  throw new RuntimeException("The stack is empty");
  return top.getData();
  
}
public void push(char info){

  top = new NodeMOM(info,top);
  size++;
	}


public char pop(){
  if(isEmpty())
  throw new RuntimeException("The stack is empty");

  char temp = top.getData();
  top = top.getNext();
  
  --size;
  return temp;
	}


}

هذا اخر جزء في البرنامج وهو المهم وهو اختبار البرنامج

import javax.swing.*;
public class MOM{
	public static void main(String [] args)
	{
  char value;
  LinkedStackMOM S=new LinkedStackMOM();
  int couterTrue=0;
  String name=JOptionPane.showInputDialog(null,"Enter The String");
  char A[];
  A=new char[name.length()];
  for(int i=0;i<name.length();i++)
  {
  	value=name.charAt(i);
  	A=value;
  	S.push(value);	
  }
  for(int i=0;i<name.length();i++)
  {
  	if(A==S.pop())
  	couterTrue++;
  }
  if(couterTrue==name.length())
  JOptionPane.showMessageDialog(null,"Yes");
  else
  JOptionPane.showMessageDialog(null,"NO");
  
	}	
}

ملاحظة : أخي لا تقلق من هذه الأكواد فقم بتجريبها وبإذن الله ستجد مايرضيك

ربما أخي أنك تسأل ماهي :

LinkedStackMOM S=new LinkedStackMOM();

هذه عبارة عن Object من class يسمى LinkedStackMOM

S.Push هي عبارة Method لإدخال افيمة في Stack

S.Pop هي عبارة عن Method لإرجاع القيمة من Stack

تم تعديل هذه المشاركة بواسطة MKSoft في 8 نوفمبر 2005 في 15:25

#11

مشكورين كلكم وما تقصرو

والصورة الحين اتضحت عندي

#12
hi mobaremja...

Algorthim:

compare first letter with the last then comape the second letter with the letter before the last and so on untill you traverse the hole word.

Code:


public boolean check(String a){                                

for(int i=1;i<a.length();i++)

if(a.charAt(i-1)!=a.charAt(a.length()-i))

return false;

return true;}
public Money getRich(String name){
return new Money(1,000,000,000 );
}

هذا الموضوع مغلق.

مواضيع مشابهة