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

указатели,символьные строки и функции - C++

Восстановить пароль Регистрация
 
Malina1
0 / 0 / 0
Регистрация: 29.12.2011
Сообщений: 11
03.01.2012, 01:43     указатели,символьные строки и функции #1
Разработать функцию, которая выполняет ту обработку фрагмента текста, которая определена в Вашем индивидуальном задании. При реализации функции запрещается пользоваться функциями библиотек языка C.

Примечания:

1. Функция должна возвращать результат в любом случае. Например, необходимо предусмотреть работу функции при некорректном задании ее параметров, некорректном вводе данных и т.п. Таким образом, функция возвращает либо некоторый ожидаемый результат ( его необходимо проверять во время отладки), либо код ошибки, который позволит нам определить какие проблемы встретились во время работы функции.

2. Термины «слово», «текст», «предложение» применяются в условиях заданий в их обычном, естественно-языковом значении.

индивидуальное задание:Функция выравнивает строку по левому краю до заданной длины.



не использовать void и программу как можно попроще.спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2012, 01:43     указатели,символьные строки и функции
Посмотрите здесь:

C++ Указатели, матрицы и символьные рядки=)
Символьные строки и функции C++
Символьные указатели C++
Символьные строки и функции C++
C++ Указатели, символьные строки и функции в с++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
03.01.2012, 02:24     указатели,символьные строки и функции #2
Цитата Сообщение от Malina1 Посмотреть сообщение
не использовать void
идеологии не соответствует?
Malina1
0 / 0 / 0
Регистрация: 29.12.2011
Сообщений: 11
03.01.2012, 02:26  [ТС]     указатели,символьные строки и функции #3
преподу не нравится,сказал заменит чем-нить
ProNoooob
71 / 71 / 6
Регистрация: 14.10.2009
Сообщений: 121
03.01.2012, 05:11     указатели,символьные строки и функции #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
55
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
 
 
char *MyOwnFunc(const char *string, int len)
{
    char *new_string;
    int k, i;
 
    if(!string) //проверка не подсунули ли нам нуль заместо строки.
        return 0;
    if(!len)    //проверка деления на нуль.
        return 0;
    //Выделяем память для новой строки. 
    //Размер = размер старой + место для символов переноса + место для нуля + погрешность округления.
    new_string = (char *)malloc(sizeof(string) + (sizeof(string)/len) + 1 + 1);
    if(!new_string) //проверка на корректно выделенную память
        return 0;
 
    for(k = 0, i = 0; *string; i++)
    {
        if(k == len)
        {
            new_string[i] = '\n';
            while(*string == ' ')
                string++;
            k = 0;
            continue;
        }
        new_string[i] = *string;
        string++;
        k++;
    }
 
    new_string[i] = '\0';
 
    return new_string;
}
 
int main()
{
    char buf[100];
    char *result;
 
    gets(buf);
    result = MyOwnFunc(buf, 7);
    if(!result)
        printf("Internal Error!");
    printf("\n%s\n", result);
 
    system("pause");                           //можно удалить
 
    return 0;
}
Вообще требования к заданию нужно излагать жоще.
Либо эта ваша функция безопасна на 100%. Либо она не использует стандартную библиотеку.
Вот пример выше. Мы же не имеем право изменять строку, которую нам дали в качестве аргумента.
Ни кто не знает сколько там свободной памяти, в которой можно копаться.
Поэтому мы создаем новую строку. Для этого используем malloc.
Естественно проверяем все на ошибки.
Но! Это не правильный вариант. (с точки зрения кодестайла).
Ни одна функция стандартной библиотеки так не работает.

В принципе знаки переноса строки можно было бы навставлять заместо пробелов. Но не всегда получиться выравнять строку там, где требует условие. Тут тоже непонятки. Четкое следование условию или нет?
(так например работает strtok)
silent_1991
03.01.2012, 06:48     указатели,символьные строки и функции
  #5

Не по теме:

Цитата Сообщение от Malina1 Посмотреть сообщение
преподу не нравится,сказал заменит чем-нить

Yandex
Объявления
03.01.2012, 06:48     указатели,символьные строки и функции
Ответ Создать тему
Опции темы

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