انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: وارد کردن رقمهای عدد در آرایه  (دفعات بازدید: 1726 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین triumph

  • Jr. Member
  • *
  • ارسال: 78
  • جنسیت : پسر
وارد کردن رقمهای عدد در آرایه
« : 03 آذر 1392، 11:51 ق‌ظ »
سلام..من ی برنامه دارم مینویسم که یک عدد رو بگیره..تک تک رقمهاشو وارد آرایه کنه و بعد قدرمطلق اون عدد رو حساب کنه...
من تونستم کد زیر رو بنویسم...ولی درست کار نمیکنه...میدونم نقصش زیاده..
کسی هست منو کمک کنه؟
ممنون میشم...
#include <stdio.h>
 
 int main()
 {
   int count;
   int i[count], arr[count];
   int num;
 
   printf("Enter num: ");
   scanf("%i", &num);
 
   for(count=0; num%10>10 || num%10==10; count++)
     {
       i[count] = num/10;
       if(num%10 < 10)
         i[count] = num%10;
     }
   if(i[count] == 0)
     printf("absolute: 0");
   if(i[count]>0)
     {
       arr[count] = i[count];
       printf("absolute: %i", arr[count]);
     }
 return 0;
 }

آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
پاسخ : وارد کردن رقمهای عدد در آرایه
« پاسخ #1 : 03 آذر 1392، 05:47 ب‌ظ »
از اولین ایرادت شروع می‌کنم. یک متغیر count ایجاد کردی که معلوم نیست توش چه عددی هستَ، بعد دو تا آرایه به نام‌های i و arr درست کردی که به اون تعداد نامعلوم عضو دارند! باید تعداد اعضا رو مشخص بکنی.

آفلاین سالار مقدم

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 2074
  • جنسیت : پسر
  • هر چقدر بدونی بازم کمه.
    • سالار مقدم
پاسخ : وارد کردن رقمهای عدد در آرایه
« پاسخ #2 : 03 آذر 1392، 06:35 ب‌ظ »
ببین برادر کلیه ی علوم کامپیوتر و مخصوصا برنامه نویسی بر اساس نظم هستند،ولی کد شما بسیار کثیفه! اعلان نام متغیر های بی معنی و استفاده از عبارات مقایسه ای اضافی که باعث سربارگزاری بیشتر برنامه میشه و ... . اگر کدت کثیف باشه یا برنامت رو نمی تونی درست بنویسی یا برنامه ی بد و پر باگی می نویسی. اشتباهاتت رو آقا معین گفتند. منم چند موردی رو می گم:
ٰnum%10>10 || num%10==10این رو می تونی به این شکل بنویسی :
num % 10 >= 10دقیقا معنی همون رو میده، باقی مانده تقسیم بر ده بزرگتر و مساوی ۱۰ باشه. مورد بعدی که اصلا نیاز به این مقایسه نیست.
مورد بعدی اینکه بعد از if از else if و else استفاده کن، اینطوری با اجرا شدن if اول بقیه اجرا نمیشن و برنامت کاراییش بالا میره.(توی این مورد استثنا وجود داره)
مورد بعدی هم اینکه در کد از فضای خالی و اسپیس استفاده کن، ایجوری خوانایی کدت بالا میره و خودت یا منی که دارم جواب میدم بهتر کد رو درک می کنم.
if(i[count] == 0)
    printf("absolute: 0");
یعنی اگر آخرین رقم عدد برابر صفر باشه قدر مطلقش صفره؟ اشتباهه! ۱۲۲۰ قدر مطلقش صفر نیست، شما باید قدر مطلق کل عدد( عدد ورودی) رو بگیری نه آرایه ای که رقم ها رو جدا کرده پس خطوطی که به قدر مطلق اختصاص دادی غلطه.
آخرین مورد این که ما تو سی توابع استاندارد رو داریم، اگر می خوای قدر مطلق یه عدد رو حساب کنی میتونی از تابع abs( int x )n استفاده کنی.
با توجه به تذکرات بالا من کدت رو با گرفتن طول عدد از کاربر باز نویسی کردم.
#include <stdio.h>

int main()
{
int arraySize;
int input;
int counter;

printf( "Enter how long is your number: " );
scanf( "%d", &arraySize );

int number[arraySize];

printf( "Enter the number: " );
scanf( "%d", &input);

printf( "\nabsolute: %d\n", abs( input ) );

for( counter = 0; counter < arraySize; counter++ ) {
number[counter] = input % 10;
input = input / 10;
}

return 0;
}

« آخرین ویرایش: 03 آذر 1392، 06:37 ب‌ظ توسط سالار مقدم »

آفلاین triumph

  • Jr. Member
  • *
  • ارسال: 78
  • جنسیت : پسر
پاسخ : وارد کردن رقمهای عدد در آرایه
« پاسخ #3 : 05 آذر 1392، 08:14 ق‌ظ »
سلام به همگی..ممنونم از دوستان عزیزم...من ی جورایی خیلی سریع و بی دقت نوشتم و سریع هم توی فروم قرار دادم که شاید این بزرگترین اشتباهم بوده دوستان  :)  مثلا همون شرط که || گذاشتم خوب مشخصا فرمایش شما بدیهیست...
خواستم از ورودی تعداد رقمهای عدد رو نگیرم و بعد رقم هم بتونه اعشاری باشه...یعنی از کاربر نپرسه که این عدد اعشاریه یا صحیح..فقط عدد رو بگیره و قدرمطلقش رو حسای کنه..
باید ورودی float باشه در اصل..ولی اگر طرف int وارد کرد دیگه بخش اعشاری اضافیشو نمایش نده..به همین دلیل به فکرم رسید که از آرایه استفاده کنم..
حالا با این شرح اگر تونستید این کد رو تغییر بدید بذارید بی زحمت منم استفاده کنم یا روش بیشتر کار کنم...

