
Untitled
By: a guest on
Jun 17th, 2012 | syntax:
C++ | size: 5.13 KB | hits: 18 | expires: Never
#include<iostream.h>
#include<string.h>
#include<time.h>
#include<stdio.h>
#include<conio.h>
const long maks_r=10000;
void odwrot(int lewy,int prawy, char *t)
{
if(lewy>prawy)
return;
else
{
char pom=t[lewy];
t[lewy]=t[prawy];
t[prawy]=pom;
odwrot(lewy+1,prawy-1,t);
}
}
void wypelnij(int lewy,int prawy,char znak,char *t)
{
if(lewy>prawy)
return;
else
{
t[lewy]=znak;
wypelnij(lewy+1,prawy,znak,t);
}
}
void sumator(char *t1,char *t2,int key)
{
char wynik[maks_r+1];
long A,i,k=0;
short a,b,suma,pamiec,flag=0;
odwrot(0,strlen(t1)-1,t1),odwrot(0,strlen(t2)-1,t2);
if(strlen(t1)>strlen(t2))
{
A=strlen(t1),wypelnij(strlen(t2),A-1,'0',t2);
}
else
{
A=strlen(t2),wypelnij(strlen(t1),A-1,'0',t1);
}
wynik[k++]=char(1);
for(i=0;i<A;i++)
{
a=int(t1[i])-48,b=int(t2[i])-48;
if(flag==1)
{
flag=0;
suma=a+b+pamiec;
}
else
suma=a+b;
if(suma>9)
{
pamiec=1;
flag=1;
suma%=10;
wynik[k++]=char(suma+48);
}
else
wynik[k++]=char(suma+48);
}
if(flag==1)
wynik[k++]='1';
odwrot(0,k-1,wynik);
if(key=='n'||key=='N')
for(i=0;wynik[i]!=char(1);i++)
cout<<wynik[i];
else
{
odwrot(0,strlen(t1)-1,t1),odwrot(0,strlen(t2)-1,t2);
FILE *plik;
plik=fopen("c:\\wynik.txt","a");
fputs("\n",plik),fputs(t1,plik),fputs("\n",plik),fputs(t2,plik),fputs("\n",plik);
for(long i=0;i<strlen(wynik);i++)
fputs("_",plik);
fputs("\n",plik),fputs(wynik,plik),fputs("\n",plik);
}
}
void main()
{
char t1[maks_r]="0",t2[maks_r]="0";
int key;
long i=0;
do
{
i=0;
clrscr();
cout<<"Program sumujacy duze liczby naturalne\n\n";
cout<<"Podaj pierwsza liczbe lub wcisnij Enter\n";
do
{
key=getch();
if(key==8)
{
cout<<"\b \b";
if(i==0)
t1[0]='\0';
else
t1[i--]='\0';
}
else if(key<'0'||key>'9')
;
else
{
cout<<char(key);
t1[i++]=key;
}
}while(key!=13);
t1[i]='\0';
i=0;
cout<<"\n\nPodaj druga liczbe lub wcisnij Enter\n";
do
{
key=getch();
if(key==8)
{
cout<<"\b \b";
if(i==0)
t2[0]='\0';
else
t2[i--]='\0';
}
else if(key<'0'||key>'9')
;
else
{
cout<<char(key);
t2[i++]=key;
}
}while(key!=13);
t2[i]='\0';
cout<<"\n\nZapisac wynik w postaci pliku txt (T/N)? ";
do
{
key=getch();
if(key!='t'&&key!='T'&&key!='n'&&key!='N')
;
}while(key!='t'&&key!='T'&&key!='n'&&key!='N');
if(key=='n'||key=='N')
{
cout<<"\n\nSuma obu liczb wynosi\n";
sumator(t1,t2,key);
}
else
{
sumator(t1,t2,key);
cout<<"\n\nWynik zapisano w C:\\wynik.txt";
}
cout<<"\n\nAby zakonczyc program, kliknij Esc\nW przeciwnym razie kliknij dowolny klawisz.";
key=getch();
if(key!=27)
{
for(long i=0;i<maks_r;i++)
{
t1[i]='\0';
t2[i]='\0';
}
}
}while(key!=27);
}