На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> проблемы со стрками
    подскажите, почему функция не возвращает нужного значения:
    char* trans( char* schislo )
    {
    /* Maximum characters in 1st byte */
    size_t s;
    div_t div_len;
    int q;
    char temp;
    double m;

    s=strlen(schislo);

    cout<<s<<endl;
    if (s!=1)
    {
    div_len = div(s, 2);
    cout<< div_len.rem<<endl;

    if (div_len.rem==0)
    {
    m=0.5*s;
    }
    else
    {
    m=0.5*s-0.5;
    }
    for(q=0; q<= m; q++)
    {
    temp = schislo[q];
    schislo[q]=schislo[s-q];
    schislo[s-q] =temp;
    }

    }
    return schislo;
    }


    void main(void)
    {
    char buffer[82] = { 80 }; /* Maximum characters in 1st byte */
    char* z;
    cout<< "Vvedi chislo"<<endl;
    z= _cgets( buffer );
    cout<<"z1="<<z<<endl;
    z=trans(z);
    puts(z);
    }
      проблема не со строками а с алгоритмом. имхо.

      а для начала обьясни, что твой код должен делать.
        если я правильно понял - код меняем число задом наперед типа было "1234" стало - "4321

        Цитата
        #include <stdlib.h>
        #include <stdio.h>
        #include <conio.h>
        #include <iostream.h>

        char* trans( char* schislo )
        {
        /* Maximum characters in 1st byte */
        size_t s;
        div_t div_len;
        int q;
        char temp;
        double m;

        s=strlen(schislo);

        cout<<s<<endl;
        if (s!=1)
        {
        div_len = div(s, 2);
        cout<< div_len.rem<<endl;

        if (div_len.rem==0)
        {
        m=(double)0.5*s;
        }
        else
        {
        m=(double)0.5*s-0.5;
        }
        for(q=0; q< m; q++)//если оставить q<= m - то он еще раз прогонит цикл и опять поменяет местами два числа (только те которые возле центра)
        {
        temp = schislo[q];
        schislo[q]=schislo[s-q-1]; //без еденицы он менял местами число и символ '\0' - соответсвенно вся строка стиралась
        schislo[s-q-1] =temp;
        }

        }
        return schislo;
        }


        void main(void)
        {
        char buffer[82] = { 80 }; /* Maximum characters in 1st byte */
        char* z;
        cout<< "Vvedi chislo"<<endl;
        z=gets( buffer );
        cout<<"z1="<<z<<endl;
        z=trans(z);
        puts(z);
        getch();
        }
        Сообщение отредактировано: Lavrik -
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0658 ]   [ 16 queries used ]   [ Generated: 6.05.24, 00:27 GMT ]