С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89

Работа со строками

20.11.2009, 18:30. Показов 2004. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Люди, если есть у кого время прошу просветить на тему Работу со строками ! Начили изучать, а примеров никаких нет ! И надо решить четыре задачи, но четвёртую не обязательно.....Спасибо !

Задача №1
[404]
Задача №2
[404]
Задача №3
[404]

Задача №4
[404]

Ещё раз спасибо !

Добавлено через 11 минут
Может что - то похожее есть ?
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.11.2009, 18:30
Ответы с готовыми решениями:

Работа со строками. Функции работы со строками
Дана строка символов. В заданном тексте определить позицию первой точки ‘ . ‘.

Работа со строками, заполнить компоненты строками из файла
Привет! Нужна помощь в заполнении формы В общем, есть форма отправки письма. У нее есть 2 функции, сохранить письмо и открыть письмо (на...

Работа со строками(операции над строками)
Пусть дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами...

15
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
20.11.2009, 18:41
#1
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <string.h>
 
int main(void)
{
    int i, n;
    char s[27];
 
    printf("enter n: ");
    if(!scanf("%d", &n) || n < 1 || n > 26) {
        printf("n: bad input!\n");
        return 1;
    }
 
    for(i = 0; i < n; i++)
        s[i] = 'z' - i;
    s[i] = '\0';
    printf("result: %s\n", s);
 
    return 0;
}
1
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
20.11.2009, 19:24  [ТС]
Большоё спасибо !
Можно объяснить строки 10,11 и 15,16,17 ??? И что даёт ! перед scanf ??? Спасибо !
1
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
20.11.2009, 19:43
10, 11 - ввод числа. Если n введено неверно, получишь сообщение об ошибке. 15, 16, 17 - заполнение строки буквами с конца алфавита.

Это тебе, чтобы совсем мозг вынесло:
#2
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
56
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
void *xmalloc(size_t size)
{
    void *ptr;
 
    if( (ptr = malloc(size)) == NULL) {
        perror("malloc");
        exit(-1);
    }
    return ptr;
}
 
void *xrealloc(void *oldptr, size_t size)
{
    void *ptr;
 
    if( (ptr = realloc(oldptr, size)) == NULL) {
        perror("realloc");
        exit(-1);
    }
    return ptr;
}
 
int main(void)
{
    int i, maxline = 512;
    char *s, *s1, *s2, *p, *q;
 
    s  = (char *) xmalloc(maxline);
    s1 = (char *) xmalloc(maxline);
    s2 = (char *) xmalloc(maxline);
 
    printf("enter s: ");
    fgets(s, maxline, stdin);
    printf("enter s1: ");
    fgets(s1, maxline, stdin);
    printf("enter s2: ");
    fgets(s2, maxline, stdin);
    
    for(p = s; (p = strstr(p, s1)) != NULL; q = p, p++)
        ;
    i = q - s;
    if(maxline < i + strlen(s2) + 1)
        s = (char *) xrealloc(s, maxline * 2);
    
    strcpy(s + i, s2);
    printf("result: %s", s);
 
    free(s);
    free(s1);
    free(s2);
    return 0;
}
#3
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
#include <stdio.h>
 
int main(void)
{
    char s[4096];
    int i, j, flag = 0;
 
    printf("enter string: ");
    fgets(s, sizeof(s), stdin);
 
    for(i = 0; s[i] != '\0'; i++)
        if(i == 0 && s[i] == '-') {
            flag = 1;
            break;
        } else if(i == 0 && s[i] == ' ') {
            for(j = i; s[j] == ' '; j++)
                ;
            if(s[j] == '-') {
                flag = 1;
                break;
            }
        } else {
            break;
        }
 
    flag ? printf("Предложение начинается на тире, "
                    "перед которым могли находиться пробелы.\n") :
           printf("Нифига!\n");
    return 0;
}
1
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
20.11.2009, 19:51  [ТС]
Вынесет не то слово ! )))) Осталось только разобраться !
У тебя было готово или специально всё набирал ???
1
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
20.11.2009, 19:59
Да конечно, стал бы я все набирать. У меня таких исходников до кучи валяется. Так что, могут встретиться баги, хотя в 1 и 3 не должны.
0
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
20.11.2009, 21:01  [ТС]
Да ! Вторая задача не работает ! ((
Не знаю что делать ! Прога норм компилируется и запускается, но после ввода s,s1,s2 выдаёт ошибку, что связанное с переменной q

Не подскажешь где можно скачать разные задачи по C с решениями, чтобы вникнуть лучше ??!
1
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
20.11.2009, 21:13
Цитата Сообщение от Opiym Посмотреть сообщение
Не знаю что делать ! Прога норм компилируется и запускается, но после ввода s,s1,s2 выдаёт ошибку, что связанное с переменной q
Пропатченная версия второй проги:
prog02.c
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
56
57
58
59
60
61
62
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
void *xmalloc(size_t size)
{
    void *ptr;
 
    if( (ptr = malloc(size)) == NULL) {
        perror("malloc");
        exit(-1);
    }
    return ptr;
}
 
void *xrealloc(void *oldptr, size_t size)
{
    void *ptr;
 
    if( (ptr = realloc(oldptr, size)) == NULL) {
        perror("realloc");
        exit(-1);
    }
    return ptr;
}
 
int main(void)
{
    int i, maxline = 512;
    char *s, *s1, *s2, *p, *q;
 
    s  = (char *) xmalloc(maxline);
    s1 = (char *) xmalloc(maxline);
    s2 = (char *) xmalloc(maxline);
 
    printf("enter s: ");
    fgets(s, maxline, stdin);
    printf("enter s1: ");
    fgets(s1, maxline, stdin);
    printf("enter s2: ");
    fgets(s2, maxline, stdin);
    
    for(p = s, q = NULL; (p = strstr(p, s1)) != NULL; q = p, p++)
        ;
    if(q == NULL) {
        printf("В s не найдено вхождений s1.\n");
        goto EXIT;
    }
 
    i = q - s;
    if(maxline < i + strlen(s2) + 1)
        s = (char *) xrealloc(s, maxline * 2);
    
    strcpy(s + i, s2);
    printf("result: %s", s);
 
 EXIT:
    free(s);
    free(s1);
    free(s2);
    return 0;
}

Вылетало из-за того, что не было проверки, когда в строке нет вхождений.
Цитата Сообщение от Opiym Посмотреть сообщение
Не подскажешь где можно скачать разные задачи по C с решениями, чтобы вникнуть лучше ??!
Читай Б. Кернигана, Д. Ритчи "Язык программирования Си". Там есть задачи в конце каждой темы. Или можешь на этом форуме поискать для себя задачи.
1
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
20.11.2009, 21:23  [ТС]
О спасибо ! Всё работает ! ))

