ahmed.o.mohamed

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

4 ردود في هذا الموضوع

السلام عليكم

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

مثال :

post-219439-021529200 1348232119_thumb.p

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

هذه محاولتي

#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[i] = 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[i]);
}
}

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[i][0]))
{
inter = list[i];
list[i] = 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
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

محاولتي :

#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[i], LGMAX + 1, stdin); /* lit au maximum LGMAX caractères */
adr[i] = chaines[i];
}

/* 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[i]);

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[i];
adr[i] = tempo;
}
}

المُخرجات :

post-219439-034819500 1348319045_thumb.p

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

تم منح النقاط للمشاركات المفيدة.

يُغلق.

أراكم في الجزء الثالث من الحلقة الخامسة.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .