Строки (си)

Тема в разделе "C/C++/C#", создана пользователем Rinfes, 2 дек 2012.

  1. Rinfes

    Rinfes New Member

    Регистрация:
    2 дек 2012
    Сообщения:
    1
    Симпатии:
    0
    Разработать программу для решения указанной ниже задачи, состоящей из трех частей. Каждую часть оформить в виде отдельной подпрограммы.
    Ввод и вывод осуществлять только в главной программе. Глобальные переменные не использовать. Память под строки распределять с помощью команд динамического распределения памяти. Обработку текста производить с помощью функций из стандартной библиотеки для работы со строками.

    Дано: Текст, содержащий символьные строки(ввод осуществляется до тех пор, пока не будет введена пустая строка).

    Требуется: Создать новый массив подстрок, выделив из каждой строки подстроки:
    1. Заключенные в круглые скобки и содержащие символ ' * '
    2. Среди выделенных подстрок найти подстроку: самую длинную (первую)
    3. Преобразовать найденную подстроку: удалить все латинские буквы.

    Вот моя не совсем рабочая программа, выполняющая пункт 1. Надеюсь на вашу помощь
    Код (Text):
    #include <ctype.h>

    #include <ctype.h>
    #include <stdio.h>
    #include <string.h>
    #include <conio.h>
    #include <alloc.h>

    void pods(char *s[20], int n, char *ps[30], int *k)
    {int i,l;
    char *np1,*np2;
    for(i=0; i<n; i++)
    {np1=s[i];
    while (*np1)
    {while ((*np1!='(') && *np1!='\0') np1++;
    np2=np1;
    while (*np2!='\0' && *np2!=')' && *np2=='*') np2++;
    if (*np2=='\0'|| *np2!='*')
    {np1=np2;
    continue;
    }

    l=np2-np1-1;
    if (l!=0)
    {ps[*k]=(char*)malloc(l+1);
    strncpy(ps[*k], np1+1, l);
    ps[*k][l]='\0';
    (*k)++;
    }
    np1=np2;
    }
    }
    }



    void main ()
    {char *s[20],*ps[30], **u, buf[80],*h;
    int n=0, k=0;
    clrscr ();

    printf(" \n s: ");
    while (n<20 && *gets(buf))
    {s[n]=(char*)malloc(strlen(buf)+1);
    strcpy(s[n],buf);
    n++;
    }

    printf(" \n stroki:\n");
    pods(s,n,ps,&k);
    for (u=ps; u<ps+k; u++)
    puts(*u);

    }


    }
     
Загрузка...

Поделиться этой страницей