برنامه جمع دوا عدد صحیح بزرگ با استفاده از آرایه ها

Ameneh_s

عضو جدید
سلام
میشه یه برنامه به زبان c که دو تا عدد صحیح بزرگ را با هم جمع کنه (با استفاده از آرایه ها) برام بفرستید;ممنون میشم.
 

msmiran

عضو جدید
با سلام
من کد سی شارپش رو دارم.
امیدوارم بدرد بخوره :
کد:
     static void Main(string[] args)
        {
            string temp;
            string num1 = Console.ReadLine();
            string num2 = Console.ReadLine();
            if (num1.Length < num2.Length)
            {
                temp = num1;
                num1 = num2;
                num2 = temp;
            }
            int[] sum = new int[num1.Length + 1];
            int m = num1.Length - 1;
            int n = num2.Length - 1;
            while (n >= 0)
            {

                sum[m + 1] += (num1[m] + num2[n] - 96);
                if (sum[m + 1] >= 10)
                {
                    sum[m + 1] -= 10;
                    sum[m] += 1;
                }
                n--;
                m--;
            }
            while (m >= 0)
            {
                sum[m + 1] += num1[m] - 48;
                if (sum[m + 1] >= 10)
                {
                    if (m != 0)
                        sum[m] -= 10;
                    if (m == 0)
                        break;
                    sum[m] += 1;
                }
                m--;
            }
            if (sum[0] != 0)
                for (int i = 0; i < num1.Length + 1; i++)
                    Console.Write("{0}", sum[i]);
            else
                for (int i = 1; i < num1.Length + 1; i++)
                    Console.Write("{0}", sum[i]);

            Console.ReadLine();
        }
 

arghavan.z

عضو جدید
کاربر ممتاز
توی c میای دوتا عدد با scanf میخونی(که ارایه هستن)
بعد توی یه حلقه تک تک خونه هارو با هم جمع میکنی.....(اگه منظورتو درست فهمیده باشم)
 

PC-ENG

عضو جدید
اینم کدی که می خواستی فقط با struct است
کد:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
struct bList{
   bList *left;
   int num;
   bList *right;
};
void header(bList **);
void enter(bList **list);
void makeList(bList **list, int number);
void add(bList **list1, bList **list2, bList **list3);
void print(bList **);
int main()
{
   bList *list1, *list2, *list3;
   //create header node for two list
   clrscr();
   header(&list1);
   header(&list2);
   printf("Enter first number(-1) to END:\n");
   enter(&list1);
   printf("Enter second number(-1) to END:\n");
   enter(&list2);
   header(&list3);
   add(&list1, &list2, &list3);
   print(&list3);
   getch();
   return 0;
}
//******************
void header(bList **list)
{
   (*list) = (bList *)malloc(sizeof(struct bList));
   (*list) -> left = (*list) -> right = *list;
   (*list) -> num = 0;
}
//*************
void enter(bList **list)
{
   int number;
   while(1)
   {
      printf("One block(3 digit):");
      scanf("%d", &number);
      if(number > 999)
      {
  printf("Block is illegal. Enter agin.");
  getch();
      }
      else if(number == -1)
  break;
      else
  makeList(list, number);
   }
}
//******************
void makeList(bList **list, int number)
{
  (*list) -> num ++;
  bList *help;
  help = (bList *)malloc(sizeof(struct bList));
  help -> num = number;
  help -> left = (*list) -> left;
  (*list) -> left -> right = help;
  (*list) -> left = help;
  help -> right = (*list);
}
//******************
void add(bList **list1, bList **list2, bList **list3)
{
   int num1, num2, temp, result, carry = 0;
   bList *h1, *h2;
   h1 = (*list1) -> left;
   h2 = (*list2) -> left;
   while(h1 != (*list1) && h2 != (*list2))
   {
       num1 = h1 -> num;
       num2 = h2 -> num;
       temp = num1 + num2 + carry;
       result = temp % 1000;
       carry = temp / 1000;
       makeList(list3, result);
       h1 = h1 -> left;
       h2 = h2 -> left;
   }
   while(h2 != (*list2))
   {  //if list2 not finished
       num2 = h2 -> num;
       temp = num2 + carry;
       result = temp % 1000;
       carry = temp / 1000;
       makeList(list3, result);
       h2 = h2 -> left;
   }
   while(h1 != (*list1))
   {  //if list1 not finished
       num1 = h1 -> num;
       temp = num1 + carry;
       result = temp % 1000;
       carry = temp / 1000;
       makeList(list3, result);
       h2 = h2 -> left;
   }
   if(carry != 0)
       makeList(list3, carry);
}
//******************
void print(bList **list)
{
   bList *h;
   printf("Sum of two numbers is :");
   h = (*list) -> left;
   while(h != *list)
   {
     if(h -> num < 10)
       printf("%d%d%d ",0,0, h -> num);
     else if(h -> num >= 10  && h -> num < 100)
   printf("%d%d ",0, h -> num);
     else
   printf("%d ", h -> num);
     h = h -> left;
   }
}
 

saeed002

عضو جدید
سلام دوستان
من یک سورس کد ضرب اعداد بزرگ بوسیله تابع بازگشتی نیاز دارم
 

Similar threads

بالا