کمک در استفاده از آرایه ها و چگونگی مقدار دهی یک رشته به وسیله آرایه

یک کمکی هم درباره آرایه ها می خواستم و چگونگی مقدار دهی یک رشته به وسیله آرایه
 

saalek110

Well-Known Member
به نقل از :
http://saman.frm.ir/viewtopic.php?f=24&t=15

کد:
int a[5];
a[0] = 12;
a[1] = 23;
a[2] = 34;
a[3] = 45;
a[4] = 56;
printf("%d",a[0]);
در کد بالا یک آرایه از نوع int تعریف کرده ایم با گنجایش 5 تا.
و بعد مقدار دهی کرده ایم.
توجه کنید از صفر می شماریم تا 4 . نه یک تا 5 .

بعد آمده ایم اولی را چاپ کرده ایم.

=======================
کد:
int a[10];
for (i = 0;i < 10;i++)
   a[i] = 0;
در اینجا با حلقه آمده ایم اعضای آرایه را مقدار دهی کرده ایم.
=======================
b1.gif

در شکل بالا فرق آرایه یک بعدی با دو بعدی را می بینم.

=======================

کد:
int a[3][3],i,j;
for (i = 0;i < 3;i++)
   for (j = 0;j < 3;j++)
      a[i][j] = 0;

در اینجا با حلقه آرایه دو بعدی را مقدار دهی کرده ایم.
 

saalek110

Well-Known Member
خوب آرایه همینه دیگه. یک رشته از متغیرها.
من طرز تعریف و مقدار دهی را گفتم.
منظور از پیچیده تر چیه؟
 

saalek110

Well-Known Member
نقل از:
http://saman.frm.ir/viewtopic.php?f=24&t=16

کد:
char ca[10];
ca[0] = 'H';
ca[1] = 'e';
ca[2] = 'l';
ca[3] = 'l';
ca[4] = 'o';
ca[5] = 0;
printf("%s",ca);

در اینجا char ئی را به نام ca تعریف کرده ایم با گنجایش 10 خانه.
در موقع مقدار دهی خانه ششم که میشه ca[5] را صفر داده ایم.
بعد ca را چاپ کرده ایم که همان Hello چاپ می شود.

========================

کد:
char *sp;
sp = "Hello";
printf("%s",sp);

این هم روش دوم چاپ Hello .

===============
دو روش ایجاد رشته در بالا گفته شد.
یکی به روش آرایه.
دومی به روش اشاره گر.
 
یک سوال :
برنامه ای بنویسید که اسمی را از کاربر دریافت و همه حروف آن را بزرگ کند

اگه این برنامه رو حل کنید شاید مشکل من تا حد زیادی با آرایه ها حل بشه
ممنون
 

saalek110

Well-Known Member
باید صفری باشه که معلوم شود رشته تمام شده.

======================
برای نوشتن اون برنامه که همه را حروف بزرگ کنه. باید به جدول اسکلی بروید و ببینید عدد حرف کوچک با عدد حرف بزرگ چقدر تفاوت داره .
بعد بیایید دونه دونه خانه های آن رشته را تغییر دهید. من نمی تونم برنامه اش را الان بنویسم. اگر دوستان لطف کنند خیلی خوبه.
 

the_king

مدیرکل انجمن
یک سوال :
برنامه ای بنویسید که اسمی را از کاربر دریافت و همه حروف آن را بزرگ کند

اگه این برنامه رو حل کنید شاید مشکل من تا حد زیادی با آرایه ها حل بشه
ممنون

کد:
#include <stdio.h>
#include <conio.h>

void main()
{
    char s[80];
    int i;
    clrscr();
    printf("Please enter a text : ");
    gets(s);
    for (i=0;s[i];i++)
        if ((s[i]>='a') && (s[i]<='z'))
            s[i]-=32;
    printf("Upper case : %s",s);
    getch();
}

گویا مشکل شما مربوط به آرایه نیست، در کار با رشته ها مشکل دارید.
 
کد:
#include <stdio.h>
#include <conio.h>

void main()
{
    char s[80];
    int i;
    clrscr();
    printf("Please enter a text : ");
    gets(s);
    for (i=0;s[i];i++)
        if ((s[i]>='a') && (s[i]<='z'))
            s[i]-=32;
    printf("Upper case : %s",s);
    getch();
}
گویا مشکل شما مربوط به آرایه نیست، در کار با رشته ها مشکل دارید.

گل گفتی
دستتم درد نکنه به خاطر برنامه
 

saalek110

Well-Known Member
نقل از:
http://forum.persiantools.com/t32403-page19.html

من متغیری از نوع رشته ای تعریف کردم اما وقتی مقدار میدم تا فاصله رو در اون ذخیره میکنه چکار بکنم که کامل دخیره کنه ؟
مثلا : Ali akbari می خوام هر دو در رشته ذخیره شه ولی Ali فقط ذخیره میشه

با این روش میتونید space و tab رو بخونید
کد:
#include<iostream.h>
int main (){
char str[20];
cin.get(str,20);
cout<<str;
return 0;
}
البته با کلاس string هم میشه ولی کامپایلر من جواب نمیده

در ادامه فرمايشات آقا آرمان ...
مي توانيد از تابع cin.getline نيز استفده كنيد. ( رشته را تا موقع Enter زدن مي خواند.)
به همان شكل cin.get
 

