Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <stdio.h>
- #include <locale.h>
- #include <math.h>
- #include <conio.h>
- #include <windows.h>
- #include <iostream>
- #include <fstream>
- using namespace std;
- int show(char* a, int size)
- {
- unsigned char mask = 0x80;
- a = a + size - 1;
- for (int i = size; i > 0; i--, a--)
- {
- for (int j = 0; j < 8; j++)
- {
- if ((mask >> j)&*a)
- cout<<"1";
- else cout<<"0";
- }
- cout<<" ";
- }
- cout<<"\n";
- return 0;
- }
- int main()
- {
- setlocale(LC_ALL, "");
- int i;
- vosvrat:
- printf("Выбор:\n");
- printf("1.char\n");
- printf("2.short int;\n");
- printf("3.int;\n");
- printf("4.long int;\n");
- printf("5.float;\n");
- printf("6.double;\n");
- printf("7.long double;\n");
- printf("8.Решето Эратосфена\n");
- printf("Выбрали: ");
- scanf_s("%d", &i);
- printf("\n");
- switch (i)
- {
- case 1:
- {
- char chislo;
- unsigned char mask = 0x1;
- cout<<"Введите число: ";
- scanf_s("%d", &chislo);
- char*add = &chislo;
- if (chislo >= 0)
- {
- cout<<"PK=OK=DK\n";
- show((char*)add, sizeof(chislo));
- }
- else
- {
- cout<<"DK=";
- show((char*)add, sizeof(chislo));
- cout<<"\nOK=";
- chislo -= 1;
- show((char*)add, sizeof(chislo));
- cout<<"\nPK=";
- chislo = (~(chislo)) | (mask << ((sizeof(chislo) * 8) - 1));
- show((char*)add, sizeof(chislo));
- }
- } break;
- case 2:
- {
- short int chislo;
- unsigned char mask = 0x1;
- cout<<"Введите число: ";
- cin >> chislo;//%hd
- short int*add = &chislo;
- if (chislo >= 0)
- {
- cout << "PK=OK=DK\n";
- show((char*)add, sizeof(chislo));
- }
- else
- {
- cout << "DK=";
- show((char*)add, sizeof(chislo));
- cout << "\nOK=";
- chislo -= 1;
- show((char*)add, sizeof(chislo));
- cout << "\nPK=";
- chislo = (~(chislo)) | (mask << ((sizeof(chislo) * 8) - 1));
- show((char*)add, sizeof(chislo));
- }
- }break;
- case 3:
- {
- int chislo;
- unsigned char mask = 0x1;
- cout << "Введите число: ";
- cin >> chislo;
- int*add = &chislo;
- if (chislo >= 0)
- {
- cout << "PK=OK=DK\n";
- show((char*)add, sizeof(chislo));
- }
- else
- {
- cout << "DK=";
- show((char*)add, sizeof(chislo));
- cout << "\nOK=";
- chislo -= 1;
- show((char*)add, sizeof(chislo));
- cout << "\nPK=";
- chislo = (~(chislo)) | (mask << ((sizeof(chislo) * 8) - 1));
- show((char*)add, sizeof(chislo));
- }
- }break;
- case 4:
- {
- long int chislo;
- unsigned char mask = 0x1;
- cout << "Введите число: ";
- cin >> chislo;
- long int*add = &chislo;
- if (chislo >= 0)
- {
- cout << "PK=OK=DK\n";
- show((char*)add, sizeof(chislo));
- }
- else
- {
- printf("DK=");
- show((char*)add, sizeof(chislo));
- cout << "\nOK=";
- chislo -= 1;
- show((char*)add, sizeof(chislo));
- cout << "\nPK=";
- chislo = (~(chislo)) | (mask << ((sizeof(chislo) * 8) - 1));
- show((char*)add, sizeof(chislo));
- }
- }break;
- case 5:
- {
- float chislo;
- cout << "Введите число: ";
- cin >> chislo;
- float*add = &chislo;
- show((char*)add, sizeof(chislo));
- }break;
- case 6:
- {
- double chislo;
- cout << "Введите число: ";
- cin >> chislo;
- double*add = &chislo;
- show((char*)add, sizeof(chislo));
- }break;
- case 7:
- {
- long double chislo;
- printf("Введите число: ");
- scanf_s("%Lf", &chislo);
- long double*add = &chislo;
- show((char*)add, sizeof(chislo));
- }break;
- case 8:
- {
- const int N = 100000;
- unsigned char A[N / 8 + 1];
- for (int i = 0; i < N / 8 + 1; i++) A[i] = 0xff; //заполнение
- for (int i = 2; i < N / 2; i++) //начинаем искать делители/простые числа с двух, тк 0 и 1 не нужно
- if (A[i / 8] & (0x80 >> (i % 8)))
- for (int j = 2 * i; j <= N; j += i)
- {
- A[j / 8] &= ~(0x80 >> (j % 8));
- }
- A[0] &= 0x3f; //убираем 0 и 1 из простых чисел
- printf("Простые числа выведены в файл file.txt");
- ofstream fout("file.txt");
- for (int i = 0; i < 1000; i++)
- {
- for (int j = 0; j < 100; j++)
- if (A[(i * 100 + j) / 8] & (0x80 >> ((i * 100 + j) % 8))) fout << " " << i * 100 + j;
- fout << "\n";
- }
- fout.close();
- system("file.txt");
- }break;
- }
- printf("\nЗакончить программу?\n");
- printf("1 - Если да\n");
- printf("0 - Если нет\n");
- int v;
- printf("Выбор: ");
- scanf_s("%d", &v);
- switch (v)
- {
- case 0: {
- printf("\n");
- goto vosvrat; break; }
- case 1: {
- return 0; }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement