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

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

Войти
Регистрация
Восстановить пароль
 
Malina1
0 / 0 / 0
Регистрация: 29.12.2011
Сообщений: 11
#1

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

03.01.2012, 01:43. Просмотров 598. Ответов 4
Метки нет (Все метки)

Разработать функцию, которая выполняет ту обработку фрагмента текста, которая определена в Вашем индивидуальном задании. При реализации функции запрещается пользоваться функциями библиотек языка C.

Примечания:

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

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

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



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

символьные строки C++
Символьные строки и функции C++
Программа на тему указатели, функции, строки. (язык Си) C++
Символьные строки C++
Символьные указатели C++
Символьные строки и функции C++
C++ Указатели, символьные строки и функции в с++
Символьные строки и функции C++
C++ Задача на указатели (Рассчитать в одной функции сумму и произведение значений элементов произвольной строки двухмерного массива)
C++ Указатели, символьные строки и функции
Указатели, функции и динамическое выделение памяти: вывести строки с неповторяющимися данными C++
Указатели, символьные строчки и функции. СРОЧНО C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
Заблокирован
03.01.2012, 02:24     указатели,символьные строки и функции #2
Цитата Сообщение от Malina1 Посмотреть сообщение
не использовать void
идеологии не соответствует?
Malina1
0 / 0 / 0
Регистрация: 29.12.2011
Сообщений: 11
03.01.2012, 02:26  [ТС]     указатели,символьные строки и функции #3
преподу не нравится,сказал заменит чем-нить
ProNoooob
72 / 72 / 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     указатели,символьные строки и функции
Ответ Создать тему
Опции темы

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