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

برنامج يقوم باعطاء المتوسط و الاعداد الموجبة

مغلق
بدأه سلطان جافا في 23 مارس 2006 · 10 رد · 1,210 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

كيف الحال اخواني؟

عندي هذا السؤال

اكتب برنامج لأدخال 8 اعداد وتخزينها في مصفوفة بحيث يقوم البرنامج بطباعة ما يلي:

1/ جميع الاعداد المخزنة في مصفوفة.

2/ مجموع الأعداد السالبة.

3/ عدد الأعداد الزوجية.

4/ معدل جميع الأعداد.

هذا هو الحل ولكن يعطيني خطأ في الجواب

اذا ممكن تويضح الخطأ مع ذكر السبب

import javax.swing.*;
public class Test
{
	public static void main(String args[])
	{
  int num[]=new int[8];
  String title="The Result";
  String output=" ";
  String s;

  int sum=0;
  int count=0;
  int sum1=0;
  float average;


  for(int i=0;i<num.length;i++)
  {
 	 s=JOptionPane.showInputDialog("Enter numbers"+i+":");
 	 num=Integer.parseInt(s);
 	 sum=sum+num;
  }

  output+="\nThe number are=";
  for(int i=0;i<num.length;i++)
  {
 	 output+=num+"";
 	 if (num%2==0)
 	 count++;

  }

  for(int i=0;i<num.length;i++)
  {
 	 output+=num+"";
 	 if (num>0)
 	 sum1--;

  }

  output+="\nThe Sum="+sum;

  average=sum/8;
  output+="\nThe Average="+average;

  output+="\nThe Even tnumber = "+count;

  output+="\nThe sum1 tnumber = "+sum1;

  JOptionPane.showMessageDialog(null,output,title,JOptionPane.INFORMATION_MESSAGE);
  System.exit(0);
	}
}

ولكم مني جزيل الشكر

اخوكم المبرمج الصغير

#2

الخطا في

for(int i=0;i<num.length;i++)
 {
  output+=num+"";
  if (num>0)
  sum1--;

 }

لازم تزيد عددا sum1

sum1++

لماذا جملة

output+=num+"";

في بداية كل loop ??

منقطع من حين لاخر

#3

مشكووور اخوي بو فؤاد

ولكن عملت الي قلت لي عليه وماشفت نتيجة

هذا الكود بعد التصحيح الي قالي علية اخوي ابو فؤاد

 
//this Program for Page Quiz
import javax.swing.*;
public class Quiz
{
	public static void main(String args[])
	{
  int num[]=new int[8];
  String title="The Result";
  String output=" ";
  String s;

  int sum=0;
  int count=0;
  int muiltply=0;
  float average;


  for(int i=0;i<num.length;i++)
  {
 	 s=JOptionPane.showInputDialog("Enter numbers"+i+":");
 	 num=Integer.parseInt(s);
 	 sum=sum+num;
  }

  output+="\nThe number are=";
  for(int i=0;i<num.length;i++)
  {
 	 output+=num+"";
 	 if (num%2==0)
 	 count++;

  }

  for(int i=0;i<num.length;i++)
  {

 	 if (num>0)
 	 muiltply++;

  }

  output+="\nThe Sum="+sum;

  average=sum/8;
  output+="\nThe Average="+average;

  output+="\nThe Even tnumber = "+count;

  output+="\nThe muiltply tnumber = "+muiltply;

  JOptionPane.showMessageDialog(null,output,title,JOptionPane.INFORMATION_MESSAGE);
  System.exit(0);
	}
}
#4

الخطأ هو

int sum=0;

يجب تغيير نوع المتحول

float sum=0;

لأنو وقت اللي عم تجري عملية مع عددين من نوعين مختلفين مثلا

float and Int

أصبح عندك عملية قصر و القسمة يتم تقريبها الى أقرب عدد صحيح

casting

و انتبه للسطر

output+=num+"";

ضع مكانه

output = output + num + "   ";

بالتوفيق

تم تعديل هذه المشاركة بواسطة malek_sa في 24 مارس 2006 في 01:46

SCJP 5.0

#5

اخوي malek_sa

علمت الي قلت لي علية ولكن الناتج خطأ

شكرا على مشاركتك

#6

الاخ سلطان كان عندك مشكلة في الطباعة

و حساب القيم السالبة

عموما هي الكود الصحيح حاول تجربته :

//this Program for Page Quiz
import javax.swing.*;
public class Quiz
{
public static void main(String args[])
{
 int num[]=new int[8];
 String title="The Result";
 String output=" ";
 String s;

 int sum=0;
 int countEven=0;
 int countMinus=0;
 float average;


 for(int i=0;i<num.length;i++)
 {
  s=JOptionPane.showInputDialog("Enter numbers"+i+":");
  num=Integer.parseInt(s);
  sum=sum+num;
 }


//  to count even numbers
 for(int i=0;i<num.length;i++)
 {
  if ((num%2)==0)
  countEven++;
 }


 for(int i=0;i<num.length;i++)
 {

  if (num<0)
  countMinus++;

 }

 output+="\nThe Sum="+sum;

 average=sum/8;
 output+="\nThe Average="+average;

 output+="\nThe Even number = "+countEven;

 output+="\nThe minus number = "+countMinus;

 JOptionPane.showMessageDialog(null,output,title,JOptionPane.INFORMATION_MESSAGE);
 System.exit(0);
}
}

بالتوفيق

منقطع من حين لاخر

#7

اهااااا يعطيك العافية اخوي ابوفؤاد

بس انت نقصت انه يعرض في الناتج الارقام المدخله

انا راح اقوم بها

ربي مايحرمنا منك

#8

سؤال

أنتو متأكدين أن المتوسط تم حسابه بشكل صحيح أو تم تقريبه

أنا بعتقد أنو هالسطر فيه شوية شك

int sum;
average=sum/8;

فضل أنو ينكتب بهالطريقة

average=(float)sum/8;

شو رأيك الأخ سلطان و أبو فؤاد

SCJP 5.0

#9

معك حق بدون إجراء Cast سيتم تجاهل الجزء الكسري من الناتج، إنما يمكن كتابة العبارة المذكورة بالشكل التالي أيضاً و ستصبح النتيجة صحيحة:

average=(float)sum/8.0;

حيث أن قسمة int/int تعطي int حتى لو خزنت النتيجة في float أو double ، أما قسمة int/float تعطي النتيجة المطلوبة!

#10

أخطأت في كتابة العبارة! يجب أن تكون

average=sum/8.0;

عذراً

#11

اخوي N.ZAZA

انا معرف average في بداية البرنامج على انه float

int sum=0;

int countEven=0;

int countMinus=0;

float average;

[/code

والله يعطيك العافية على مشاركتك

خلاص حلينا مع اخوي ابوفؤاد

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…