Вопрос: от 5-ой до 25-ой строки ! Что это ? Для чего ? Я совсем чайник ! Я раньше в Delphi немного програмил, а сча торможу...))))


Откуда ты сам берёшь исходники ???
1
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
20.11.2009, 21:48
Цитата Сообщение от Opiym Посмотреть сообщение
Откуда ты сам берёшь исходники ???
будешь помогать на форуме другим - соберешь свою личную коллекцию исходников
0
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
20.11.2009, 21:57  [ТС]
Тоже верно ! )) Кто - нибудь объяснит что делает код от 5-ой до 25-ой строки ???
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
20.11.2009, 22:22
Это функции выделения памяти с проверкой на ошибки
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
21.11.2009, 00:45
Второе задание - впечатлило решение от Gravity, решил тоже попробовать
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 <string.h>
 
/* возвращает указатель на последнее вхождение needle в stack или NULL */
char *strrstr(char *stack, char *needle){
    size_t stack_len, needle_len;
    char *pNeedle;
    
    if ( !stack || !(*stack) || !needle || !(*needle) )
        return NULL;
    stack_len = strlen(stack);
    needle_len = strlen(needle);
    if ( stack_len < needle_len )
        return NULL;
    
    for ( pNeedle = stack + stack_len - needle_len; pNeedle >= stack; pNeedle-- )
        if ( !memcmp(pNeedle, needle, needle_len) )
            return pNeedle;
    
    return NULL;
}
 
 
int main(){
    char *s = "abcdef abcdef abcdef abcdef";
    char *s1 = "cde";
    char *s2 = "zzzzz";
    char *pS1, *result;
    size_t result_lenght;
    
    if ( (pS1 = strrstr(s, s1)) == NULL ){
        printf("\"%s\" not found in \"%s\"\n", s1, s);
        exit(1);
    }
    result_lenght = strlen(s) - strlen(s1) + strlen(s2) + 1;
    if ( (result = (char*)malloc(result_lenght)) == NULL ){
        printf("Not enough memory!\n");
        exit(1);
    }
    strncpy(result, s, pS1 - s);
    strcat(result, s2);
    if ( *(pS1 + strlen(s1)) != '\0' )
        strcat(result, pS1 + strlen(s1));
    
    printf("String:  %s\n", s);
    printf("Replace: %s\n", s1);
    printf("By:      %s\n", s2);
    printf("Result:  %s\n", result);
    
    free(result);
    result = NULL;
    
    exit(0);
}
Добавлено через 1 час 51 минуту
3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <ctype.h>
 
