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

Перевод в 9-чную систему счисления - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Квадратная Матрица http://www.cyberforum.ru/cpp-beginners/thread421418.html
Задание написать программу на языке С++, с пояснениями к программному коду Для заданного целого N (0 <= N <= 40) программа должна создавать квадратную матрицу размера N на N такую, что каждый недиагональный элемент матрицы представляет собой сумму индексов элемента (нумерация индексов начинается с единицы), а каждый диагональный элемент - сумму элементов, находящихся с ним в одной строке и одном...
C++ Упорядочить слова в алфавитном порядке на С ребят помогите с задачкой, а то препод озадачил. самому не получается сделать. требуется отсортировать слова в строке в алфавитном порядке. строка заносится в символьный массив. функцию strlen использовать нельзя. массив безразмерный. сортировку требуется занести в отдельную функцию. http://www.cyberforum.ru/cpp-beginners/thread421383.html
C++ Непонятная работа вывода
Почему при выводе переменной а выводится 1, хотя перед тем как вывести ее выполняется lol(а)? Причем, при следующем выводе а выводится правильное значение(2). int lol(int &a) { a++; return 0; } int main()
C++ как дописать в файл
Столкнулся со следующей задачей, не знаю как сделать. В процессе работы кода нужно периодически сохранять массив данных в текстовый файл. Вначале сделал просто - дописывается столбец в конец файл. Но это неудобно. Хочу сделать так, чтобы каждый раз в файл добавлялась колонка из данных. Т.е. например был файл 1 -1 2 -2 3 -3 4 -4 А на следующем шаге дописывается колонка: 1 ...
C++ Дан числовой массив,Дано предложение. http://www.cyberforum.ru/cpp-beginners/thread421340.html
Часть 1. Дан числовой массив. Реализовать алгоритм сортировки вставками. Часть 2. Дано предложение(ввод с клавиатуры). Удалить из неё все буквы «e» и «m»
C++ выводит не все пути #include <stdio.h> #include <conio.h> #include <stdlib.h> int a; int n; int sp,ep; int *was,*pom,*path,cpath; FILE *f1; подробнее

Показать сообщение отдельно
alkagolik
Заблокирован
13.01.2012, 06:00     Перевод в 9-чную систему счисления
Цитата Сообщение от greeezz Посмотреть сообщение
Спасибо. Вечерком подумаю над задачкой.
Цитата Сообщение от greeezz Посмотреть сообщение
ну прям так и хочется добавить ..... и начинаешь строить атомную станцию.
ну по объему и сложности бумажной работы можно так выразиться. Тут мелочь - 4 одноразрядных переменных, а если представить что их даже 8 и более, то учитывая регулярные ошибки в рутинной работе можно неделю убить только на минимизацию функции, постоянно проверяя и выявляя ошибки не столько в расчетах (их просто нету) а "машинальные", но когда функция есть, то дело за малым как говорится. Правда саму минимизацию булевых функций мне программно делать не доводилось. Может и доведется.
Вот сложение без перевода на матрице. Т.к. в сс нету знака, то соотетственнно нету и вычитания, возник вопрос: "а необходима ли тут инверсия?" Будет время может еще что-то подумаю над умножением
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <limits.h>
#define n   9
 
/*** sum table in ASCI ***/
uint16_t t[ n ][ n ] = {
    { 0x4135, 0x4136, 0x3042, 0x3041, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034 },
    { 0x4136, 0x3042, 0x3041, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035 },
    { 0x3042, 0x3041, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036 },
    { 0x3041, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036, 0x3142 },
    { 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036, 0x3142, 0x3141 },
    { 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036, 0x3142, 0x3141, 0x3130 },
    { 0x3032, 0x3033, 0x3034, 0x3035, 0x3036, 0x3142, 0x3141, 0x3130, 0x3131 },
    { 0x3033, 0x3034, 0x3035, 0x3036, 0x3142, 0x3141, 0x3130, 0x3131, 0x3132 },
    { 0x3034, 0x3035, 0x3036, 0x3142, 0x3141, 0x3130, 0x3131, 0x3132, 0x3133 }
};
 
uint16_t sum_atom ( uint8_t x, uint8_t y ) {
    uint32_t i = ( x < 0x41 ) ? x - 0x30 + 2 : ( x == 'B' ? 0x0 : 0x1 );
    uint32_t j = ( y < 0x41 ) ? y - 0x30 + 2 : ( y == 'B' ? 0x0 : 0x1 );
    return t[ i ][ j ];
}
 
uint8_t *sum ( uint8_t* x, uint8_t* y ) {
    uint8_t tmp1 = strlen ( (char*) x );
    uint8_t tmp2 = strlen ( (char*) y );
    uint8_t *up = ( tmp1 == tmp2 ) ? x : ( tmp1 > tmp2 ? x : y);
    uint8_t *dwn = ( tmp1 == tmp2 ) ? y : ( tmp1 > tmp2 ? y : x );
    uint8_t len_up = strlen ( (char*) up );
    uint8_t len_dwn = strlen ( (char*) dwn );
    uint8_t len_res = len_up + 2;
    uint8_t *res, i = len_res - 1, t = '0';
    uint16_t next;
 
    if ( ( res = (uint8_t*) malloc(len_res * sizeof( uint8_t ) ) ) == NULL )
        exit ( -1 );
    else {
        --len_res;
        res[ i ] = '\0';
        while ( i-- )
            res[ i ] = '0';
 
        while ( len_res-- ) {
            next = sum_atom( ( len_up > 0 ) ? up[ --len_up ] : (uint8_t) '0', ( len_dwn > 0 ) ? dwn[ --len_dwn ] : (uint8_t)'0' );
            res[ len_res ] = sum_atom ( t, ( uint8_t ) ( next & 0x00ff ) );
            t = ( next >> CHAR_BIT );
        }
        return res;
    }
}
 
int main ( void )
{
    char *p, *t;
 
    p = (char*)sum( (uint8_t*) "24", (uint8_t*)"5A" );
    t = p;
    while ( ( *p   == '0') && *p )
        ++p;
    printf("%s\n", p );
    free( t );
 
    p = (char*)sum( (uint8_t*) "B5", (uint8_t*)"61" );
    t = p;
    while ( ( *p   == '0') && *p )
        ++p;
    printf("%s\n", p );
    free( t );
 
    p = (char*)sum( (uint8_t*) "312", (uint8_t*)"41B" );
    t = p;
    while ( ( *p   == '0') && *p )
        ++p;
    printf("%s", p );
    free( t );
 
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru