PDA

View Full Version : سوال: ریختن مقدار چند متغیر در یک متغیر



moonDark
شنبه 04 شهریور 1391, 13:31 عصر
سلام ممکنه این سوال تکراری باشه ولی سرچ برای من کار نمیکنه
میخاستم بدونم که راهی هست که مقدار چند تا متغیر رو توی یکی بریزم؟
int main()
{
char a1 = 'A';
char a2 = 'B';
char tmp;
tmp = ??
}
اینو میشه توی vb.net اینجوری نوشت:
dim a1 as string = "A"
dim a2 as string = "B"
dim tmp as string = convert.tostring(a1 + a2)
راحی هست که توی cpp مثل vb.net دو مقدار رو توی یک متغیر بریزم؟
کاراکتر من از نوع آرایه هست و ممکنه بیشتر از یک حرف باشه

#target
شنبه 04 شهریور 1391, 14:24 عصر
برا رشته ها میتونی از تابع strcpy و strcat استفاده کنی

Ananas
شنبه 04 شهریور 1391, 15:09 عصر
سلام.
سوالتون یکمی مبهم هست شاید چون با ذخیره سازی اطلاعات آشنا نیستی شایدم آشنایی ولی من سوالتو خوب متوجه نشدم. . شما می خوای اطلاعات چند تا متغیر از یک نوع یکسان رو پشت سر هم داشته باشی؟ خوب باید از آرایه استفاده کنید. یا اگه می خواید یک سری اطلاعات که همنوع یا غیر هم نوع اند و تعداد و ترکیب مشخصی دارن رو تو یک مجموعه به هم پیوسته نگه داری کنی که هر چند تا نمونه هم بخوای از این مجموعه بتونی بسازی، اینجا از struct و یا class می تونی استفاده کنی. همون شی گرایی که میگن. مثلا برای یک ماتریس که از اعداد صحیح تشکیل شده به جای آرایه می تونی از struct استفاده کنی. یا اینکه میخوای اطلاعات رو بدون توجه به نوع متغیرها در قسمتی از حافطه پشت سر هم به شکل مجموعه ای از بایت ها پشت سر هم ذخیره کنی؟ از اشاه گر یا آرایه از بایت ها می تونی استفاده کنی.

moonDark
شنبه 04 شهریور 1391, 17:13 عصر
بله من تازه c++ رو یاد گرفتم (نصف ماه هم نمیشه)!!
من زیاد از اشاره گر ها و رفرنس ها سر در نمیارم و نمیتونم خوب یادشون بگیرم خیلی پیچیدس
لطفا اگه میشه یکم بیشتر راهنمایی کنید
من میخام یه همچین چیزی داشته باشم:
char* a1 = "hello ";
char* a2 = "world.";
char* a3;
حالا میخام که توی a3 اینو بریزه hello world یعنی مقدار های a1 و a2 رو پشت سر هم توی a3 بریزه
اگه امکانش هست کدش رو بهم بدین ممنون میشم

Ananas
شنبه 04 شهریور 1391, 18:02 عصر
اگه امکانش هست کدش رو بهم بدین ممنون میشم
برا رشته ها میتونی از تابع strcpy و strcat استفاده کنی
اینم یک مثال:

char * a1 = "str1";
char * a2 = "_String_2_";
char * a3 = " + ";
char a4[256];
strcpy(a4 , a1);
strcat(a4 , a3);
strcat(a4 , a2);
MessageBoxA( 0, (char *)a4, (char *)"Caption", 0 );

نمی دونم روش درستی باشه یا نه ولی درست اجرا میشه.

moonDark
شنبه 04 شهریور 1391, 18:24 عصر
ارور میده VC++‎‎‎
با devcpp هم تست کردم موقع اجرا فقط 0 رو نشون میده

یه سوال دیگه هم دارم:
من چه طوری میتونم از یه متغیر داخل تابع system استفاده کنم؟
مثلا :
system("color " اینجا یه متغیر باشه که رنگ رو بهش معرفی کنه )

tdkhakpur
شنبه 04 شهریور 1391, 21:52 عصر
یه سوال دیگه هم دارم:
من چه طوری میتونم از یه متغیر داخل تابع system استفاده کنم؟
مثلا :
system("color " اینجا یه متغیر باشه که رنگ رو بهش معرفی کنه )
اون پارامتری که سیستم میگیره کلا یه دونه متغیر رشته ای هست و میتونید قبل از استفاده از sysytem متغییر رو به رشته نهایی تبدیل کنید بعد بفرستید واسه اجرا یه چیزی تو این مایه ها

string ResStr="",Color; = "12";
ResStr +=Color;
system(ResStr);

Ananas
یک شنبه 05 شهریور 1391, 01:11 صبح
با devcpp هم تست کردم موقع اجرا فقط 0 رو نشون میده
با dev c++ امتحان کردم اشکالی نداره. کد فایل اصلی با devc++ :

#include <cstdlib>
#include <iostream>
#include <windows.h>

using namespace std;

int main(int argc, char *argv[])
{
char * a1 = "str1";
char * a2 = "_String_2_";
char * a3 = " + ";
char a4[256];
strcpy(a4 , a1);
strcat(a4 , a3);
strcat(a4 , a2);
MessageBoxA( 0, (char *)a4, (char *)"Caption", 0 );
system("PAUSE");
return EXIT_SUCCESS;
}

برای کار با رشته ها هم مثل مثال دوستمون tdkhakpur (http://barnamenevis.org/member.php?99732-tdkhakpur) از کلاس string استفاده کنی راحت تر هستی. برای جمع و مقدار دادن و کلا کارهایی که بخوای رو رشته انجام بدی بهتره.

moonDark
یک شنبه 05 شهریور 1391, 11:18 صبح
ممنون ولي يه سوال چرا مقدار رنگ رو بعد از يه سميكولون و مساوي گذاشتين؟

#target
یک شنبه 05 شهریور 1391, 14:59 عصر
اشتباه تایپی حتما !

mr AHR
پنج شنبه 09 شهریور 1391, 01:28 صبح
بابا چرا این بدبخت رو میپیچونین
داداش من خودم ماسیمم 2 ماهه یاد گرفتم تازه تست هم تازه شروع کردم
ببین تو C++‎‎‎‎ رشته تقریبا عین array هست پس یعنی چی ؟ یعنی شما میتونی در مسخره ترین حالت اینجوری بنویسی :

char a = 'a';
char b = 'b';
char[3] c = { a , b , '/0'}


تست نکردم ولی جواب میده احتمال زیاد ( راستی اون /0 آخر نشون میده که رشته اینجا تموم میشه فکر کن اگر اینجا به جای 2 تا یدونه بود از کجا میفهمید جای دومی هیچی نذاره یا رشته کجا تموم میشه ؟؟ اگر نباشه رشته تو مموری تا جایی که به یه /0 برسه کش میداد !!! مثلا ab9375khefb084yu4y4ge و بعد آخر رشته در واقع جایی هست که از روی تصادف به یه /0 رسیدیم )