int main(){
    char buf[BUFSIZ], *p;
    
    while ( 1 ){
        printf("\nEnter some string or just press ENTER to exit\n> ");
        fgets(buf, BUFSIZ, stdin);
        if ( *buf == '\n' )
            break;
        
        for ( p = buf; isspace(*p); p++ )
            ;
        if ( *p == '-' )
            printf("OH YEAH! I FOUND IT! THE DASH IS FIRST CHARACTER!!!\n");
        else
            printf("No any dashes at start of string.\n");
    }
    
    return 0;
}
1
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
21.11.2009, 23:47  [ТС]
Попробую ! ))
А за четвёртое кто - нибудь возьмётся ??? аххааа...))) Хотя может сам как - нибудь ! ))
0
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
22.11.2009, 00:12
#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
#include <stdio.h>
 
int main(void)
{
    char s[4096], *p;
    int cnt, is_br;
 
    printf("Введите строку: ");
    fgets(s, sizeof(s), stdin);
 
    cnt = is_br = 0;
    for(p = s; *p != '\0'; p++)
        if(*p == ')') {
            if(cnt)
                cnt--;
            else {
                printf("Ошибочная закрывающая скобка в "
                        "позиции %d\n", p - s);
                return 1;
            }
        } else if(*p == '(') {
            is_br = 1;
            cnt++;
        }
    
    if(cnt)
        printf("-1: закрывающих скобок не хватает.\n");
    else if(!is_br)
        printf("Скобок вообще не найдено O_o\n");
    else
        printf("0: все верно.\n");
    return 0;
}
1
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
22.11.2009, 13:27  [ТС]
О ! Спс ! Буду пробовать !

Всем большое СПАСИБО ! Выручили !
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.11.2009, 13:27
Помогаю со студенческими работами здесь

Задание по темам: ООП, исключения, работа со строками (возможно применение коллекций List), работа с компоновщиком
ТЯЖЕЛО РАБОТАТЬ С КОМПОНОВЩИКОМ. БУДУ РАД ВАШИМ ОТВЕТАМ. 1. Ознакомиться с принципом работы структурного шаблона проектирования...

Работа со строками
Задача: Выяснить, верно ли, что в заданной строке есть подряд идущие три буквы &quot;л&quot;,большие или маленькие. Если это так, все...

работа со строками
Имеется строка символов. В числе прочих в этой строке допускается использование скобок трех типов – (), и {}. Скобки разных типов могут...

Работа со строками
Удалить каждый символ 'A', стоящий после ',', и подсчитать отдельно количество пар “BC” и “DE” .

Работа со строками
Дана строка состоящая из слов, разделенных пробелами. С использованием процедур и функций выполнить: 1) вслед за первым словом вставить...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru