Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Raznay
0 / 0 / 0
Регистрация: 24.10.2014
Сообщений: 13
1

Получить из строк новую, объединив N1 первых символов строки S1 и N2 последних символов строки S2

24.10.2014, 22:30. Просмотров 778. Ответов 11
Метки нет (Все метки)

Ребят, помогите решить пожалуйста. Заранее спасибо.
Даны два числа: N1 и N2, и две строки: S1 и S2. Получить из этих строк новую строку, объединив N1 первых символов строки S1 и N2 последних символов строки S2.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2014, 22:30
Ответы с готовыми решениями:

Получить из данных строк новую, объединив N первых символов строки S1 и N2 последних символов строки S2
Здравствуйте, не могли бы вы помочь мне с этим заданием? Даны два числа: N1 и N2, и две строки: S1...

Получить новую строку, содержащую первые N1 символов строки S1 и последние N2 символов строки S2
Даны целые положительные числа N1 и N2 и строки S1 и S2. Получить из этих строк новую строку,...

Получить из этих строк новую строку, объединив N1 первых символов строки S1 и N2 последних символов строки S2.
1. Даны два числа: N1 и N2, и две строки: S1 и S2. Получить из этих строк новую строку, объединив...

Получить новую строку, объединив N1 первых символов строки S1 и N2 последних символов строки S2
Даны два числа: N1 и N2, и две строки: S1 и S2. Получить из этих строк новую строку, объединив N1...

Строка: Получить из заданых строк (S1 и S2) новую, объединив n первых символов S1 и m последних символов S2.
Даны два числа: n и m, и две строки: S1 и S2. Получить из этих строк новую строку, объединив n...

11
kiff20072008
57 / 57 / 23
Регистрация: 28.09.2012
Сообщений: 358
24.10.2014, 22:37 2
Raznay, так довольно простецкая задачка
что именно у вас не получается?
покажите свой код
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4848 / 2492 / 696
Регистрация: 18.10.2014
Сообщений: 4,320
24.10.2014, 22:42 3
А что делать, если S1 короче чем N1 и/или S2 короче чем N2 сказано?
0
Raznay
0 / 0 / 0
Регистрация: 24.10.2014
Сообщений: 13
24.10.2014, 22:48  [ТС] 4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
 
 
int main(int argc, char *argv[]) {
    char s1[10]="ГЁГ*Г±ГІГЁГІГіГІ", s2[10]="Г°Г*áîòГ*";
    char s[]=" ";
    int n1, n2;
    printf ("Input n1, n2");
    s3=s1(s1, 1, n1)+(s2, 1+n2, n2);
    printf ("s3 [ ]")
    system ("PAUSE");
    return 0;
}
темы этой не было ещё, поэтому даже как вводить не знаю

Добавлено через 56 секунд
C
1
char s1[10]="rabota", s2[10]="instytut";
0
kiff20072008
57 / 57 / 23
Регистрация: 28.09.2012
Сообщений: 358
24.10.2014, 22:52 5
Raznay,
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
int main()
{
    int n1, n2,i;
    char a[20], b[20];
    char* p;
    char* p1;
    printf("Input s1\n");
    scanf("%s", a);
    printf("Input s2\n");
    scanf("%s", b);
    printf("Input n1\n");
    scanf("%i", &n1);
    if (n1 > strlen(a))
    {
        printf("error\n");
        return 0;
    }
    printf("Input n2\n");
    scanf("%i", &n2);
    if (n2 > strlen(b))
    {
        printf("error\n");
        return 0;
    }
    p = (char*) malloc((n1 + n2)*sizeof(char)+1);
    a[n1] = '\0';
    b[n2] = '\0';
    strcpy(p, a);
    p1 =p+ n1;
    strcpy(p1, b);
    p1 += n2 = '\0';
    printf("%s", p);
    return 0;
}
1
Raznay
0 / 0 / 0
Регистрация: 24.10.2014
Сообщений: 13
24.10.2014, 22:59  [ТС] 6
Спасибо вам большое!!
0
kiff20072008
57 / 57 / 23
Регистрация: 28.09.2012
Сообщений: 358
24.10.2014, 23:06 7
Raznay, там небольшая ошибка с утечкой памяти и лишняя переменная

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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
int main()
{
    int n1, n2;
    char a[20], b[20];
    char* p;
    char* p1;
    printf("Input s1\n");
    scanf("%s", a);
    printf("Input s2\n");
    scanf("%s", b);
    printf("Input n1\n");
    scanf("%i", &n1);
    if (n1 > strlen(a))
    {
        printf("error\n");
        return 0;
    }
    printf("Input n2\n");
    scanf("%i", &n2);
    if (n2 > strlen(b))
    {
        printf("error\n");
        return 0;
    }
    p = (char*) malloc((n1 + n2)*sizeof(char)+1);
    a[n1] = '\0';
    b[n2] = '\0';
    strcpy(p, a);
    p1 =p+ n1;
    strcpy(p1, b);
    p1 += n2 = '\0';
    printf("%s", p);
    free(p);
    return 0;
}
0
Raznay
0 / 0 / 0
Регистрация: 24.10.2014
Сообщений: 13
24.10.2014, 23:13  [ТС] 8
Спасибо, очень выручили!
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4848 / 2492 / 696
Регистрация: 18.10.2014
Сообщений: 4,320
25.10.2014, 06:02 9
Не совсем понимаю, зачем было привлекать динамическое выделение памяти, когда длины исходных строк заведомо ограничены в программе. Кстати, kiff20072008, а какой глубинный смысл вы вкладываете вот в эту загадочную манипуляцию в строке 35

