• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

جستجوي رشته هاي كاراكتري در آرايه و اعضاي استراكت

sima_c

کاربر تازه وارد
تاریخ عضویت
21 می 2006
نوشته‌ها
30
لایک‌ها
0
دوستان ممنون میشم کمکم کنید
یک نمونه برنامه می خوام که بتواند اطلاعات انباري را دريافت نموده و در آرايه‌اي از ساختمانها (structها) قرار دهدو در صورت امکان قابلیت جستجو داشته باشه .
 

sima_c

کاربر تازه وارد
تاریخ عضویت
21 می 2006
نوشته‌ها
30
لایک‌ها
0
من این برنامه رو نوشتم اما وقتی میخوام نام قطعه رو که میگیره با قطعات داخل آرایه مقایسه کنم مشکل دارم دوستان ممنون میشم راهنماییم کنن.
برای قسمت جستجو به لطف شما نیاز دارم.
کد:
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>

struct anbar{
char kala[50];
int vazn;
int ghymat;
} ex[100];

void enter(int n);

int main(){
char c[50];
int v,n,i=0;
vorod:
cout <<"1- search"<<endl;
cout <<"2- New"<<endl;
cout <<"Enter Number :  ";
cin >> v;
if (v==1)
{
cout <<"Name kala ro vared koned:  ";
cin >> c;

}
else
{
if (v==2)
cout <<"tedade kala ro vared koneed :  ";
cin >>n;
enter(n);
goto vorod;
}
if ((v!=1) && (v!=2))
{
cout <<"shomare gozina ro vared koneed!!!"<<endl;
goto vorod;}
return(0);
}
void enter(int n){
int i=0;
while (i<n){
cin >> ex[i].kala>> ex[i].vazn>> ex[i].ghymat;
i++;}
}
 

sima_c

کاربر تازه وارد
تاریخ عضویت
21 می 2006
نوشته‌ها
30
لایک‌ها
0
سلام
چطوری می تونم درون آرایه جستجو کنم.
مثلا آرایه ای ساختمان ها دارم میخوام یک کلمه رو داخلش سرچ بدم .
چطوری می تونم این کارو بکنم ؟
راهنمایی می تونه کسی بکنه ؟
ممنون میشم.
 

saalek

مدیر بازنشسته
تاریخ عضویت
24 می 2005
نوشته‌ها
654
لایک‌ها
53
محل سکونت
در پاي كوهپايه ها
در جستجوي اعداد داخل استراكت كه فكر كنم مشكل نداشته باشيد ، ولي براي متغيرهاي كاراكتري ، سي خيلي بد كار كرده. من مجبور شدم به روش زير عمل كنم.
البته با توابع مي شد كار كرد ولي من نخواستم از توابع استفاده كنم.

کد:
#include <iostream.h>

void main()
{
 char kala[20]="kala_name";

if  (kala[0]=='k' && kala[1]=='a')  cout << "true"<< endl;

// if (kala=="kala_name" )  cout << "true"<< endl;
//.........monjar be kaarkarde nadorost mishavad

}
 

sima_c

کاربر تازه وارد
تاریخ عضویت
21 می 2006
نوشته‌ها
30
لایک‌ها
0
سلام . خیلی ممنون از پاسخ شما
اما درون struct چطوری می تونم استفاده کنم .
دوست عزیزی گفتن با تابع strcmp میشه استفاده کرد آیا با این تابع این امکان هستش ؟
 

saalek

مدیر بازنشسته
تاریخ عضویت
24 می 2005
نوشته‌ها
654
لایک‌ها
53
محل سکونت
در پاي كوهپايه ها
با سلام.
اعضاي استراكت را به شكل برنامه زير فكر كنم بايد وارد كنيد نه به شكل آرايه.
کد:
#include <iostream.h>
#include <string.h>

void main()
{
 char *a1,*a2,*a3;
 int int1,int2;
 a1="tehran";
 a2="tehran";
 a3="esfehan";
		  int1=strcmp (a1,a2);
		  int2=strcmp (a1,a3);
				  cout<<"int1= "<<int1<<endl;
				  cout<<"int2= "<<int2<<endl;
}

اعدادي كه تابع برمي گرداند را بررسي كنيد و مورد استفاده قرار دهيد.
.
 

saalek

مدیر بازنشسته
تاریخ عضویت
24 می 2005
نوشته‌ها
654
لایک‌ها
53
محل سکونت
در پاي كوهپايه ها
از كتاب ديتل ديتل:
Comparing Strings with strcmp and strncmp
Figure 8.33 compares three strings using strcmp (lines 21, 22 and 23) and strncmp (lines 26, 27 and 28). Function strcmp compares its first string argument with its second string argument character by character. The function returns zero if the strings are equal, a negative value if the first string is less than the second string and a positive value if the first string is greater than the second string. Function strncmp is equivalent to strcmp, except that strncmp compares up to a specified number of characters. Function strncmp stops comparing characters if it reaches the null character in one of its string arguments. The program prints the integer value returned by each function call.

کد:
1	// Fig. 8.33: fig08_33.cpp 
2	2  // Using strcmp and strncmp. 
3	3  #include <iostream> 
4	4  using std::cout;
5	 5  using std::endl; 
6	6 7  #include <iomanip> 
7	8  using std::setw; 
8	9
9	10  #include 
<cstring> // prototypes for strcmp and 
strncmp11  using std::strcmp;                                 
    12  using std::strncmp;                                
    13
14	int main()
15	15  {
16	16     char *s1 = "Happy New Year";
17	17     char *s2 = "Happy New Year";
18	18     char *s3 = "Happy Holidays";
19	19
20	20     cout <<"s1 = " << s1 << "\ns2 = " << s2 << "\ns3 = " <<s3
21        << 
"\n\nstrcmp(s1, s2) = " << 
setw( 2 ) << strcmp( s1, s2 )
22        << 
"\nstrcmp(s1, s3) = " << 
setw( 2 ) << strcmp( s1, s3 )
23        << 
"\nstrcmp(s3, s1) = " << 
setw( 2 ) << strcmp( s3, s1 );
24
25     cout << 
"\n\nstrncmp(s1, s3, 6) = " 
<< setw( 2 )
26        << strncmp( s1, s3, 6 ) << "\nstrncmp(s1, s3, 7) = " << setw( 
2 )
27        << strncmp( s1, s3, 7 ) << "\nstrncmp(s3, s1, 7) = " << setw( 
2 )
28	<< strncmp( s3, s1, 7 ) << endl;
29	29  
30	   return 0; 
// indicates successful termination30  } 
// end main

کد:
// نتيجه اجرا

 s1 = Happy New Year 
 s2 = Happy New Year
 s3 = Happy Holidays
 strcmp(s1, s2) =  0 
strcmp(s1, s3) =  1
 strcmp(s3, s1) = -1 
strncmp(s1, s3, 6) =  0
 strncmp(s1, s3, 7) =  1
 strncmp(s3, s1, 7) = -1
 

sima_c

کاربر تازه وارد
تاریخ عضویت
21 می 2006
نوشته‌ها
30
لایک‌ها
0
از همه دوستان ممنونم

عناصر داخل آرایه در اجرای بعد برنامه از بین میره ، چکار کنم از بین نره؟
 

saalek

مدیر بازنشسته
تاریخ عضویت
24 می 2005
نوشته‌ها
654
لایک‌ها
53
محل سکونت
در پاي كوهپايه ها
ذخيره در فايل.
.
يعني كار با فايل.
.
يك تاپيك ديگه باز كنيد تا من يا دوستان با كمك خودتان كمي كار كنيم.
.
 
بالا