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

اختبر قدراتك في C/CPP - الحلقة الخامسة, الجزء الثاني

مغلق
بدأه Snack3r في 21 سبتمبر 2012 · 3 رد · 1,534 مشاهدة · في اختبر قداراتك
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

الحلقة الأولى.

الحلقة الثانية - الجزء الأول.

الحلقة الثانية - الجزء الثاني.

الحلقة الثانية - الجزء الثالث.

الحلقة الثانية - الجزء الرابع.

الحلقة الثانية - الجزء الخامس.

الحلقة الثانية - الجزء السادس و الأخير.

الحلقة الثالثة - الجزء الأول.

الحلقة الثالثة - الجزء الثاني.

الحلقة الثالثة - الجزء الثالث.

الحلقة الثالثة - الجزء الرابع.

الحلقة الثالثة - الجزء الخامس و الأخير.

الحلقة الرابعة - الجزء الأول.

الحلقة الرابعة - الجزء الثاني.

الحلقة الرابعة - الجزء الثالث.

الحلقة الرابعة - الجزء الرابع.

الحلقة الرابعة - الجزء الخامس.

الحلقة الرابعة - الجزء السادس.

الحلقة الرابعة - الجزء السابع.

الحلقة الرابعة - الجزء الثامن.

الحلقة الرابعة - الجزء التاسع.

الحلقة الرابعة - الجزء العاشر.

الحلقة الرابعة - الجزء الحادي عشر.

الحلقة الرابعة - الجزء الثاني عشر.

الحلقة الرابعة - الجزء الثالث عشر.

الحلقة الرابعة - الجزء الرابع عشر.

الحلقة الرابعة - الجزء الخامس عشر.

الحلقة الرابعة - الجزء السادس عشر.

الحلقة الرابعة - الجزء السابع عشر.

الحلقة الرابعة - الجزء الثامن عشر.

الحلقة الرابعة - الجزء التاسع عشر.

الحلقة الرابعة - الجزء العشرون و الأخير.

الحلقة الخامسة - الجزء الأول.

مرحبا بكم إخوتي الكرام في الجزء الثاني من الحلقة الخامسة من سلسلة اختبر قدراتك, قمتُ بتقسيم الحلقة الخامسة إلى عدة أجزاء, مُرتبة حسب الصعوبة.

أجزاء هذه الحلقة ستكون خاصة بمتفرقات C/C++.

الإختبار الخامس (الجزء الثاني) :

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

أترك لك حرية اختيار خوارزمية الترتيب بالإضافة إلى وسائط الدالة التي ستتولى مهمة الفرز.

مثال :

post-219439-021529200 1348232119_thumb.p

سأضع حل السؤال بعد إنتهاء عرض المحاولات.

المرفقات
testCode.png
#2

السلام عليكم

هذه محاولتي

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

void sort(char ** list, int size);
char * in();
void showList(char ** list, int size);

int main(int argc, char ** argv)
{
	char ** s_list = NULL;
	char ** tmp = NULL;
	int i = 0, size = 0;

	printf("Combien de chaines a trier: \n");
	scanf("%d", &size);

	getchar();

	tmp = malloc(sizeof(char) * size);
	if(tmp != NULL)
	{
   	     s_list = tmp;
	}
	else{
       	free(s_list);
   	    exit(0);
	}
	printf("Donnez vos %d chaines (validez chacune  par \' return \')\n", size);

	for(i = 0; i < size; i++)
	{
   	    s_list = in();
	}
	sort(s_list, size);

	showList(s_list, size);

	free(s_list);
	return 0;
}
void showList(char ** list, int size)
{
	int i = 0;
	for(i = 0; i < size; i++)
    	{
   	    printf("%s\n",list);
        }
}

void sort(char ** list, int size)
{
	char  * inter = NULL;
	int stop = 0;
	int i = 1;
	while(1)
	{
    	stop = 1;
    	for(i = 1; i < size; i++)
    	{
        	if(tolower(list[ i - 1][0]) > tolower(list[0]))
        	{
            	inter = list;
            	list = list[i - 1];
            	list[i - 1] = inter;
        	}
        	else{
            	stop++;
        	}
    	}
    	if(stop == size)
    	{
        	break;
    	}
	}
}
char * in()
{
	char c = 0;
	int size = 1;
	char *tmp = NULL, *in = NULL;
	while((c = getchar()) != '\n')
	{
    	size++;
    	tmp = (char *) realloc(in, sizeof(char) * size);
    	if(tmp != NULL)
    	{
        	in = tmp;
    	}
    	else{
        	free(in);
        	exit(0);
    	}
    	in[size - 2] = c;
	}
	in[size - 1] = '\0';
	return in;
}

تم تعديل هذه المشاركة بواسطة biginner2000 في 21 سبتمبر 2012 في 18:37

#3

محاولتي :

#include <stdio.h>
#include <string.h>
#define NCHMAX 100 /* nombre maximal de chaînes à traiter */
#define LGMAX 25 /* longueur maximale d'une chaîne (sans \0) */

int main() {

    void trichaines(char * *, int); /* prototype fonction de tri */
    char chaines [NCHMAX] [LGMAX + 1]; /* tableau des chaînes */
    char * adr [NCHMAX]; /* tableau pointeurs sur les chaînes */
    int nch, /* nombre de chaîne à trier */
            i;

    /* lecture des chaînes et préparation du tableau de pointeurs */

    printf("combien de chaînes à trier ? ");
    scanf("%d", &nch);
    if (nch > NCHMAX) nch = NCHMAX;
    getchar(); /* pour forcer la lecture de fin de ligne */
    printf("donnez vos %d chaînes (validez chacune par 'return')\n", nch);
    for (i = 0; i < nch; i++) {
        fgets(chaines, LGMAX + 1, stdin); /* lit au maximum LGMAX caractères */
        adr = chaines;
    }

    /* tri des pointeurs sur les chaînes */

    trichaines(adr, nch); /* affichage des chaînes après tri */
    /* attention aux chaînes de longueur maximum !! */
    printf("\n\nvoici vos chaînes triées\n");
    for (i = 0; i < nch; i++)
        printf("%s", adr);

    return 0;
}

void trichaines(char * * adr, int nch) {
    /* adr : adresse tableau de pointeurs sur chaînes à trier */
    /* nch : nombre de chaînes */
    char * tempo; /* pointeur temporaire pour l'échange de 2 pointeurs */
    int kmax, i, j;
    for (i = 0; i < nch - 1; i++) {
        kmax = i;
        for (j = i + 1; j < nch; j++)
            if (strcmp(adr[kmax], adr[j]) > 0)
                kmax = j;
        tempo = adr[kmax];
        adr[kmax] = adr;
        adr = tempo;
    }
}

المُخرجات :

post-219439-034819500 1348319045_thumb.p
المرفقات
test.png

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

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