Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 17th, 2012  |  syntax: C++  |  size: 5.13 KB  |  hits: 18  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include<iostream.h>
  2.  #include<string.h>
  3.  #include<time.h>
  4.  #include<stdio.h>
  5.  #include<conio.h>
  6.  const long maks_r=10000;
  7.  void odwrot(int lewy,int prawy, char *t)
  8.  {
  9.      if(lewy>prawy)
  10.          return;
  11.      else
  12.      {
  13.          char pom=t[lewy];
  14.          t[lewy]=t[prawy];
  15.          t[prawy]=pom;
  16.          odwrot(lewy+1,prawy-1,t);
  17.      }
  18.  }
  19.  void wypelnij(int lewy,int prawy,char znak,char *t)
  20.  {
  21.      if(lewy>prawy)
  22.          return;
  23.      else
  24.      {
  25.          t[lewy]=znak;
  26.          wypelnij(lewy+1,prawy,znak,t);
  27.      }
  28.  }
  29.  void sumator(char *t1,char *t2,int key)
  30.  {
  31.      char wynik[maks_r+1];
  32.          long A,i,k=0;
  33.          short a,b,suma,pamiec,flag=0;
  34.      odwrot(0,strlen(t1)-1,t1),odwrot(0,strlen(t2)-1,t2);
  35.      if(strlen(t1)>strlen(t2))
  36.      {
  37.          A=strlen(t1),wypelnij(strlen(t2),A-1,'0',t2);
  38.      }
  39.      else
  40.      {
  41.          A=strlen(t2),wypelnij(strlen(t1),A-1,'0',t1);
  42.      }
  43.          wynik[k++]=char(1);
  44.          for(i=0;i<A;i++)
  45.          {
  46.                  a=int(t1[i])-48,b=int(t2[i])-48;
  47.                  if(flag==1)
  48.                  {
  49.                          flag=0;
  50.                          suma=a+b+pamiec;
  51.                  }
  52.                  else
  53.                          suma=a+b;
  54.                  if(suma>9)
  55.                  {
  56.                          pamiec=1;
  57.                          flag=1;
  58.                          suma%=10;
  59.                          wynik[k++]=char(suma+48);
  60.                  }
  61.                  else
  62.                          wynik[k++]=char(suma+48);
  63.          }
  64.          if(flag==1)
  65.                  wynik[k++]='1';
  66.          odwrot(0,k-1,wynik);
  67.          if(key=='n'||key=='N')
  68.                  for(i=0;wynik[i]!=char(1);i++)
  69.                          cout<<wynik[i];
  70.          else
  71.          {
  72.                  odwrot(0,strlen(t1)-1,t1),odwrot(0,strlen(t2)-1,t2);
  73.                  FILE *plik;
  74.                  plik=fopen("c:\\wynik.txt","a");
  75.                  fputs("\n",plik),fputs(t1,plik),fputs("\n",plik),fputs(t2,plik),fputs("\n",plik);
  76.                  for(long i=0;i<strlen(wynik);i++)
  77.                          fputs("_",plik);
  78.                  fputs("\n",plik),fputs(wynik,plik),fputs("\n",plik);
  79.          }
  80.  }
  81.  void main()
  82.  {
  83.          char t1[maks_r]="0",t2[maks_r]="0";
  84.          int key;
  85.          long i=0;
  86.          do
  87.          {
  88.                  i=0;
  89.              clrscr();
  90.                  cout<<"Program sumujacy duze liczby naturalne\n\n";
  91.                  cout<<"Podaj pierwsza liczbe lub wcisnij Enter\n";
  92.                  do
  93.                  {
  94.                          key=getch();
  95.                          if(key==8)
  96.                          {
  97.                                  cout<<"\b \b";
  98.                                  if(i==0)
  99.                                          t1[0]='\0';
  100.                                  else
  101.                                          t1[i--]='\0';
  102.                          }
  103.                          else if(key<'0'||key>'9')
  104.                                  ;
  105.                          else
  106.                          {
  107.                                  cout<<char(key);
  108.                                  t1[i++]=key;
  109.                          }
  110.            }while(key!=13);
  111.            t1[i]='\0';
  112.            i=0;
  113.            cout<<"\n\nPodaj druga liczbe lub wcisnij Enter\n";
  114.            do
  115.            {
  116.                          key=getch();
  117.                          if(key==8)
  118.                          {
  119.                                  cout<<"\b \b";
  120.                                  if(i==0)
  121.                                          t2[0]='\0';
  122.                                  else
  123.                                          t2[i--]='\0';
  124.                          }
  125.                          else if(key<'0'||key>'9')
  126.                                  ;
  127.                          else
  128.                          {
  129.                                  cout<<char(key);
  130.                                  t2[i++]=key;
  131.                          }
  132.                  }while(key!=13);
  133.                  t2[i]='\0';
  134.                  cout<<"\n\nZapisac wynik w postaci pliku txt (T/N)? ";
  135.                  do
  136.                  {
  137.                          key=getch();
  138.                          if(key!='t'&&key!='T'&&key!='n'&&key!='N')
  139.                                  ;
  140.                  }while(key!='t'&&key!='T'&&key!='n'&&key!='N');
  141.                  if(key=='n'||key=='N')
  142.                  {
  143.                          cout<<"\n\nSuma obu liczb wynosi\n";
  144.                      sumator(t1,t2,key);
  145.                  }
  146.                  else
  147.                  {
  148.                          sumator(t1,t2,key);
  149.                          cout<<"\n\nWynik zapisano w C:\\wynik.txt";
  150.                  }
  151.                  cout<<"\n\nAby zakonczyc program, kliknij Esc\nW przeciwnym razie kliknij dowolny klawisz.";
  152.                  key=getch();
  153.                  if(key!=27)
  154.                  {
  155.                          for(long i=0;i<maks_r;i++)
  156.                          {
  157.                                  t1[i]='\0';
  158.                                  t2[i]='\0';
  159.                          }
  160.                  }
  161.          }while(key!=27);
  162.  }