Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 24.04.2010, 13:08   #1
SacReD_89
 
Регистрация: 24.04.2010
Сообщений: 9
Лампочка сложение больших чисел

Помогите пожалуйста!!! Уже задолбался!!!! Написать программу сложения двух больших положительных чисел, в каждом из которых может быть от 1 до 50 цифр.
SacReD_89 вне форума
Старый 24.04.2010, 13:24   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

А где то, что вас уже "задолбало" ? Где то, что вы уже сделали ?
BOBAH13 вне форума
Старый 24.04.2010, 13:46   #3
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Заводишь 2 массива из int на 50 элементов. Потом столбиком, как в школе учили, складываешь.
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума
Старый 24.04.2010, 14:08   #4
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

Код:
//---------------------------------------------------------------------------

#pragma hdrstop
#include <iostream.h>
//---------------------------------------------------------------------------
#pragma argsused
int a[50], b[50], c[50];
void done(int, int);
void output(int);
void main()
{
	char *Temp, s[100];
	int i, j, len_1, len_2, pos;
	cin>>s;
	i=strlen(s)-1;
	Temp="";
	pos=0;
	while (i>=0) {
		*Temp=s[i];
		a[pos]=atoi(Temp);
		pos++;
		--i;
	}
	len_1=pos;
	pos=0;
	cin>>s;
	i=strlen(s)-1;
	Temp="";
	while (i>=0)  {
		*Temp=s[i];
		b[pos]=atoi(Temp);
		pos++;
		--i;
	}
	len_2=pos;
	done(len_1, len_2);
}
void done(int len_1, int len_2)
{
	int i, k;
	if (len_1>len_2)
		k=len_1;
		else
			k=len_2;
	for (i = 0; i < k; i++) {
	   c[i]=a[i]+b[i]+c[i];
	   if (c[i]>9) {
			c[i+1]=c[i+1]+(c[i] / 10);
			c[i]=c[i]%10;
	   }
	}
	output(k);
}
void output(int k)
{
	int i;
	while (c[k]==0 && k>0)
		k--;
	for (i = k; i >= 0; i--)
		cout<<c[i];
	system("pause");
}


//---------------------------------------------------------------------------
Skype: CODERua
[CODER] вне форума
Старый 24.04.2010, 14:58   #5
SacReD_89
 
Регистрация: 24.04.2010
Сообщений: 9
По умолчанию

эта прога не работает на С++ 2008, а если складывать по-элементно??? и если сложение a[i]+b[i] > 9 то единица переноситься в старший разряд. листинг конечно большой... просто сам смысл задания тупой какой-то! и не обязательно вводить все 50 цифр, можно ввести и 45 цифр в один массив, а в другой 36.
SacReD_89 вне форума
Старый 24.04.2010, 15:26   #6
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

Цитата:
Сообщение от SacReD_89 Посмотреть сообщение
эта прога не работает на С++ 2008
Какую ошибку выдает? Какой компилятор? Попробуй добавить библиотеку #include<stdlib.h>.
П.С. У меня CodeGear2009, работает...
Skype: CODERua
[CODER] вне форума
Старый 24.04.2010, 16:05   #7
SacReD_89
 
Регистрация: 24.04.2010
Сообщений: 9
По умолчанию

да тут просто даже када первое число вводишь.. он не тормазится.. т.е. можно и 500 цифр ввести !!! нажимаешь ентер, вылазиет окно -

Необработанное исключение в "0x777164f4" в "Программа для 6 варианта.exe": 0xC0000005: Access violation.

если ввести короткое число.. например 29783, то выдаст -

Необработанное исключение в "0x00321461" в "Программа для 6 варианта.exe": 0xC0000005: Нарушение прав доступа при записи "0x00325800".

У МЕНЯ такая прога -------------

Код:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <iostream>

using namespace std;
void main ()
{
int  a[50], b[50], c[51], i, q, A, B,j,w;
for (i=0; i<=50; i++)
{
	a[i]=b[i]=c[i]=0;
	c[51]=0;
}

{
   cout << "Input first number: ";
for (i=0; i<50; i++)
       {
       A=getche();
       a[i]=(int)A;
	   cout <<endl<< a[i]; // проверка, что вводиться в массив 
       }
printf("\n");
cout << "Input second number: ";
for (j=0; j<50; j++)
       {
       B=getche();
       b[j]=(int)B;
 cout <<endl<< b[j];
       }   
printf("\n");

for(q=50; q>=0; q--)
           {
			   c[q+1]+= a[q]+b[q];
                  if (c[q+1]>9)
					  c[q]+=1;
           }
for (w=0; w<=51; w++)
{
cout << c[w];
}
 
}

  getch();
}
//---------- в моей проге он начальное значение i присваевает "48" посмотри в чем тут может быть проблемка.

Последний раз редактировалось MaTBeu; 25.04.2010 в 16:39.
SacReD_89 вне форума
Старый 24.04.2010, 16:11   #8
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
int a[50], b[50], c[51], i, q, A, B,j,w;
for (i=0; i < 50; i++)
   a[i]=b[i]=c[i]=0;
c[50]=0;
В конце концов у вас размер массива не 52!

Код:
for(q=50; q>=0; q--)
{
c[q+1]+= a[q]+b[q];
if (c[q+1]>9)
c[q]+=1;
}
То же самое. c[q+1] в первый раз - 52-й элемент массива длины 50!!
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума
Старый 24.04.2010, 16:27   #9
SacReD_89
 
Регистрация: 24.04.2010
Сообщений: 9
По умолчанию

ну исправте прогу как нужно плиззз, при сложении 2-х чисел из 50 знаков, может ведь получиться число с 51 знаком! если массив a[50], то элементы такие с a[0]....до a[49]. ведь это так!? ... просто у меня проблены начинаються прямо со вводом первого елемента первого массива. если ввожу 0, то он записывает его как 48, если ввожу 1, то записывает как 49.. и т.д....ето я посмотрел в проверке ввода в массив.
SacReD_89 вне форума
Старый 24.04.2010, 16:29   #10
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

Вчера написал программу которая выводит ASCII код введенного символа
В ее основе лежат такие строки
Код:
A=getche();
a[i]=(int)A;
если не ошибаюсь a[i] будет равно ASCII коду введенного символа, к твоему заданию это никак не подходит

Какую ошибку выдает мой вариант?
Skype: CODERua
[CODER] вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Описание больших чисел через дэк whatever Помощь студентам 3 04.04.2010 19:49
С# Сложение больших чисел SL1CK Помощь студентам 4 23.11.2009 21:07
Нахождение остатка от деления очень больших чисел Pavel_Ine Общие вопросы C/C++ 6 22.11.2009 20:49
алгоритм сравнения больших чисел со сдвигом WOLFak Паскаль, Turbo Pascal, PascalABC.NET 0 29.12.2008 22:36
Библиотека больших чисел на Delphi Victor1987 Помощь студентам 10 11.04.2008 08:25