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

سؤال في إدخال الأسم بواسطة المستخدم

مغلق
بدأه SB4 في 3 مايو 2006 · 7 رد · 598 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

هذا البرنامج يستقبل من المستخد أسمة ويعرضة بشكل آخر بأستخدام الأمر gets وهذا الكود :

#include<stdio.h>

void line();
void main()
{
     char Name[20];
     printf("Enter your name:");
     gets(Name);
     line();
     printf("**                AN AWARD TO              **\n");
     printf("**                 %s              **\n",Name);
     line();
     
     
     while(1);
     
}

void line()
{
     printf("*********************************************\n");
}

قم بإدخال هذا الأسم Joe Bloggs راح تلاحظ أن الشكل يطلع صح ولكن أدخل أي أسم آخر مثل Ali Ahmed راح يكون الشكل خطأ شلون أقدر أحل هذي المشكلة

وشكرا مقدما

#2

شو المقصود " راح يكون الشكل خطأ "؟؟؟

وضحج السؤال أكثر,,,

#3

أولا شكرا لحرصة على المساعدة أخوي إسماعيل

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

عند إدخال الأسم Joe Bloggs تكون النجوم بمكانها الصحيح أي الشكل مرتب ولكن عند إدخال الأسم Ali Ahmed راح تكون النجوم ليست بمكانها الصحيح بمعنى يحدث خلل أو خطأ بالشكل

أتمنى تكون فمت قصدي

sfs.txt

#4

One Solution to solve it

#include<stdio.h>

void line();
main()
{
    char Name[20];
    int i;
    int space;

    printf("Enter your name:");
    gets(Name);
    line();
    printf("**                AN AWARD TO              **\n");
    printf("**                ");
    printf("%s",Name);
    space = 45 - (20 + strlen(Name));
    for(i=0; i<space; i++)
      printf(" ");
    printf("**\n");
    line();
    
    
    while(1);
    
}

void line()
{
    printf("*********************************************\n");
}

if it was in c++ use iomanip.h with setw() function

تم تعديل هذه المشاركة بواسطة Yousof في 3 مايو 2006 في 22:09

#5

شكرا أخوي Yousof ماقصرت بارك الله فيك

بس عندي سؤال يعني شنو هذي العبارة strlen(Name) هل تعني زائد مسافات الكلمة التي أكتبها ؟ زين بالنسبة للقيمة 20 في هذي العبارة (20 + strlen(Name) ليش ما يكون رقم ثاني شلون عرفت أن عشرين ؟

طبعا أنا أبي أعرف هذي الأشياء لأني أبي أعرف أكتب برامج وأعرف الناتج بدون أستخدام الـ Compiler :)

تم تعديل هذه المشاركة بواسطة SB4 في 4 مايو 2006 في 01:02

#6

استخدم هذا الكود أفضل .. قد أضفت عليه بعض التعديلات ..

#include<stdio.h>

void line();
main()
{
    char Name[20];
    int i;
    int space=41;

    printf("Enter your name:");
    gets(Name);
    printf("string length is:%d\n",strlen(Name));
    line();
    printf("**                AN AWARD TO              **\n");
   
    printf("**");
    for(i=0; i<space; i++){
	printf(" ");
	if(i == (space/2 - strlen(Name)/2 + 1)){
   printf("%s",Name);
   i = i + strlen(Name);
	}
    }
   printf("**\n");
    line();
       
    while(1);
    
}

void line()
{
    printf("*********************************************\n");
}

طبعا ستقول لي من أين أتيت بال space=41 .. الجواب هو في ال Function line() عد عدد النجمات .. الناتج 45 ننقص منهم 4 نجمات (نجمتين في البدايه و نجمتين في النهايه) الناتج 41 ..

عمل strlen تقوم بعد كم حرف للكلمه و تعطيك الناتج

:D ربما الطريقه التي اتبعتها معقده بعض الشي و الشباب ما بيقصرون وياك :)

تم تعديل هذه المشاركة بواسطة Yousof في 4 مايو 2006 في 03:41

#7

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

راح أدرس الكود وإن شاء الله أفهمه صح :)

بارك الله فيك

#8

هذا نفس الكود الأول بس مع بعض التعديل بما أني ما عرفت شنو يعني الرقم 20 بهذي العبارة :

space = 45 - (20 + strlen(Name));

فلقيت حل ثاني بعد تفكير وأنا قاعد أراجع معلوماتي عن البرمجة :)

وهذا الكود

#include<stdio.h>

void line();
main()
{
   char Name[20];
   int i;
   int space;

   printf("Enter your name:");
   gets(Name);
   line();
   printf("**                AN AWARD TO              **\n");
   printf("**                ");
   printf("%s",Name);
   space = 43 - (18 + strlen(Name));
   for(i=0; i<space; i++)
     printf(" ");
   printf("**\n");
   line();
   
   
   while(1);
   
}

void line()
{
   printf("*********************************************\n");
}

والكود الثاني جاري التحليل ....

والشكر مرة ثانية للأخ Yousof

تم تعديل هذه المشاركة بواسطة SB4 في 5 مايو 2006 في 22:28

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

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