آفلاین triumph

  • Jr. Member
  • *
  • ارسال: 78
  • جنسیت : پسر
پاسخ : وارد کردن رقمهای عدد در آرایه
« پاسخ #4 : 05 آذر 1392، 09:51 ق‌ظ »
واضح تر بگم اصلا...چرا لقمه رو ازون ور بذارم تو دهنم؟؟
ی آرایه از نوع float معرفی بشه. از ورودی مقدار بگیره...حالا اگر انتهای آرایه 0. داشت یعنی int هست در غیر این صورت float هست.بعد اگر تشخصید داد int هست 0. رو از انتهاش برداره و قدرمطلقش رو نمایش بده..برنامه من دراصل اینه دوستان..ولی اون شرط رو بلد نیستم بنویسم که چه طور چک کنه اون مقدار تو آرایه هست و بعد برش داره؟

آفلاین triumph

  • Jr. Member
  • *
  • ارسال: 78
  • جنسیت : پسر
پاسخ : وارد کردن رقمهای عدد در آرایه
« پاسخ #5 : 05 آذر 1392، 10:21 ق‌ظ »
به نظرتون این چرا جواب نمیده؟ یعنی ورودی رو که میگیره به صورت float داخل آرایه ذخیره نمیکنه؟
#include <stdio.h>

 int main()
 {
   int i,count = 0;
   float num[10];
   printf("Enter num: ");
   scanf("%f", &num[10]);
   for(i=0; i=='.' && i+1==0; i++)
     printf("Type: int\n");

   return 0;
 }


آفلاین POo

  • Full Member
  • *
  • ارسال: 180
  • جنسیت : پسر
  • 12.04, debian testing
پاسخ : وارد کردن رقمهای عدد در آرایه
« پاسخ #6 : 05 آذر 1392، 01:37 ب‌ظ »
1- مورد اول اینکه اگر برنامه ++C اِ  اون هدر باید اینجوری نوشته بشه :#include <cstdio>2- اگر compiler شما برای 2003 به بعدِ که حتما هست این خط باید به قبل از Main اضافه بشه:using namespace std;3- مورد بعد هم اینکه int و float عدد هستن و اون "." که شما در شرط for گذاشتین اصلا معنی نداره، اگر میخواین هر عددی که میدین رو قدرمطلق بگیره از همون float استفاده کنین. از type casting هم برای تبدیل میشه استفاده کرد ولی اینجا لزومی نداره.
4- اگر میخواین شرط for رو انقدر پیچیده کنین استفاده از while بهتره چون while شرطتی تره ولی for بیشتر حالت شمارشی داره(البته بازم سلیقه ایه).
5- اون خط printf که تو هر بار اجرای حلقه "Type: int" رو چاپ میکنه و curser رو میبره خط بعد!
------
مورد دیگه هم اینکه به جای هِدر <cstdio> و دستور printf از هِدر <iostream> و دستورِ cout استفاده کنین راحت تره.
اینم helloworld :
// my first program in C++

#include <iostream>
using namespace std;

int main ()
{
  cout << "Hello World!";
  return 0;
}

اینم لینک:http://www.cplusplus.com/doc/tutorial/program_structure/
پدرم روضه رضوان به دو گندم بفروخت     ناخلف باشم اگر من به جوی نفروشم

آفلاین triumph

  • Jr. Member
  • *
  • ارسال: 78
  • جنسیت : پسر
پاسخ : وارد کردن رقمهای عدد در آرایه
« پاسخ #7 : 05 آذر 1392، 01:46 ب‌ظ »
دوست عزیز با سی مینویسم نه سی پلاس پلاس...
ubuntu 12.04
gcc version 4.6.3

آفلاین POo

  • Full Member
  • *
  • ارسال: 180
  • جنسیت : پسر
  • 12.04, debian testing
پاسخ : وارد کردن رقمهای عدد در آرایه
« پاسخ #8 : 05 آذر 1392، 01:56 ب‌ظ »
من اینو با ++C نوشتم:#include <iostream>
using namespace std;
 int main()
 {
   int i,count = 0;
   float num[10] = {-1 , 4 , -3 , 5.97012 , -11 , 22.5 , 4 , 5 , -25.32 , 3.14};
  for (i=0 ; i < 10 ; i++)
{

    if (num[i] >= 0 )
    {
        cout << i+1<<"th number absolute =" << num[i] <<"\n" ;
    }
    else
    {
        cout << i+1<<"th number absolute =" << (-1*num[i]) <<"\n" ;

    }
}
   return 0;
 }
شما هم اینو با ++g کامپایل کن، خودم الان کامپایلر ندارم اینو تو سایت:http://codepad.org/کامپایل کردم، روم به دیوار الان با ویندوزم!  :(

اعداد هم اگر نخواستین اینجوری بدین از دستور <<cin استفاده کنین.  ;)
پدرم روضه رضوان به دو گندم بفروخت     ناخلف باشم اگر من به جوی نفروشم

آفلاین triumph

  • Jr. Member
  • *
  • ارسال: 78
  • جنسیت : پسر
پاسخ : وارد کردن رقمهای عدد در آرایه
« پاسخ #9 : 05 آذر 1392، 02:28 ب‌ظ »
ممنون رفیق...
« آخرین ویرایش: 05 آذر 1392، 02:46 ب‌ظ توسط triumph »