Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <iostream>
- #include<conio.h>
- using namespace std;
- const int velikost=10;
- int soucet[velikost];
- void nacti(char ch_obrovske_pole[velikost], int int_obrovske_pole[velikost]){
- char znak;
- int i=(velikost-1); //pole budu načítat odzadu, ale pole se začínají indexovat od 0 => proto velikost-1
- bool spravne=true, zaporne=false;
- for (int j=0;j<velikost;j++)
- ch_obrovske_pole[j]='0';
- do{
- znak=getch(); //načtu znak z klávesnice
- if ((i==(velikost-1))&&((znak=='-')||(znak=='+')||(znak=='0'))){
- if (znak!=0){
- if (znak=='-')
- zaporne=true;
- else
- zaporne=false;
- printf("%c", znak);
- };
- spravne=true;
- } else {
- if ((znak!=13)&&(znak!=' ')){ //jestli nebyl zadán enter nebo mezera
- ch_obrovske_pole[i]=znak; //uložím znak do pole
- printf("%c", znak); //znak vytisknu (chci, aby se zobrazoval při psaní)
- i--; //pole načítám odzadu
- };
- if (((znak>'9')||(znak<'0'))&&(znak!=13)&&(znak!=' ')) //pokud není znak číslo, ani enter, ani mezera, tak pole nebylo zadáno sprváně
- spravne=false;
- };
- }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
- if (spravne==false) //jestli bylo pole zadáno špatně, pak se celé vynuluje
- for (int m=0;m<velikost;m++)
- ch_obrovske_pole[m]='0';
- else{ //pokud je pole zadáno správně
- while(ch_obrovske_pole[0]=='0'){ //posune nuly, které jsou na začátku => dostáváme obrácené pole
- for (int l=0;l<(velikost-1);l++){
- ch_obrovske_pole[l]=ch_obrovske_pole[l+1];
- };
- ch_obrovske_pole[velikost-1]='0';
- };
- for (int q=0;q<velikost;q++) //pretypovani celeho pole na typ int
- int_obrovske_pole[q] = static_cast<int>(ch_obrovske_pole[q])- 48;
- };
- };
- void secti(int velke1[velikost], int velke2[velikost]){
- int s=0;
- int pole_zbytku[velikost+1];
- for (int l=0; l<=velikost; l++)
- pole_zbytku[l]=0;
- for (int i=0;i<velikost;i++){
- s=velke1[i]+velke2[i]+pole_zbytku[i];
- if (s>9){
- pole_zbytku[i+1]=1;
- s=s-10;
- };
- soucet[i]=s+pole_zbytku[i];
- };
- };
- int main(){
- char ch_v1[velikost], ch_v2[velikost];
- int int_v1[velikost], int_v2[velikost];
- nacti(ch_v1,int_v1);
- printf("\n\n");
- for (int i=0; i<velikost;i++)
- printf("%c", int_v1[i]);
- printf("\n\n");
- nacti(ch_v2,int_v2);
- printf("\n\n");
- for (int i=0; i<velikost;i++)
- printf("%c", int_v2[i]);
- printf("\n\n");
- secti(int_v1,int_v2);
- for (int i=0; i<velikost;i++)
- printf("%c", soucet[i]);
- printf("\n\n");
- return 0;
- };
Add Comment
Please, Sign In to add comment