|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
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(); } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Странная ошибка | 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 |