saalek110

Well-Known Member
http://forum.persiantools.com/t32403-page18.html

اين برنامه فكر كنم براي جا افتادن كدهاي اسكي و اسكن خوب باشه.
در اين برنامه هر كليدي را كه بزنيد، كد آن را نشان مي دهد. دو تا getche قرار داده ايم ، زيرا بعضي كليد ها مثل arrow ها و delete و غيره ، دو كد دارند . كد اسكن و كد اسكي.
اميدوارم مفيد باشه.

کد:
#include<iostream.h>
#include<conio.h>

void main(void)
{
  clrscr();
  char c,ch1,ch2;
do
     {
    cout<<">>";
  ch1 = getche();
  cout<<",";
  ch2 = getche();
  cout <<"="<< (int) ch1 <<","<< (int) ch2<<endl;
  cout<<"press any key for continue.x(exit)"<<endl;
    c=getch();
     }while (c!='x');

}
منبع:
http://forum.majidonline.com/forum111/thread49129.htm
 

saalek110

Well-Known Member
به این میگن cast .
وقتی داخل دو تا پرانتز کلمه int را می نویسی یعنی اینتیجر اون را می خوای. یعنی درخواست تبدیله.

ولی باز هم تحقیق کن. ولی فکر کنم همینه.
 

saalek110

Well-Known Member
به نقل از:
http://forum.persiantools.com/t32403-page19.html

فرق اين دو تا چيست؟

کد:
int

کد:
(int)

با تشكر.

==================================
نوشته ای از programmer
سلام سالک جان

از (int) برای تبدیل نوع استفاده میکنن.

به این کد نگاه کن:
کد:
#include<iostream.h>
#include<conio.h>

int main()
{
 int x=0;
 char c='a';
 x=(int)c;
 clrscr();
 cout<<c<<"=>"<<x<<endl;

 getch();
 return 0;
}
c یک کاراکتر است و x یک عدد صحیح .

همونطور که میدونید هر کاراکتر یک کد اسکی داره.

وقتی (int) رو قبل از c قرار میدیم کامپایلر معادل عددی c را در x قرار میدهد.

حالا این کد رو هم ببین :
کد:
#include<iostream.h>
#include<conio.h>

int main()
{
 int x=65;
 clrscr();
 cout<< (char)x <<endl;

 getch();
 return 0;
}
دستور cout کاراکتری را که کد اسکی آن x است را در خروجی نمایش میدهد.

این یکی هم که واضحه :
کد:
#include<iostream.h>
#include<conio.h>

int main()
{
 float f=3.9999;
 int x;
 clrscr();
 x=(int)f;
 cout<< x <<endl;
 getch();
 return 0;
}

=======================================
نوشته ای از mohammad_110
(int) باعث میشه نتیجه به int تبدیل شود.
کد:
float f,ff;
ff=3.454;
f=(int)ff;
مقدار f ، عدد 3 می شود.
این روش یک کاربرد هم در کلاس های مشتق شده داره:
کد:
#include<stdio.h>
#include<conio.h>

class CBase{
 public:
   void print(){printf("\na");}
};

class CSub:public CBase{
 public:
   void print(){printf("\naa");}
};

void main(){
 clrscr();

 CBase bt;
 CSub  st;

 bt.print();
 st.print();

 CBase *pbt;

 pbt=&bt;
 pbt->print();

 pbt=&st;
[COLOR="Red"]
 pbt->print();
 ((CSub*)pbt)->print();[/COLOR]
 getch();
}
خروجی این برنامه به این صورت است:
a
aa
a
a
aa


احتمالا برای شما این مثال مبهم هست . سئوال بپرسید راحتتر میشه ابهام رو بر طرف کرد.
ولی اصلش اینه که کد قرمز رنگ دومی باعث میشه اشاره گر کلاس مبنا به اشاره گر زیر کلاس تبدیل بشه بنابراین تابع زیر کلاس به جای تابع کلاس مبنا اجرا میشه.
البته این روش ممکنه کاربرد های دیگه هم داشته باشه.

===========================================
saalek : با تشكر از اساتيد گرامي.

يك مثال جالب در اين رابطه:
کد:
#include <iostream>
using namespace std;

int dog, cat, bird, fish;

void f(int pet) {
  cout << "pet id number: " << pet << endl;
}

int main() {
  int i, j, k;
  cout << "f(): " << (long)&f << endl;
  cout << "dog: " << (long)&dog << endl;
  cout << "cat: " << (long)&cat << endl;
  cout << "bird: " << (long)&bird << endl;
  cout << "fish: " << (long)&fish << endl;
  cout << "i: " << (long)&i << endl;
  cout << "j: " << (long)&j << endl;
  cout << "k: " << (long)&k << endl;
} ///:~

کد:
نتيجه اجرا
f(): 4198736
dog: 4323632
cat: 4323636
bird: 4323640
fish: 4323644
i: 6684160
j: 6684156
k: 6684152
 

arefe.ayari

New Member
یک سوال در مورد ++cاز شما داشتم با تشکر از شما دوستن و سا یت قشنگتون . ارایه ای با بیت عدد بگیرد پس از دریافت از یک ورودی اگر ان عدد را در ورودی دریافت کرد شماره اندیس عنصر را بگرداند در غیر این صورت چاپ کند عدد پیدا نشد
 

جدیدترین ارسال ها

بالا