مسألة برمجية للتدريب #2

اكتب برنامج يقرأ عدد صحيح N والذي يدل على عدد طلاب مدرسة ما , ثم يقوم بقراء N عدد والتي هي علامات الطلاب

ثم يقوم بطباعة مركز الطالب , (الطالبان الذان يستحقان نفس العلامة يأخذان نفس المركز).

مثال 1:

ادخل عدد الطلاب : 3

علامة الطالب الأول : 1

علامة الطالب الثاني : 2

علامة الطالب الثالث : 2

الخرج :

1 1 3


المثال السابق بدون كتابة تعليمات توضيحية :

3

2 2 1

1 1 3


مثال ثانٍ :

5

4 5 6 5 9

5 3 2 3 1


مثال أخير :

4

8 8 8 5

1 1 1 4

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

حسنا لقد بدات بتعلم البرمجة بلغة جافا منذ 20 يوما وهذا اول برنامج لي وليس بالجودة المطلوبة فارجو ان تعطيني رايك 

package problem;

import java.util.HashMap;

public class problem {

public static void main(String[] args) {



 HashMap<Integer, String> nn=new HashMap<Integer, String>();

 nn.put(10, "abdou");
 nn.put(8, "nasrou");
 nn.put(7,"mouh");
 nn.put(9,"bilel");


 for(int i=20;i>0;i--){
    if (nn.containsKey(i)){
        System.out.println(nn.get(i));
    }
 }
}}

صديقي انا مبتدأ مثلك :] , ولا اعرف بالجافا آسف , لكن ان جربته على الامثلة السابقة واعطى نفس الخرج فقد حللتها

متأكد بأن هناك طريقة أفضل لكن هذا ما أستطيع التفكير فيه حالياً

def grades(n, g):
    res = []
    unsorted_g = g
    g = sorted(set(g), reverse=True)
    dups = 0
    tmp = []
    for i in unsorted_g:
            if i in tmp:
                dups += 1
                res.append(g.index(i) + 1)
            else:
                res.append(g.index(i) + 1 + dups)
             if i not in tmp:
                tmp.append(i)
    return res

والإستخدام

N = int(input("Enter the number of students: "))
g = []
for i in range(N):
    grade = int(input("Enter the grade for the student number {}: ".format(i+1)))
    g.append(grade)
print(grades(N, g))
محمد عزيز الكناني أضف ردا
raw_input()
l = map(int, raw_input().split())
l1 = list(set([v for v in l if l.count(v)>1]))
l2 = list(set(l))
l2.sort(reverse=True)
l3 = l[:]
l3.sort(reverse=True)
for k, v in enumerate(l):
    if (v in l1):
        l[k] = "%i" % (l2.index(v)+1)
    else:
        l[k] = "%i" % (l3.index(v)+1)

print " ".join(l[::-1])
Binwa أضف ردا

هذه اسهل بC#

    static void Main(string[] args)
    {
        int StudentsNum;
        //انشاء مصفوفه
        List<int> Degrees = new List<int>();
        Console.WriteLine("Enter Students Number : ");
        //عدد الطلاب
        StudentsNum = int.Parse(Console.ReadLine());
        //ادخال درجات الطلاب في المصفوفة
        for (int i = 1; i <= StudentsNum; i++)
        {
            Console.WriteLine("Enter Student Num " + i + " Degree : ");
            int x = int.Parse(Console.ReadLine());
            Degrees.Add(x);

        }
        //ترتيب الدرجات من الاكبر للاصغر
        int s;
        int j;
        int index;

        for (s = 1; s < Degrees.Count; s++)
        {
            index = Degrees[s];
            j = s;
            while ((j > 0) && (Degrees[j - 1] < index))
            {
                Degrees[j] = Degrees[j - 1];
                j = j - 1;
            }

            Degrees[j] = index;
        }
        //عرض لترتيب الدرجات
            Console.WriteLine("---------------------------------------");
       foreach(int n in Degrees)
        { 
            Console.WriteLine(Degrees.IndexOf(n) +1+ " - " + n);
              }            
            Console.ReadLine();
                }
    }
}