C
1
2
3
    ...
    p1 += n2 = '\0';
    ...
В любом случае, результирующую строку можно сформировать в одно действие пользуясь возможностями 'sprintf', вместо этих трехэтажных танцев с указателями и 'strcpy'

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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
    int n1, n2;
    char a[20], b[20], c[40];
 
    printf("Input s1\n");
    scanf("%19s", a);
    printf("Input s2\n");
    scanf("%19s", b);
 
    printf("Input n1\n");
    scanf("%d", &n1);
    printf("Input n2\n");
    scanf("%d", &n2);
 
    if (n1 < 0 || n1 > strlen(a) || n2 < 0 || n2 > strlen(b)) {
        printf("error\n");
        return 0;
    }
 
    sprintf(c, "%.*s%s", n1, a, b + strlen(b) - n2);
    printf("%s\n", c);
}
Добавлено через 1 час 19 минут
Цитата Сообщение от Raznay Посмотреть сообщение
Даны два числа: N1 и N2, и две строки: S1 и S2. Получить из этих строк новую строку, объединив N1 первых символов строки S1 и N2 последних символов строки S2.
Вопрос к автору: почему в заголовке темы упоминаются какие-то "строковые константы"? Где тут строковые константы?
0
kiff20072008
57 / 57 / 23
Регистрация: 28.09.2012
Сообщений: 358
25.10.2014, 11:34 10
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Кстати, kiff20072008, а какой глубинный смысл вы вкладываете вот в эту загадочную манипуляцию в строке 35
так разве мы не должны поставить в конце строки \0 чтобы программа знала что это конец строки
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4848 / 2492 / 696
Регистрация: 18.10.2014
Сообщений: 4,320
25.10.2014, 11:46 11
Цитата Сообщение от kiff20072008 Посмотреть сообщение
так разве мы не должны поставить в конце строки \0 чтобы программа знала что это конец строки
Во-первых, ваш последний 'strcpy' уже все поставил.

Во-вторых, строка 35 никакой '\0' ни в какую строку не ставит. Посмотрите на нее внимательнее. Я думаю, что компилятор вам даже приедупреждение на эту строку выдавал...
0
kiff20072008
57 / 57 / 23
Регистрация: 28.09.2012
Сообщений: 358
25.10.2014, 11:54 12
TheCalligrapher, значит это была неудачная попытка сделать хорошо
0
25.10.2014, 11:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2014, 11:54

Создать новую строку из N первых символов считанного из файла строки и E последних символов другой строки
Создать новую строку из N первых символов считанных из файла строк и E последних символов другой...

Получить новую строку S3, содержащую N1 первых символов строки S1 и N2 первых символов строки S2
Задание 2 Даны непустые строки S1 и S2 и целые числа N1&gt;0 и N2&gt;0. Получить из этих строк новую...

Даны целые положительные числа N1 и N2 и строки S1 и S2. Получить из строк новую строку, содерж. первые N1 символов строки S1 и последние N2 символов
Даны целые положительные числа N1 и N2 и строки S1 и S2. Получить из этих строк новую строку,...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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