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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Andrianka
3 / 3 / 0
Регистрация: 09.02.2010
Сообщений: 34
#1

Ansi C.функции - C++

10.02.2010, 04:17. Просмотров 531. Ответов 1
Метки нет (Все метки)

Очень прошу,помогите плиииз....я не могу никак закрыть сессию...=(



1.Написать фунцкию char *dodaj(const char *n1,const char *n2),параметрами которой будут две любые длинны целые, без знака десятичной числа,и которая возвращает новую строку, содержащую десятичного представления суммы этих цифр.Можно предположить, что эти цифры не включают в себя незначительным нули.
Для примера, вызов dodaj("1234","11") должно вывести "1245".

2.Написать функцию для бинарного дерева,которое хранит целые значения,и которая потом возвращает список всех значений указанного диапазона.

3.Написать функцию которая склеивает две очереди.склеивание очередей заключается в следующем:
(a,b,c) + (d,e,f) = (a,d,b,e,c,f)
(a,b) + (c,d,e,f) = (a,c,b,d,e,f)
(a,b,c,d) + () = (a,b,c,d)

4.Напишите программу, которая будет выполнять преобразование из десятичной системы в любой системе позиционной основе не более чем на 36
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2010, 04:17     Ansi C.функции
Посмотрите здесь:

ANSI C - C++
Приветики ! Срочно нужно закрыть сессию,но никак не могу сделать несколько прог... помогите плиз, если не трудно =( 1.Написать...

ANSI и UNICODE - C++
#include <iostream> #include <windows.h> using namespace std; int main(){ TCHAR j; return 0;

ANSI to UCS2 LE - C++
Здравствуйте! Столкнулся с такой проблемой: Проект на C++ генерит файлик (через ofstream). Он получается в кодировке ANSI. Чтобы...

Wide <--> ansi - C++
а можно как то сконвертить один символ wide в ansi и обратно? кроме как через функции типа MultiByteToWideChar? wchar_t - 2х байтный тип,...

Раскодировка ANSI - C++
Подскажите как раскодировать ANSI. Может быть есть онлайн декодеры или что то в этом роде?

Перевод в ANSI - C++
Всем доброго времени суток! У меня следующая проблема: пишу парсер для языка html, на вход поступает файл с любым расширением (.html,...

Перевод из Unicode в ANSI - C++
Привет! При переводе из Unicode в ANSI юзаю вот эти две функции: CharToOemW и OemToCharA. Первая переводит из Unicide в Oem, а вторая - из...

ansi c. Методы борьбы. - C++
Есть сканер(термнал сбора данных). Прошива на ANSI. Прошиву писали сами. Все нормально, но при обращении к БД аппарат виснет.Ошибку ...

Что значит стандарт ANSI C++ - C++
Вот в книге Харви Дейтел написано:-&quot; В этой книге дается введение в программирование на той версии языка С++ , которая...

Коды символов ANSI (CP-1251) - C++
Почему коды символов кириллицы принимают значения от -1 до -64? VS2012, код: #include &lt;string&gt; #include &lt;iostream&gt; #include...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
10.02.2010, 11:12     Ansi C.функции #2
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
#ifndef max
#define max(a, b) ((a) > (b) ? (a) : (b))
#endif
 
/* возвращает указатель на строку, размещённую в динамической памяти */
char *txtSum(const char *a, const char *b){
    char sum, over, *res, *pA, *pB, *pRes;
    int len_a, len_b, len_res;
    
    len_a = strlen(a);
    len_b = strlen(b);
    len_res = max(len_a, len_b);
    if ( ( res = strdup( ( len_res == len_a ) ? a : b ) ) == NULL )
        return NULL;
    
    for ( sum = over = 0, pA = (char*)a + len_a - 1, pB = (char*)b + len_b - 1, pRes = res + len_res - 1; pA >= a && pB >= b; pA--, pB-- ){
        if ( !isdigit(*pA) || !isdigit(*pB) ){
            free(res);
            return NULL;
        }
        sum = (*pA - '0') + (*pB - '0') + over;
        over = sum / 10;
        *pRes-- = sum % 10 + '0';
    }
    
    /* если нужна ещё цифра слева */
    if ( pRes < res && over > 0 ){
        if ( ( res = (char*)realloc(res, len_res + 2) ) == NULL )
            return NULL;
        memmove(res + 1, res, len_res + 1);
        *res = over + '0';
    }
    return res;
}
 
int main(void){
    char a[BUFSIZ], b[BUFSIZ], *p;
    
    while ( 1 ){
        printf("\na = ");
        scanf("%s", a);
        printf("b = ");
        scanf("%s", b);
        if ( ( p = txtSum(a, b) ) == NULL )
            exit(1);
        printf("a + b = %s\n", p);
        free(p);
        
        printf("Continue? ");
        scanf("%s", a);
        if ( *a != 'y' && *a != 'Y' )
            break;
        
    }
    
    exit(0);
}
Добавлено через 30 минут
4.
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
/* revstr - строка наоборот */
char *revstr(char *s){
        char *h = s; /* head */
        char *t = h + strlen(s) - 1; /* tail */
        char c;
        
        while ( h < t ){
                c = *h;
                *h = *t;
                *t = c;
                h++;
                t--;
        }
        
        return(s);
}
 
/* возвращает в buf строку не длиннее len - 1 символов, представляющую число val в CC с основанием base, или NULL при неудаче */
char *itoan(char *buf, int len, unsigned int val, int base){
        static char num[] = "0123456789abcdefghijklmnopqrstuvwxyz";
        char *str = buf;
 
        if ( (base < 2) || (base > 36) )
                return(NULL);
        
        while ( val ){
                if ( --len < 1 )
                        return(NULL);
                *buf++ = num[val % base];
                val /= base;
        }
        *buf = '\0';
        return(revstr(str));
}
 
int main(void){
    char buf[BUFSIZ];
    int val, base;
    
    while ( 1 ){
        printf("Value: ");
        scanf("%d", &val);
        printf("Base: ");
        scanf("%d", &base);
        if ( val < 1 || base < 2 || base > 36 )
            break;
        printf("%s\n", itoan(buf, BUFSIZ, val, base));
    }
    exit(0);
}
Yandex
Объявления
10.02.2010, 11:12     Ansi C.функции
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru