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

Альтернативный способ решения - C++

Восстановить пароль Регистрация
 
Vlad_fractal
 Аватар для Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
16.10.2013, 13:30     Альтернативный способ решения #1
Приветствую всех программистов, зашедших в эту тему.
В общем, начну с условия задачи:
Кликните здесь для просмотра всего текста
"Написать программу объединения трех строк “The laboratory”, “work” и “№6” в четвертую строку с текстом: «The laboratory work №6» без использования функции sprintf()"

Задачу эту я решил, использовав strcat. Всё работает, НО дотошный препод требует, чтобы я её решил альтернативным способом. "Используй,-говорит,-циклы".
Я примерно представляю, как использовать for, для первой строки(the laboratory), но дальше тупик.
Очень надеюсь на вашу помощь, заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,334
Завершенные тесты: 1
16.10.2013, 13:34     Альтернативный способ решения #2
Цитата Сообщение от Vlad_fractal Посмотреть сообщение
чтобы я её решил альтернативным способом
Дайте поглядеть на ваш, иначе как узнать альтернативный чему?
Vlad_fractal
 Аватар для Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
16.10.2013, 13:39  [ТС]     Альтернативный способ решения #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream.h>
#include <string.h>
main()
{ char x[]="The laboratory",
y[]="work",
z[]="#6",
f[];
strcat(f, x);
strcat(f, y);
strcat(f, z);
cout<<f;
}
vozup
5 / 5 / 0
Регистрация: 25.12.2011
Сообщений: 99
16.10.2013, 15:43     Альтернативный способ решения #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
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    char x[]="The laboratory",
    y[]="work",
    z[]="#6";
    
    int len = strlen(x) + strlen(y) + strlen(z);
    char *new_str = new char[len+1];
 
    int j = 0;
 
    for(int i=0;i<strlen(x);i++)
    {
        new_str[j] = x[i];
        ++j;
    }
 
    for(int i=0;i<strlen(y);i++)
    {
        new_str[j] = y[i];
        ++j;
    }
 
    for(int i=0;i<strlen(z);i++)
    {
        new_str[j] = z[i];
        ++j;
    }
 
    cout<<new_str;
    delete [] new_str;
    
 
    getch();
    return 0;
}
Добавлено через 31 минуту
Вот правильно
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
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    char x[]="The laboratory",
    y[]=" work",
    z[]=" #6";
    
    int len = (strlen(x) + strlen(y) + strlen(z))+1;
    char *new_str;
    new_str = new char[len];
 
    int j = 0;
 
    for(int i=0;i<strlen(x);i++)
    {
        new_str[j] = x[i];
        ++j;
    }
 
    for(int i=0;i<strlen(y);i++)
    {
        new_str[j] = y[i];
        ++j;
    }
 
    for(int i=0;i<strlen(z);i++)
    {
        new_str[j] = z[i];
        ++j;
    }
 
    new_str[j] = '\0';
 
    cout<<new_str;
    delete [] new_str;
    
 
    getch();
    return 0;
}
Vlad_fractal
 Аватар для Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
17.10.2013, 17:09  [ТС]     Альтернативный способ решения #5
Понятие не имею, о каком мусоре вы говорите. Я гуманитарий, в С++ ничего толкового не смыслю.
А за код спасибо.
Байт
 Аватар для Байт
13988 / 8819 / 1230
Регистрация: 24.12.2010
Сообщений: 15,975
17.10.2013, 17:21     Альтернативный способ решения #6
C++
1
2
3
4
5
6
char *x[3] = { "The laboratory", " work", " #6"; }
for (j=0, len=0; j<3; j++) len += strlen(x[j]);
char *new_str = new char[len];
for(k=j=0; j<3; j++)
  for(i=0; (c=x[j][i])!='\0'; i++)  new_str[k++] = c;
new_str[k] = '\0';
Декларацию переменных опустил - это очевидно.
Преимущество этого кода - он не заточен на число 3.
Vlad_fractal
 Аватар для Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
17.10.2013, 18:04  [ТС]     Альтернативный способ решения #7
Самое интересное- адаптировать ваши коды, в обычный вид, как в методичке, иначе он даже не запускается, на учебном ПК.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,334
Завершенные тесты: 1
17.10.2013, 18:22     Альтернативный способ решения #8
Цитата Сообщение от Байт Посмотреть сообщение
не заточен на число 3
C++
1
2
const int n = 3;
char *x[n] =...
Цитата Сообщение от Vlad_fractal Посмотреть сообщение
иначе он даже не запускается, на учебном ПК.
А вот с этого места поподробнее. Почему это он не запустится?
Vlad_fractal
 Аватар для Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
17.10.2013, 18:36  [ТС]     Альтернативный способ решения #9
Цитата Сообщение от SatanaXIII Посмотреть сообщение

А вот с этого места поподробнее. Почему это он не запустится?
Понятия не имею, почему. У нас есть папка BIN, в диске C:
и там сам лаунчер C++, со всей своей чешуёй. И, если просто скопировать вышеуказанные коды, он выдаёт всякого рода ошибки: неверный синтаксис, что-то там про отсутствие директории и прочие.
Это во-первых, во-вторых, приходится упрощать для приемлемого, "ученического" вида, как в методичке, иначе препод просто начнёт издеваться и засыпет кучей вопросов.
Байт
 Аватар для Байт
13988 / 8819 / 1230
Регистрация: 24.12.2010
Сообщений: 15,975
17.10.2013, 19:43     Альтернативный способ решения #10
Цитата Сообщение от Vlad_fractal Посмотреть сообщение
приходится упрощать для приемлемого, "ученического" вида, как в методичке
Это не ко мне. Методичку я вашу не видал, да и особого желания нет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2013, 11:48     Альтернативный способ решения
Еще ссылки по теме:

C++ Рекурсивный способ и не рекурсивный способ
C++ Альтернативный алгоритм генерации псевдослучайных чисел
Дальнейший способ развития C++

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

Или воспользуйтесь поиском по форуму:
Vlad_fractal
 Аватар для Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
18.10.2013, 11:48  [ТС]     Альтернативный способ решения #11
Байт, да я и сам справляюсь, за код спасибо, эту работу я уже сдал.
Yandex
Объявления
18.10.2013, 11:48     Альтернативный способ решения
Ответ Создать тему
Опции темы

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