Guest User

Untitled

a guest
Jan 13th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include<conio.h>
  4. using namespace std;
  5.  
  6. const int velikost=10;
  7. int soucet[velikost];
  8.  
  9. void nacti(char ch_obrovske_pole[velikost], int int_obrovske_pole[velikost]){
  10. char znak;
  11. int i=(velikost-1); //pole budu načítat odzadu, ale pole se začínají indexovat od 0 => proto velikost-1
  12. bool spravne=true, zaporne=false;
  13. for (int j=0;j<velikost;j++)
  14. ch_obrovske_pole[j]='0';
  15.  
  16. do{
  17. znak=getch(); //načtu znak z klávesnice
  18. if ((i==(velikost-1))&&((znak=='-')||(znak=='+')||(znak=='0'))){
  19. if (znak!=0){
  20. if (znak=='-')
  21. zaporne=true;
  22. else
  23. zaporne=false;
  24. printf("%c", znak);
  25. };
  26. spravne=true;
  27.  
  28. } else {
  29. if ((znak!=13)&&(znak!=' ')){ //jestli nebyl zadán enter nebo mezera
  30. ch_obrovske_pole[i]=znak; //uložím znak do pole
  31. printf("%c", znak); //znak vytisknu (chci, aby se zobrazoval při psaní)
  32. i--; //pole načítám odzadu
  33. };
  34. if (((znak>'9')||(znak<'0'))&&(znak!=13)&&(znak!=' ')) //pokud není znak číslo, ani enter, ani mezera, tak pole nebylo zadáno sprváně
  35. spravne=false;
  36. };
  37.  
  38. }while ((i>=0)&&(spravne==true)&&(znak!=13)&&(znak!=' ')); //načítám znak tak dlouho, dokud nebyla zmáčknuta mezera nebo enter nebo dokud se nenaskytla chyba
  39.  
  40. if (spravne==false) //jestli bylo pole zadáno špatně, pak se celé vynuluje
  41. for (int m=0;m<velikost;m++)
  42. ch_obrovske_pole[m]='0';
  43. else{ //pokud je pole zadáno správně
  44. while(ch_obrovske_pole[0]=='0'){ //posune nuly, které jsou na začátku => dostáváme obrácené pole
  45. for (int l=0;l<(velikost-1);l++){
  46. ch_obrovske_pole[l]=ch_obrovske_pole[l+1];
  47.  
  48. };
  49. ch_obrovske_pole[velikost-1]='0';
  50. };
  51. for (int q=0;q<velikost;q++) //pretypovani celeho pole na typ int
  52. int_obrovske_pole[q] = static_cast<int>(ch_obrovske_pole[q])- 48;
  53. };
  54.  
  55.  
  56. };
  57.  
  58. void secti(int velke1[velikost], int velke2[velikost]){
  59. int s=0;
  60. int pole_zbytku[velikost+1];
  61. for (int l=0; l<=velikost; l++)
  62. pole_zbytku[l]=0;
  63.  
  64. for (int i=0;i<velikost;i++){
  65. s=velke1[i]+velke2[i]+pole_zbytku[i];
  66. if (s>9){
  67. pole_zbytku[i+1]=1;
  68. s=s-10;
  69. };
  70. soucet[i]=s+pole_zbytku[i];
  71. };
  72. };
  73.  
  74. int main(){
  75. char ch_v1[velikost], ch_v2[velikost];
  76. int int_v1[velikost], int_v2[velikost];
  77. nacti(ch_v1,int_v1);
  78. printf("\n\n");
  79. for (int i=0; i<velikost;i++)
  80. printf("%c", int_v1[i]);
  81.  
  82. printf("\n\n");
  83. nacti(ch_v2,int_v2);
  84. printf("\n\n");
  85. for (int i=0; i<velikost;i++)
  86. printf("%c", int_v2[i]);
  87. printf("\n\n");
  88. secti(int_v1,int_v2);
  89. for (int i=0; i<velikost;i++)
  90. printf("%c", soucet[i]);
  91. printf("\n\n");
  92. return 0;
  93. };
Add Comment
Please, Sign In to add comment