PDA

View Full Version : آرایه ای از رشته ها



shiva_h
سه شنبه 03 اردیبهشت 1387, 09:40 صبح
سلام به همگی


من یه آرایه از رشته ها دارم .
چه چور می تونم تعداد تکرار هر کدوم از این کلمه ها که تو هر خونه ای از این آرایه هیتن رو پیدا کنم .

می شه راهنمایی کنید؟ ممنون

Nima_NF
سه شنبه 03 اردیبهشت 1387, 16:39 عصر
ساده ترین راه و البته غیر بهینه به این شکل هست از طریق strcmp تک تک رشته ها در آرایه را از ابتدا تا انتها پیمایش کرده و مقایسه کنید، هرگاه رشته ای مشابه پیدا شد counter را یک واحد اضافه کنید. این عمل را برای تمامی آرایه تکرار کنید ، مثلا برای تعداد تکرار اولین رشته:



int counter0 = 0;

for( i=0 ; i < END_ARRAY ; i++ )
{
if ( strcmp(strArray[0], strArray[i] ) == 0 )
{
counter0++;

}
}

shiva_h
سه شنبه 03 اردیبهشت 1387, 18:40 عصر
چون نیاز دارم که بر اساس نزولی تعداد تکرار رشته ها . رشته ها رو در خروجی چاپ کنم این کد رو نوشتم اما روی دستور if این error رو می ده که نمی دونم چرا؟
ILLegual character '' 0x00' in function
این هم کد من. به نظر شما اشتباه من در کجاست؟
می شه راهنمایی کنید.


#include <stdio.h>
#include <string.h>
#include<fstream.h>
void main (void)
{

int i=0;
int m1 = 0;
char * Str;
char *p_arr[];
int n_arr[];

int h;
int t=0;
p_arr[0]="ali";
p_arr[1]="reza";
p_arr[2]="shiva";
p_arr[3]="ali";
p_arr[4]="reza";
p_arr[5]="ali";
for (int q=0;q<=m1;q++)
{
i=0;
int h=1;
while (i<q)
{
if( strcmp(p_arr[q],p_arr[i])==NULL)
break ;
else
i++;
}
if (i==q)
{
while (i<=m1)
{
if (strcmp(p_arr[q],p_arr[i])==NULL)
h=h+1;
i++;
}}
cout<<p_arr[q];
s_arr[t]=p_arr[q];
n_arr[t]=h;
cout<<h;
t=t+1; }
}

Nima_NF
چهارشنبه 04 اردیبهشت 1387, 00:10 صبح
درست متوجه نشدم در برنامه چه کار انجام داده اید، اما به هر حال قسمت های زیر اشتباه انجام شده است،
اندازه آرایه باید مشخص باشد:



char *p_arr[10];
int n_arr[10];


باید کد زیر را اضافه کنید نه fstream :



#include<iostream.h>


m1 که انتهای حلقه می باشد همیشه صفر هست و s_arr هم تعریف نشده است.