PDA

View Full Version : سوال: چطوری چندتا آرایه رو در یک آرایه بریزم ؟



mamali-mohammad
سه شنبه 13 دی 1390, 11:53 صبح
سلام
دوستان من چندین بار در یک حلقه آرایه میگیرم :
while(1){
gets(array);
}
حالا میخوام در هر بار که مقدار رو در array میریزه ، با مقدار array قبلی جمع بشه .
یعنی اینجوری مثلا :
sum =+ array;
اما جواب نمیده

shahmohammadi
سه شنبه 13 دی 1390, 12:30 عصر
سلام.
رشته رو نمی شه این طوری جمع کرد. باید از یکان شروع کنید تا آخرین رقم و اون ها رو با هم جمع کنید. (مثل جمع اعداد چند رقمی توی کاغذ).

mamali-mohammad
سه شنبه 13 دی 1390, 12:34 عصر
خب میشه یه توضیحی بیشتر بدید ؟
یه کمکی کنید ؟
تشکر

mamali-mohammad
سه شنبه 13 دی 1390, 21:02 عصر
دوستان ؟
راهنمایی کنید لطفا

shahmohammadi
سه شنبه 13 دی 1390, 21:36 عصر
می شه بگید در کجاش مشکل دارین.
اینها کمکی می کنه؟:
#define MAX(a,b) (a>b?a:b)
#define MAX_LENTH 20

char a[MAX_LENTH],b[MAX_LENTH],sum[MAX_LENTH];

int main(){

int c=0;
gets(a);
gets(b);
int i,j,k;
int aL=strlen(a);
int bL=strlen(b);
int cL=MAX(aL,bL)+1;
for(i=aL-1,j=bL-1,k=cL-1;(i>=0)&&(j>=0);i--,j--,k--)
{
sum[k]=a[i]-48+b[j]-48+c;
c=sum[k]/10;
sum[k]%=10;
sum[k]+=48;
}
البته آخرش باید کامل شه. چون وقتی که یکی از اعداد تعداد ارقامش بیشتره باید ادامه ی اون رو هم بنویسیم.
الان یاد گرفتین چطور باید این کارو بکنید؟
همونطوری که دستی جمع می کنید همونطور بنویسید.

mamali-mohammad
سه شنبه 13 دی 1390, 21:54 عصر
از این استفاده کردم :
strcat(sum,array);
جواب میده اما Enter رو حذف میکنه
چه کنم ؟

shahmohammadi
سه شنبه 13 دی 1390, 22:13 عصر
منظورم اینطوری نبود.
ممکنه یه کری توهمشون ظاهر بشه. مثلا در جمع 999 با 9999999 بعد از اینکه سه تا 9 با هم جمع شدند کری حاصل از جمع این دوتا تا آخر می ره.
مثلا ادامشو مثل زیر بنویس:
if(i>=0)
for(;i>=0;i--,k--)
{
sum[k]=a[i]-48+c;
c=sum[k]/10;
sum[k]%=10;
sum[k]+=48;
}
if(j>=0)
for(;j>=0;j--,k--)
{
sum[k]=b[j]+c;
c=sum[k]/10;
sum[k]%=10;
sum[k]+=48;
}
sum[0]=c+48;
sum[cL]='\0';

mamali-mohammad
سه شنبه 13 دی 1390, 22:47 عصر
سلام
منظور من چیزی دیگه هست :
رشته اول : salam
رشته دوم : khobi
جمع دو رشته :
salam
khob

مشکل اینجاست با دستور strcat پشت سرهم میاد : salamkhob

shahmohammadi
سه شنبه 13 دی 1390, 23:14 عصر
آهان.!!!
از همون اول بگید چی می خواستید بنویسید دیگه. دو ساعته من یه چیز می گفتم شما یه چیزه دیگه. یه کلمه بگید که می خواین دوتا رشته رو بهم الحاق کنید.
این هم یه فنیه:
char a[MAX_LENTH],b[MAX_LENTH],sum[MAX_LENTH];

int main(){


gets(a);
gets(b);

//int aL=strlen(a);
strcat(a,"\n");
strcat(a,b);
//a[aL]='\n';
printf("%s",a);
getch();
return 0;
}

mamali-mohammad
چهارشنبه 14 دی 1390, 14:23 عصر
ممنون
یه مشکلی هست
بعد از اینکه چاپش میکنم یه سری شکلک بهش اضافه شده ( ضمیمه )
چطوری حذف کنم ؟
ممنون

shahmohammadi
چهارشنبه 14 دی 1390, 18:46 عصر
در کامپوتر من درست کار می کنه.
اگه عین کدی رو که اجرا کردین اینجا بذارین می تونم بگم.

mamali-mohammad
چهارشنبه 14 دی 1390, 19:14 عصر
آره درست بود
من یه مشکل با حذف یه کلمه در آرایه دارم
فرض کنیم من نوشتم :
salam.
test shavad.
حالا میخوام اگه کاربر زد salam کلمه salam حذف بشه
چطوری این کارو کنم ؟
این کد خودم ولی جواب نمیده :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

int main()
{
char a[300],array[300],search[300],searching[300];
int i,word=0,sentence=0;
printf("Please Enter Your Character:\n");
while(1){
gets(a);
if((a[0]=='0') && (strlen(a)==1))
break;
strcat(array,"\n");
strcat(array,a);
}
scanf("%s",search);
bool flag = false;
int count=0,j;
for (i = 0; i < strlen(array); i++) {
if (array[i] != ' ' && array[i] != '.') {
searching[count] = array[i];
count++;
} else {
searching[count] = '\0';
if (!strcmp(searching, search)) {
for (j = i - strlen(search); j < strlen(array); j++)
array[j] = array[j + strlen(search)];
flag = true;
}

count = 0;
}
}
if (!flag)
printf("Error ! Not Found Your Word");
else
printf("\nNew Character Is : %s\n",array);
getch();
}