Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема преобразование массива char в массив int, Требуется помощь в написании программы 
:(
    Опции темы
Arahael
Дата 17.10.2010, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 25.7.2010

Репутация: нет
Всего: -1



У меня целые числа. вот строка: "1 2 3 4 5 6 7 8 9 8 7 5 2 6 1"

Добавлено через 1 минуту и 42 секунды
Оооо, mes, спасибо огромное, можете теперь пожалуйста объяснить в чем была моя ошибка?
PM MAIL   Вверх
mes
Дата 17.10.2010, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



хотя вместо этого кода
Код

    substr = strtok(strline, " ");
    while (substr!=NULL) 
    {
       valstr [val_count] = substr; 
       ++val_count; 

       substr = strtok(NULL, " ");   
    }

логичнее сделать так :
Код

    for ( char * substr = strtok(strline, " ");  
          substr!=NULL;
          substr = strtok(NULL, " ")
        )
    {
       valstr [val_count] = substr; 
       ++val_count;          
    }


Добавлено через 1 минуту и 18 секунд
P.S. еще лучше valstr [val_count++] = substr;  , но Вам, судя по коду, еще рано .. 

Добавлено через 3 минуты и 11 секунд
Цитата(Arahael @  17.10.2010,  13:57 Найти цитируемый пост)
Оооо, mes, спасибо огромное, можете теперь пожалуйста объяснить в чем была моя ошибка? 

я ее не искал.. smile просто исправлял все что не нравилось ))
сравнить коды и найти причину - оставим Вам для разминки 
smile


--------------------
PM MAIL WWW   Вверх
Arahael
Дата 17.10.2010, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 25.7.2010

Репутация: нет
Всего: -1



Спасибо большое) если б у меня было 100 постов, я бы поднял вам репутацию, но, извините, не могу пока что)
PM MAIL   Вверх
mes
Дата 17.10.2010, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Arahael @  17.10.2010,  13:55 Найти цитируемый пост)
Если писать <cstring> -- fatal error: сstring: No such file or directory 

значит компилятор у Вас старенький.. 


--------------------
PM MAIL WWW   Вверх
Arahael
Дата 17.10.2010, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 25.7.2010

Репутация: нет
Всего: -1



Это я не про компилятор) в компиляторе всё ок) я про тот сайт, который вы мне кинули)
PM MAIL   Вверх
mes
Дата 17.10.2010, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Arahael @  17.10.2010,  14:06 Найти цитируемый пост)
 я про тот сайт, который вы мне кинули) 

ммм.. в примере что я Вам подправил, стоит именно <cstring> и все работает  smile 


--------------------
PM MAIL WWW   Вверх
Arahael
Дата 17.10.2010, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 25.7.2010

Репутация: нет
Всего: -1



да-да, я видел) это странно)
PM MAIL   Вверх
mes
Дата 17.10.2010, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(mes @  17.10.2010,  14:05 Найти цитируемый пост)
сstring

у вас первая буква "c" русская, а не латинская smile

Добавлено через 25 секунд
внимательнее надо быть, с раскладкой smile



--------------------
PM MAIL WWW   Вверх
Arahael
Дата 17.10.2010, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 25.7.2010

Репутация: нет
Всего: -1



ааа, я протупил, извините)
PM MAIL   Вверх
Crafty
Дата 17.10.2010, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 3.11.2008

Репутация: 12
Всего: 14



Цитата(Arahael @  17.10.2010,  16:04 Найти цитируемый пост)
Спасибо большое) если б у меня было 100 постов, я бы поднял вам репутацию, но, извините, не могу пока что)

Поставил плюс.

PM MAIL   Вверх
Dov
Дата 17.10.2010, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(Arahael @  17.10.2010,  13:02 Найти цитируемый пост)
или просто приведите пример, каким образом можно легче реализовать выполнение этой задачи. 

Например, так:
Код

int main()
{
    const int size  = 15;
    int   mas[size];
    char  str[]     = "1 2 3 4 5 6 7 8 9 8 7 5 2 6 1";
    int   i         = 0;
    int   max       = INT_MIN;

    for(int j = 0; str[j] != '\0'; j++)
    {
        if(str[j] != ' ')
        {
            mas[i] = str[j] - '0';
            if(mas[i] > max)
                max = mas[i];
            i++;
        }
    }
    
    cout << "mas: ";
    for(i = 0; i < size; i++)
        cout << mas[i] << ' ';
    cout << "\nmax: " << max << endl;

    return 0;
}





--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
mes
Дата 17.10.2010, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Dov @  17.10.2010,  18:22 Найти цитируемый пост)

Например, так:

1. только надо уточнить, что данный код не для строки чисел, а для строки цифр, хотя судя по строке приведенной тс. должно подойти.. 

2. не хорошо лепить все в одном месте, а именно заполнение массива и поиск максимального элемента..
разбиение на два несвязанных цикла не будет пессимизацией, а логика станет чище.. 

3. если соблюсти пункт 2, тогда и не придется использовать INT_MIN.. 



--------------------
PM MAIL WWW   Вверх
Dov
Дата 17.10.2010, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



mes,  ну ты и зануда...  smile 
Код
int main()
{
    const int size  = 15;
    int   mas[size];
    char  str[]     = "1 2 3 4 5 6 7 8 9 8 7 5 2 6 1";
    int   i         = 0;
    int   max;

    for(int j = 0; str[j] != '\0'; j++)
        if(str[j] != ' ')
            mas[i++] = str[j] - '0';

    max = mas[0];
    for(i = 1; i < size; i++)
        if(mas[i] > max)
            max = mas[i];
    
    cout << "mas: ";
    for(i = 0; i < size; i++)
        cout << mas[i] << ' ';
    cout << "\nmax: " << max << endl;

    return 0;
}



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
mes
Дата 17.10.2010, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Dov @  17.10.2010,  18:46 Найти цитируемый пост)
  ну ты и зануда...   

ну тогда, чтоб оправдать звание добавлю, что код привязан жестко к фиксированному кол-ву чисел.. и есть возможность записи за границы..
но это можно оставить тс. как дом задание, если ему подойдет..
smile



--------------------
PM MAIL WWW   Вверх
Dov
Дата 17.10.2010, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(mes @  17.10.2010,  19:03 Найти цитируемый пост)
код привязан жестко к фиксированному кол-ву чисел..

это условие ТС, я здесь нипричём.  smile 
Цитата(Arahael @  17.10.2010,  13:57 Найти цитируемый пост)
У меня целые числа. вот строка: "1 2 3 4 5 6 7 8 9 8 7 5 2 6 1"


Цитата(mes @  17.10.2010,  19:03 Найти цитируемый пост)
но это можно оставить тс. как дом задание, если ему подойдет..

Вот это правильно.  smile 

Цитата(Arahael @  17.10.2010,  13:57 Найти цитируемый пост)
вот строка: "1 2 3 4 5 6 7 8 9 8 7 5 2 6 1"

Вот ещё примерчик для этой строки:
Код
int main()
{
    const int size  = 15;
    int   mas[size];
    char  str[]     = "1 2 3 4 5 6 7 8 9 8 7 5 2 6 1";
    int   max;

    for(int i = 0; sscanf(str + i * 2, "%d", &mas[i]) != EOF; i++);        

    max = mas[0];
    for(int i = 1; i < size; i++)
        if(mas[i] > max)
            max = mas[i];
    
    cout << "mas: ";
    for(int i = 0; i < size; i++)
        cout << mas[i] << ' ';
    cout << "\nmax: " << max << endl;

    return 0;
}




--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0987 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.