задача по основам C строки, массивы,указатели

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

Статус темы:
Закрыта.
  1. Again

    Again Гость

    №1.Постановка задачи
    Составить функцию для обработки символьных срок и программу для проверки работоспособности функции. За образец можно брать библиотечные функции обработки срок языка С, но не использовать их в своей функции.

    При выполнении этой задачи необходимо:
    1. Строки для тестирования функции вводятся в главной программе с клавиатуры.
    2. Предусмотреть обработку ошибок в задании параметров и особенные случаи.
    3. Разработать два варианта заданной функции с использованием:
    а) индексированных массивов;
    б) указателей.
    Функция Word (s, n)
    Назначение: выделение n-го слова из строки s.
     
  2. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Сразу задам вопрос в лоб! Если у вас свои наработки (свои фрагменты кода по данной задачи, примерный алгоритм, мыли или идеи) ?
     
  3. Again

    Again Гость

    Есть свои наработки по первой задачи, но они очень печальны...
    Код (Text):
    #include<stdio.h>
    #include<conio.h>
    char word(char s[],int n);
    void main()
    {int n;
    char s[100];
    clrscr();
    gets(s);
    scanf("%s",&s);
    word(s,n);
    puts(s);
    getch();
    }
    Я не пойму как ф-цию описать...
    Словами я знаю что нужно зделать но код...
    Код (Text):
    #include<stdio.h>
    char word(char s[], int n)
    {int n;
     
  4. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Код (C++):
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>

    void word( char *s, int n, char *res )
    {
    int i, j;
    for ( i = 0, j = 1; s[i]; i++ ) {
    if ( s[i] == ' ' ) {
    if ( ++j == n ) {
    while ( s[++i] != ' ' ) *res++ = s[i];
    *res = '\0';
    return;
    }
    }
    }
    }

    int main()
    {
    char    buf[256];
    char *  s = "one two three four five six seven";
    word( s, 3, buf );
    printf( "\'%s\'\n", buf );
    return 0;
    }
     
  5. dimon131

    dimon131 Member

    Регистрация:
    8 дек 2010
    Сообщения:
    13
    Симпатии:
    0
    Дано цілі числа x1, y1,…, xn, yn. З’ясувати, чи є серед точок (x1, y1),…, (xn, yn)
    чотири вершини квадрата. Якщо є, то вивести ці вершини.


    Пожалуйста помогите решить
     
  6. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Ты откуда такой взялся!? Во-первых пиши понятным языком. Во-вторых создай отдельную тему. Здесь обсуждается другая задача.
     
  7. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    dimon131, Пожалуйста создайте новую тему и текст желательно на русском языке....

    Добавлено: lazybiz , Лэйз, видно у дураков мысли сходятся ;-)))))))))))))) :(
     
  8. Again

    Again Гость

    Спс большое, а никак нельзя чтобы в ф-ции не использовать *res?

     
  9. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Легко.
    Код (C++):
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>

    void word( char *s, int n, char *a )
    {
    int i, j;
    for ( i = 0, j = 1; s[i]; i++ ) {
    if ( s[i] == ' ' ) {
    if ( ++j == n ) {
    while ( s[++i] != ' ' ) *a++ = s[i];
    *a = '\0';
    return;
    }
    }
    }
    }

    int main()
    {
    char    buf[256];
    char *  s = "one two three four five six seven";
    word( s, 3, buf );
    printf( "\'%s\'\n", buf );
    return 0;
    }
     
  10. Again

    Again Гость

    Это конечно лихо ты сделал, но мне просто нужно объявление ф-ции не менять от начального условия...

     
  11. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Через переменную char ты слово не вернешь, только букву. Ты уверен что в условии стоит char, а не char * ???
     
  12. Again

    Again Гость

    можете пож-ста объяснить что означает char*?
    и если можно дайте Вашу аську
     
  13. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Может тогда вот так:
    Код (C++):
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>

    char    w[40];

    void word( char s[], int n )
    {
    int     i, j;
    char *  p = w;
    for ( i = 0, j = 1; s[i]; i++ ) {
    if ( s[i] == ' ' ) {
    if ( ++j == n ) {
    while ( s[++i] != ' ' ) *p++ = s[i];
    *p = '\0';
    return;
    }
    }
    }
    }

    int main()
    {
    char *  s = "one two three four five six seven";
    word( s, 3 );
    printf( "\'%s\'\n", w );
    return 0;
    }
    И волки сыты, и яйца целы.
     
  14. Again

    Again Гость

    СПС ОГРОМНОЕ!!!
     
  15. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Код (C++):
    #include <stdio.h>

    char    w[40];

    void word( char s[], int n )
    {
    int     i, j;
    char *  p = w;
    for ( i = 0, j = 1; s[i]; i++ ) {
    if ( s[i] == ' ' ) {
    if ( ++j == n ) {
    while ( s[++i] != ' ' ) *p++ = s[i];
    *p = '\0';
    return;
    }
    }
    }
    }

    int main()
    {
    char *  s = "one two three four five six seven";
    word( s, 3 );
    printf( "\'%s\'\n", w );
    return 0;
    }
     
  16. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Так что с этой темой то??? Какие задачи решили, какие нет??? ;-)
     
Загрузка...
Статус темы:
Закрыта.

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