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

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

Войти
Регистрация
Восстановить пароль
 
LedZeppelin
7 / 7 / 0
Регистрация: 19.04.2011
Сообщений: 68
#1

создать функцию на основе кода (разбиение строки на отрезки) - C++

09.05.2011, 08:51. Просмотров 642. Ответов 4
Метки нет (Все метки)

Здравствуйте уважаемые программисты. Мне нужна Ваша помощь. Есть небольшой код программы, суть которой в следующем. На входе есть строка. Программа "разбивает" строку на отрезки по разделителю (в моем случае это запятая). Каждый отрезок помещается в отдельный индекс массива. В результате я получаю готовый массив и могу свободно использовать его.
Листинг программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <windows.h>
using namespace std;
 
int main()
{
  char mass[10][10];//массив в который будут помещаться отрезки
  char stroka[]="sasha,petya,maksim,nikolay,sveta";//исходная строка
 
  char *p;
  p = strtok(stroka, ",");
  strcpy(mass[0],p);
 
  int i=1;
  do {
    p = strtok('\0', ",");
    if(p) strcpy(mass[i],p);
    i++;
  } while(p);
  return 0;
}
Так вот. Задача стоит в следующем. Необходимо создать функцию которая заменила бы этот код. В качестве параметра функции исходная строка. Сама же функция должна вернуть мне массив с отрезками. Вроде бы все просто, но как сделать это ума не приложу.

Не по теме:

я только учусь не судите строго



Добавлено через 2 часа 39 минут
Без функции код программы придется повторять много раз, это ведь неправильно. Хочу по человечески сделать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2011, 08:51     создать функцию на основе кода (разбиение строки на отрезки)
Посмотрите здесь:

Как создать программу (экзешник) с GUI на основе кода консольного приложения? - C++
Народ как создать программу если есть код С++ ? Хочу создать программу с окнами ! тип (exe) приложение! Есть исходный код в С++ Программа...

Разбиение кода на лексемы - C++
Добрый день. Интересует такой вопрос. Какие средства могут помочь при написании программы анализа исходного кода java?Необходимо исходный...

простая сложность. разбиение кода (+) - C++
Хочу реализовать код программы по следующему принципу. Например задан main.cpp: main.cpp if сложение или вычитание? // задача...

Двухсвязный список (разбиение кода на файлы) - C++
Есть стандартный код реализации шаблонного двухсвязного списка: #include &lt;iostream&gt; using namespace std; template &lt;typename...

Создать рекурсивную функцию подсчета длины строки - C++
есть ТЗ по нахождению длины строки при помощи рекурсивной функции. вот написал код. но у меня в любом случае выдает значение 1. что...

Создать функцию обработки строки. Проверить строку на симетричность - C++
Вечер добрый. Для защиты лабораторной дали вот такое вот индивидуальное задание. Не могли бы вы подсказать как реализовать данную...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dampir_sanek
150 / 148 / 21
Регистрация: 09.02.2010
Сообщений: 407
09.05.2011, 11:33     создать функцию на основе кода (разбиение строки на отрезки) #2
LedZeppelin, держи:
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
#include <iostream>
#include <windows.h>
using namespace std;
 
const int size = 5;
const int length = 10;
 
char** str_delim(char* stroka, char** mas)
{
    char *p;
    int i = 1;
    p = strtok(stroka, ",");
    strcpy(mas[0],p);   
    do {
        p = strtok('\0', ",");
        if (p) 
            strcpy(mas[i],p);
        i++;
    } while(p);
    return mas;
}
 
