PDA

View Full Version : سوال: جمع دو عدد ارایه ای !!!!!



fire22
پنج شنبه 19 بهمن 1391, 20:07 عصر
سلام دوستان.
یه سوال دارم!! ،1- چطور میتونم 2 تا ارایه ی عددی را با هم جمع کنم؟؟
مثلا 2 تا ارایه ی 10 تایی تعریف کردیم.
char num1[10];
char num2[10];

حالا مثلا اعداد زیر را وارد میکنیم
12345
54321
حالا مثلا میخوام اندیسهای دوم تا چهارم هر ارایه را باهم جمع کنم که میشه جمع :
345 با 321 که میشه 666 حالا نمیدونم چطوری جمع کنم؟؟!!.


یا اگه اصلا این سوالمو جواب بدید بهتره.
2-چطوری میتونم اعداد داخل یک ارایه را کلا به یک متغیر تبدیل کنم یا به عبارتی دیگر مثلا یه ارایه داریم از نوع ;[char num1[10 حالا مثلا عدد 12345 را cin میکنیم و به ترتیب در اندیسهای ارایه جایگذاری میکنیم. حالا میخوام مثلا اندیس دومی تا چهارمی را بریزم توی متغیر x از نوع intiger که در واقع بشه x=345.

با تشکر

gholami146
پنج شنبه 19 بهمن 1391, 20:32 عصر
با سلام
شما برای دسترسی به متغییر های یک آرایه باید از حالت فوق استفاده کنید
X[I]
مه در اینجا X نام مغییر ارایه هست و I شماره اندیس ارایه به طور مثال برای جمع اعداد 1 تا 10 ارایه X باید به صورت زیر عمل کنید

For i:=1 to 10 do
Begin
متغیر:=متغیر+X[i]
End;

که در نهایت مقدار جمع اعداد شما در (متغیر) هست
موفق باشید

fire22
پنج شنبه 19 بهمن 1391, 20:54 عصر
با سلام
شما برای دسترسی به متغییر های یک آرایه باید از حالت فوق استفاده کنید
X[I]
مه در اینجا X نام مغییر ارایه هست و I شماره اندیس ارایه به طور مثال برای جمع اعداد 1 تا 10 ارایه X باید به صورت زیر عمل کنید

For i:=1 to 10 do
Begin
متغیر:=متغیر+X[i]
End;

که در نهایت مقدار جمع اعداد شما در (متغیر) هست
موفق باشید

نه داداشم ، عزیزم من این همه توضیح دادم و مثال زدم شما باز منظور منو نفهمیدید.
من نمیخوام اعداد ارایه مو جمع کنم که اینی که شما میگی میشه این: مثلا اعداد 123456789 را وارد میکنیم و جمعشون میکنیم که حاصل میشه 1+2+3+4+5+6+7+8+9=45
ولی من یه چیز دیگه میگم .....! میگم مثلا جمع اندیسهای 2 تا 4 دوتا ارایه باهم مثال هم که زدم.
یا اصلا سوال دومم را بخون اتگه بلدی جواب بده. اینو بفهمم دیگه مشکلی ندارم!!

sr2m72
پنج شنبه 19 بهمن 1391, 22:08 عصر
سلام
اميدوارم منظورتون رو درست متوجه شده باشم:

int main(int argc, char *argv[])
{
int a[10];
int b[10];
int c=0;
for(int i=0;i<10;i++)
a[i]=b[i]=i;
for (int i=2;i<=4;i++)
c += a[i]+b[i];
cout<<c;
getch();
return 0;
}


در ضمن آرايه عددي رو نميتوني از نوع char تعريف كني!
موفق باشيد!

fire22
جمعه 20 بهمن 1391, 08:17 صبح
سلام
اميدوارم منظورتون رو درست متوجه شده باشم:

int main(int argc, char *argv[])
{
int a[10];
int b[10];
int c=0;
for(int i=0;i<10;i++)
a[i]=b[i]=i;
for (int i=2;i<=4;i++)
c += a[i]+b[i];
cout<<c;
getch();
return 0;
}


در ضمن آرايه عددي رو نميتوني از نوع char تعريف كني!
موفق باشيد!

سلام داداشی.
اولا که چرا میتونم از نوع char تعریف کنم !! کی گفته نمیشه؟؟ خو اون میشه یه رشته ی عددی دیگه!! در ضمن مجبورم از توع char تعریف کنم چون به غیر از عدد کاراکتر هم باید وارد کنم.
حالا بگذریم. این کد شما درسته که به ذهن خودمم رسید اما بازم درست کار نمیکنه چون مثلا اگه برا همین کدی که نوشتی حالا بیایم و cin کنیم مثلا اعداد.

8954
5697

حالا کد شما میاد اینجوری چاپ میکنه 13151411 در صورتی که جمع این دوتا عدد میشه 14651.
دوستان لطفا اگه میتونید سوال 2 را جواب بدید لطفااااا.
با تشکر

saied_hacker
جمعه 20 بهمن 1391, 09:29 صبح
اینم کد درست ( توضیح که نمی خاد واضحه )
#include <stdio.h>
#include <stdlib.h>


main()
{
char a1[] = {8, 8, 5, 4}; // 14551
char a2[] = {5, 6, 9, 7};

char temp;
int i;
for(i = 3; i >= 0; i--)
{
temp = a1[i] + a2[i];

if(temp >= 10 && i > 0)
{
a1[i] = temp % 10;
a1[i-1] += 1;
}
else
{
a1[i] = temp;
}
printf("%d ---- \n", a1[i]);
}
for(i = 0; i < 4; i++)
printf("%d", a1[i] );

}





اینجا اگه عدد حاضل بزرگتر از 10 باشه و اخرین رقم هم نباشه میاد یکانو جدا میکنه و به خونه بعدی یه واحد اضافه می کنه.
if(temp >= 10 && i > 0)
{
a1[i] = temp % 10;
a1[i-1] += 1;
}

saied_hacker
جمعه 20 بهمن 1391, 09:38 صبح
برای سوال دوم هم به همین راحتی
int myArray[] = {1, 3, 4, 8};

int temp = 0;
int i;
for(i = 1; i <= 3; i++)
{
temp *= 10;
temp += myArray[i];

}

اول میاد مرتبه عددی رو افزایش میده و بعد با خونه ارایه جمع میکنه..

fire22
جمعه 20 بهمن 1391, 12:01 عصر
ایول اقا سعید.
خودمم به جواب سوال دومم رسیدم و مسئلمو با اون روش حل کردم.
ولی واقعا ممنون.

مهرداد صفا
یک شنبه 22 بهمن 1391, 14:30 عصر
با سلام

سلام دوستان.
یه سوال دارم!! ،1- چطور میتونم 2 تا ارایه ی عددی را با هم جمع کنم؟؟
مثلا 2 تا ارایه ی 10 تایی تعریف کردیم.
char num1[10];
char num2[10];

حالا مثلا اعداد زیر را وارد میکنیم
12345
54321
حالا مثلا میخوام اندیسهای دوم تا چهارم هر ارایه را باهم جمع کنم که میشه جمع :
345 با 321 که میشه 666 حالا نمیدونم چطوری جمع کنم؟؟!!.


به این صورت:

//IN THE NAME OF GOD
//صل الله علی محمد و آله
#include "stdafx.h"
#include <iostream>
#include <conio.h>

using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char num1[10]="12345";
char num2[10]="54321";
int sum=(atoi(&num1[2])+atoi(&num2[2]));
cout<<sum<<endl;
return 0;
}



یا اگه اصلا این سوالمو جواب بدید بهتره.
2-چطوری میتونم اعداد داخل یک ارایه را کلا به یک متغیر تبدیل کنم یا به عبارتی دیگر مثلا یه ارایه داریم از نوع ;[char num1[10 حالا مثلا عدد 12345 را cin میکنیم و به ترتیب در اندیسهای ارایه جایگذاری میکنیم. حالا میخوام مثلا اندیس دومی تا چهارمی را بریزم توی متغیر x از نوع intiger که در واقع بشه x=345.

با تشکر

تابع atoi یک اشاره گر به یک رشته عددی را می گیرد و مقدار آن را به صورت int بر می گرداند، با این حساب کافیست تا آدرس دومین خانه را به تابع بدهیم تا تابع از خانه دوم تا آخر که کاراکتر null است را تبدیل به عدد کند. به این صورت:

//IN THE NAME OF GOD
//صل الله علی محمد و آله
#include "stdafx.h"
#include <iostream>
#include <conio.h>

using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char num1[10]="12345";

int x=atoi(&num1[2]);
cout<<x;//345

getch();
return 0;
}