PDA

View Full Version : تبدیل رشته ای شامل اعداد به اعداد



tl_le0
چهارشنبه 12 اردیبهشت 1386, 23:01 عصر
ضمن سلام و خسته نباشید خدمت اساتید محترم
می خواستم بدونم اگه بخوام یه رشته که شامل عدد هست را درون یک متغیر از نوع int , double ,.... بریزم باید چی کار کنم
با تشکر

emad_67
پنج شنبه 13 اردیبهشت 1386, 00:33 صبح
می تونی از دستور atoi برای تبدیل یک رشته ای از اعداد به عدد نوع int استفاده کنی ضمنا میتونی از atof برای تبدیل به عدد float و از atol برای تبدیل به نوع long int اسفاده کنی هدرفایل این دستور ها هم stdlib.h هست

tl_le0
پنج شنبه 13 اردیبهشت 1386, 00:59 صبح
#include <stdio.h>
#include <stdlib.h>

int main(){
int k;
char c='2';
k=atoi(c);
printf("%d",&k);
return 0;
}
error :invalid conversion from 'char' to 'const char*' in line7

khob hala chikar konam :D

mzjahromi
پنج شنبه 13 اردیبهشت 1386, 06:52 صبح
خط 5 رو اینجوری بنویس


char * c="2"

tl_le0
پنج شنبه 13 اردیبهشت 1386, 21:39 عصر
نتیجه ی اصلاح شده ی برنامه :2293620
در حالی که نتیجه باید 2 باشه
من باید یه پروژه بنویسم که یه عدد صحیح 10 رقمی بگیره که هیچ کدام از رقماش یکسان نباشه و اولین رقم بزرگتر و اولین رقم کوچکتر از این عدد رو با خودش چاپ کنه

و من فکر می کنم ورودیم باید رشته باشه ولی خوب برای پیدا کردن عدد کوچکتر و عدد بزرگتر مشکل دارم

emad_67
پنج شنبه 13 اردیبهشت 1386, 22:17 عصر
#include <stdio.h>
#include <stdlib.h>

int main(){
int k;
char c='2';
k=atoi(c);
printf("%d",&k);
return 0;

شما اومدی به atoi یه کاراکتر برا تبدیل دادی ولی این دستور پارامتر ورودیش رشته است همون طور که جناب mzjahromi گفت اگه بنویسی


char *s="2";
k=atoi(s);

دیگه مشکلی بیش نمیاد
در ادامه سوالت منظور از اینکه اولین رقم بزرگتر و کوچکتر رو چاپ کنه چیه؟(بزرگتر و کوچکتری نسبت به چی باید سنجیده شه)

tl_le0
جمعه 14 اردیبهشت 1386, 16:40 عصر
خب من هم همین کا رو کردم عزیز

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

int main(){
int k;
char * c="2";
k=atoi(c);
printf("%d\n",&k);
return 0;
}
نتیجه:2293620

نتیجه ی اصلاح شده ی برنامه :2293620
منظور از اصلاح شده همین بود
حالا چیکار کنم ؟؟؟

emad_67
جمعه 14 اردیبهشت 1386, 17:06 عصر
خب من هم همین کا رو کردم عزیز

من برنامه شما رو اجرا کردم جواب 1245052 رو داد نمیدونم مشکل کجاست یعنی من با printf اصلا کار نکردم ولی به صورت زیر که نوشتم جواب داد:


#include <iostream.h>
#include <stdlib.h>
int main()
{
int k;
char * c="2";
k=atoi(c);
cout<<k<<endl;
return 0;
}

tl_le0
جمعه 14 اردیبهشت 1386, 22:47 عصر
خب این کد شما متعلق به c++ نه c و من مجبورم با سی این برنامه رو بنویسم

adaman
شنبه 15 اردیبهشت 1386, 00:39 صبح
printf("%d\n",&k);
این دستور آدرس K رو چاپ می کنه نه خود k رو ، & رو حذف کن به این صورت :

printf("%d\n",k);
بعد اینکه میخوای رقمهای یه عدد رو به دست بیاری ؟
مستقیم هم میشه اینکارو کرد ، رشته نمی خواد که