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

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

Восстановить пароль Регистрация
 
Andrianka
 Аватар для Andrianka
3 / 3 / 0
Регистрация: 09.02.2010
Сообщений: 34
10.02.2010, 04:17     Ansi C.функции #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.функции
Посмотрите здесь:

C++ ANSI C
стандарт ANSI C++
C++ ANSI to UCS2 LE
C++ Обработка .txt кодировка ANSI и UTF-8 (буква "я" в ANSI воспринимается как EOF)
C++ ANSI и UNICODE
ANSI to Unicode C++
ANSI to Unicode C++
C++ Wide <--> ansi

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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.функции
Ответ Создать тему
Опции темы

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