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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2011, 15:01   #1
Психвоплоти
Новичок
Джуниор
 
Регистрация: 23.02.2011
Сообщений: 1
По умолчанию странная ошибка

Написала программу длинного сложения. неправильно считает в одном месте. к примеру 35+ 467=4102

помогите найти ошибку

# include <conio.h>
# include <stdlib.h>
# include <string.h>
# include <stdio.h>

void summ(int *x,int *y,int n,int m)
{
int *z,i;

z=new int [m+1];
for (i=0;i<m+1;i++) z[i]=0;

for (i=0;i<n;i++)
{
z[i]=z[i]+(x[n-i-1]+y[m-i-1])%10;
z[i+1]=(x[n-i-1]+y[m-i-1])/10;
}


for (i=n;i<m;i++)
{
z[i+1]=(z[i]+y[i])/10;
z[i]=(z[i]+y[m-i-1])%10;
}

printf ("Summa=");
if (z[m]!=0) printf("%i",z[m]);
for(i=0;i<m;i++) printf ("%i",z[m-i-1]);

return;
}
void main()
{
//clrscr();
char str1[100],str2[100],s[2];
char l[]="0123456789";
int *x,*y,n,m,i,j,op,flag,a;

printf("vvedite nomer operacii.\n");

printf("1. +\n");
printf("2. -\n");
printf("3. *\n");
printf("4. /\n");
printf("5.Exit\n");

scanf("%i",&op);
if (op==5) exit(0);

do
{
flag=0;
printf ("vvedite pervoe chislo->");
scanf ("%s",str1);

for (i=0;str1[i]!='\0';i++)
for (j=0;j<11;j++)
if (str1[i]==l[j]){flag=1; break;}
if (flag==0) printf ("Oshibka!!");

}while (flag==0);

do
{
flag=0;
printf ("vvedite vtoroe chislo->");
scanf ("%s",str2);

for (i=0;str2[i]!='\0';i++)
for (j=0;j<11;j++)
if (str2[i]==l[j]){flag=1; break;}
if (flag==0) printf ("Oshibka!!");
} while (flag==0);

if (strlen(str1)<strlen(str2))
{
flag=1;
n=strlen(str1);m=strlen(str2);

x=new int [n];
y=new int [m];


for (i=0;i<n;i++)
{
s[0]=str1[i];
s[1]='\0';
x[i]=atoi(s);
}

for (i=0;i<m;i++)
{
s[0]=str2[i];
s[1]='\0';
y[i]=atoi(s);
}
}

else
{
flag=0;
n=strlen(str2);m=strlen(str1);
x=new int [n];
y=new int [m];


for (i=0;i<n;i++)
{
s[0]=str2[i];
s[1]='\0';
x[i]=atoi(s);
}

for (i=0;i<m;i++)
{
s[0]=str1[i];
s[1]='\0';
y[i]=atoi(s);
}
if (n==m)
for (i=0;i<n;i++)
if (x[i]<y[i]) break;
else if (x[i]>y[i])
{
flag=1;
for (i=0;i<n;i++)
{
a=x[i];
x[i]=y[i];
y[i]=a;
}
break;
}

}

if (op==1) summ(x,y,n,m);

getch();
}
Психвоплоти вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странная ошибка Dux SQL, базы данных 5 23.03.2010 12:16
Странная ошибка STIFFmaster_LP Помощь студентам 2 06.11.2009 19:11
Странная ошибка k1r1ch Общие вопросы Delphi 10 25.06.2009 13:43
Странная ошибка.. SnakeMan БД в Delphi 4 12.02.2009 12:43
Странная ошибка Washington БД в Delphi 2 16.03.2007 18:13