int main()
{
    char** mass;
    mass = new char*[size];
    for (int i = 0; i < size; ++i) 
        mass[i] = new char[length];
    
    char stroka[] = "sasha,petya,maksim,nikolay,sveta";
    mass = str_delim(stroka, mass);
    cout << "Vash massiv:\n ";
    for (int i = 0; i < size; ++i )
        cout << mass[i] << endl;
    getchar();
    return 0;
}
Добавлено через 34 минуты
еще нужно память освободить. Так что main маленько дополнится:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{
        char** mass;
        mass = new char*[size];
        for (int i = 0; i < size; ++i) 
                mass[i] = new char[length];
        
        char stroka[] = "sasha,petya,maksim,nikolay,sveta";
        mass = str_delim(stroka, mass);
        cout << "Vash massiv:\n ";
        for (int i = 0; i < size; ++i )
                cout << mass[i] << endl;
        // освобождаем память
        for (int i = 0; i < size; ++i )
        delete[] mass[i];
    delete[] mass;
 
        getchar();
        return 0;
}
LedZeppelin
7 / 7 / 0
Регистрация: 19.04.2011
Сообщений: 68
09.05.2011, 17:27  [ТС]     создать функцию на основе кода (разбиение строки на отрезки) #3
dampir_sanek, Спасибо что не пожалели времени и показали как это сделать. Вот только в качестве аргумента выступает массив и строка. А так что бы была только строка, никак нельзя сделать ?

Добавлено через 16 минут
Хотелось бы что бы массив создавался в самой функции (если это вообще возможно), то есть так что бы в самой main не было ни чего лишнего.
dampir_sanek
150 / 148 / 21
Регистрация: 09.02.2010
Сообщений: 407
09.05.2011, 18:33     создать функцию на основе кода (разбиение строки на отрезки) #4
LedZeppelin, ок, тогда функция ничего возвращать не будет, внутри себя создаст массив, и обработает строку, затем распечатает результат.

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
#include <iostream>
#include <windows.h>
using namespace std;
 
const int size = 5;
const int length = 10;
 
void str_delim(char* stroka)
{
    char** mas = new char*[size];
    for (int i = 0; i < size; ++i) 
        mas[i] = new char[length];
 
    char *p;
    int i = 1;
    p = strtok(stroka, ",");
    strcpy(mas[0],p);       
    do {
            p = strtok('\0', ",");
            if (p) 
                    strcpy(mas[i],p);
            i++;
    } while(p);
     cout << "Vash massiv:\n ";
    for (int i = 0; i < size; ++i )
            cout << mas[i] << endl;
    // освобождаем память
    for (int i = 0; i < size; ++i )
            delete[] mas[i];
    delete[] mas;
    getchar();
}
 
 
int main()
{          
        char stroka[] = "sasha,petya,maksim,nikolay,sveta";
        str_delim(stroka);        
        return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2011, 19:07     создать функцию на основе кода (разбиение строки на отрезки)
Еще ссылки по теме:

Создать функцию LOWER, преобразующую заглавные буквы передаваемой ей строки в строчные - C++
Создать функцию LOWER, преобразующую заглавные буквы передаваемой ей строки в строчные С помощью этой функции преобразовать строку «Happy...

Создать функцию, которая меняет местами первую и последнюю строки квадратной матрицы - C++
Создать функцию, которая меняет местами первую и последнюю строки квадратной матрицы и находит произведение элементов главной диагонали.

Создать функцию SWAP, преобразующую заглавные буквы передаваемой ей строки в строчные и наоборот - C++
Создать функцию SWAP, преобразующую заглавные буквы передаваемой ей строки в строчные и наоборот. С помощью этой функции преобразовать...

Разбиение строки - C++
Доброго времени суток. Я новичок в кодинге. Передо мной такая задача: есть строка str с числами, разделенными через пробел. ...


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

Или воспользуйтесь поиском по форуму:
LedZeppelin
7 / 7 / 0
Регистрация: 19.04.2011
Сообщений: 68
09.05.2011, 19:07  [ТС]     создать функцию на основе кода (разбиение строки на отрезки) #5
dampir_sanek, Ну вот !!, теперь есть две функции для возврата и для вывода. Я получил больше чем хотел. Спасибо Вам.
Yandex
Объявления
09.05.2011, 19:07     создать функцию на основе кода (разбиение строки на отрезки)
Ответ Создать тему
Опции темы

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