Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.01.2010, 22:05
Soul

 
Сообщений: n/a

Односвязные списки, ошибка в проге
//#include <stdafx.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>


#define MAX 100
struct numb{
int x;
struct numb *next;
struct numb *last;
};

int del(char arr[MAX],char per[4],int i);


int del(char arr[MAX],char p1[4],int i)
{
char p [2];
p[0]=arr[i];
p[1]='\0';
strcat(p1,p);
return(0);
}


int main(void){
struct numb *head=NULL;
struct numb *tale=NULL;
struct numb *current,*prev,*cur;
char arr[MAX];
char arr_1[MAX];
char arr2[MAX];
char *mas;
char *mas2;
char arr_2[MAX];
char per[4]="";
char pust[4]="";
int n,n2,i,j,len,len2;
int str,y,z;

clrscr();

printf("vvedite pervoe chislo:\n");
scanf("%s",arr_1);
len = strlen(arr_1);

printf("vvedite vtoroe chislo:\n");
scanf("%s",arr_2);
len2 = strlen(arr_2);

if(len>len2)
{
for(i=0;i<=len;i++)
arr[i]=arr_1[i];

for(j=0;j<=len2;j++)
arr2[j]=arr_2[j];

n=len-1;
n2=len2-1;
}
else
{
for(i=0;i<=len2;i++)
arr[i]=arr_2[i];
for(j=0;j<=len;j++)
arr2[j]=arr_1[j];

n=len2-1;
n2=len-1;
}
while(n>=0){
current=(struct numb *) malloc(sizeof(struct numb));
if(head==NULL){
head=current;
current->last=NULL;
}
else{
prev->next=current;
current->last=prev;
}
current->next=NULL;

if(n<3 && n>=0){
for(i=0;i<=n;i++){
del(arr,per,i);

}
}
else{
for(i=n-3;i<=n;i++){
del(arr,per,i);
}
}
current->x=atoi(per);
prev=current;
n=n-4;
*per=*pust;

}
tale=prev;
current=head;
while(n2>=0){
if(n2<3 && n2>=0){
for(i=0;i<=n2;i++){
del(arr2,per,i);
}
}
else{
for(i=n2-3;i<=n2;i++){
del(arr2,per,i);
}
}
y=atoi(per);
if((current->x+y)>=10000){
current->x=((current->x+y)-10000);
if(n2<=4){
cur=(struct numb *) malloc(sizeof(struct numb));
cur->next=NULL;
cur->x=1;
current->next=cur;
cur->last=current;
tale=cur;
}
else{
cur=current->next;
cur->x=cur->x+1;
}
}
else{
current->x=current->x+y;
}
current=current->next;
n2=n2-4;
*per=*pust;
}
current=tale;
printf("summa chisel =");
while(current!=NULL){

printf("%d",current->x);

current=current->last;
}
getch();
return(0);
}



Видите эту хренотень? Эт моя прога.
Она суммирует 2 числа, спросите нахрена такой код для такой задачки? ХЗ! надо и все.

Суть проблемы, суммирует 2 числа любые идеально, кроме чисел которых состояит из единиц, и девяток, причем если в числе менее 5 знаков, считает идеально, если более то врет 11111+99999=21110 получается.
111111+999999=211110 и тп
999999999999+1=10

У препода бзык, хочет штоб исправил
Помогите с сессией кто в танке, где ошибка. Я понимаю что она простая, но всеже

PS код кривой, у автора руки из Ж*п*, читается плохо =)
 


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

Расширенный поиск
Опции просмотра


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в решении задачи из раздела "Олимпиадные задачи по программированию" WarMan Задачи 0 02.03.2009 00:49
Это ошибка или нет? VIP Guest) Графы 3 24.11.2007 16:09
Поиск эйлерова цикла в графе,ошибка гость Реализация, исходники, языки 0 21.11.2007 22:40