Форум программистов, компьютерный форум CyberForum.ru

Удалить две последние столбцы (то есть убрать нули) С++ - C++

Восстановить пароль Регистрация
 
мраз13
Сообщений: n/a
23.12.2013, 02:54     Удалить две последние столбцы (то есть убрать нули) С++ #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
// 1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <iomanip>
 
using namespace std;
 
int get_power (int a) //возврат степени двойки числа
{
    return ceil(log10(double(a))/log10(double(2)));
}
 
int del_mod2 (int a, int b) //возврат остатка от деления по модулю 2 числа а на б
{   
     
     while (get_power(a) >= get_power(b)) 
     {
           int b2 = b;
           while (get_power(b2) != get_power(a))
                 b2 *=2;
           a = a ^ b2; 
     }          
     return a;
}    
bool* inttobool(int a) //Преобразование числа из десятичной системы в двоичную
{
    bool * mass;
    mass=new bool;
    for(int l=7;l>=0;l--)
    {
        if(a%2)
            mass[l]=1;
        else mass[l]=0;
        a=a/2;
    }
    return mass;
}
 
int booltoint(bool *a) //Преобразование числа из двоичной системы в десятичную
{
    int b=0;
    for(double l=7;l>=0;l--)
        if(a[int(l)])b=b+pow(2,7-l);
    return b;
}
 
void show(int a) //вывод числа в двоичном виде
{
    for(int i=1;i<=7;i++)
        cout<<inttobool(a)[i];
    cout<<endl;
}
 
bool* sum(int a,int b)
{
    bool* ba=new bool; ba=inttobool(a);
    bool* bb=new bool; bb=inttobool(b);
    bool* bc=new bool;
    for(int i=0;i<=7;i++)
    {
        if((ba[i]==1)&&(bb[i]==1))bc[i]=0;
        if((ba[i]==0)&&(bb[i]==0))bc[i]=0;
        if((ba[i]==1)&&(bb[i]==0))bc[i]=1;
        if((ba[i]==0)&&(bb[i]==1))bc[i]=1;
    }
    return bc;
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0, "russian");
    int a=10, m=9;
int err_q[7]={0,0,0,0,0,0,0},
    err_s[7]={0,0,0,0,0,0,0},
    err_d_mass[7]={0,0,0,0,0,0,0};
    int err_d=0;
 
    cout<<"---------------------КОДИРОВАНИЕ---------------------\n";
    cout<<setw(40)<<"Информационный вектор: ";
    show(a);
    a*=8;
    cout<<setw(40)<<"Сдвинутый информационный вектор: ";
    show(a);
    a=a+del_mod2(a,m);
    cout<<setw(40)<<"Передаваемая информация: ";
    show(a);
    cout<<endl<<"--------------------ДЕКОДИРОВАНИЕ--------------------";    
    for(int e=1;e<128;e++)
    {
        int temp_a=a;
        int rem=1;
        int N=0;
 
        for (int j = 1; j < 128; j *= 2) 
            if((e & j) != 0)
                N ++;
        temp_a=booltoint(sum(temp_a,e));
        rem=del_mod2(temp_a,m);
        if(rem!=0)
            err_d_mass[N-1]++;
    err_q[N - 1] ++;
    }
                                                                                                                                                                                                                                                    //for(int i=1;i<14;i++)err_d_mass[i]++;
    cout<<endl<<"-------------ДЕКОДИРОВАНИЕ ПРОШЛО УСПЕШНО------------"<<endl;
    cout<<"------------------СТАТИСТИКА-------------------------\n";
    cout<<"|Кратность|Количество|Кол-во обнаруж.|Коэф. обнаруж.|\n";//Коэф
    cout<<"|  ошибки |  ошибок  |     ошибок    |   ошибок, %  |\n";//корректировки
    cout<<"|---------+----------+---------------+--------------|\n";
    for(int i=0;i<7;i++)
        cout<<'|'<<setw(9)<<i+1<<'|'<<setw(10)<<err_q[i]<<'|'<<setw(15)<<err_d_mass[i]<<'|'<<setw(14)<<err_d_mass[i]*100/err_q[i]<<'|'
        <<setw(12)<<err_s[i]<<'|'<<setw(13)<<err_s[i]*100/err_q[i]<<'|';
    cout<<"-----------------------------------------------------"<<endl;
        
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2013, 02:54     Удалить две последние столбцы (то есть убрать нули) С++
Посмотрите здесь:

C++ Удалить из файла последние три строки.
C++ как убрать нули с вещественого числа
Матрицы: удалить из матрицы столбцы, в которых есть равные элементы C++
Убрать нули после запятой C++
Как убрать из одномерного массива нули, и всё последующие за нулями цифры сдвинуть? C++
C++ Убрать из текста нули
получить матрицу Б в которой отсутствуют все столбцы и строки, содержащие нули C++
C++ Как убрать последние две цифры после запятой?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 18:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru