Условие Для Нахождения Для Нахождение Чисел Из Командной Строки

Тема в разделе "Общие вопросы по С и С++", создана пользователем Vunderkind, 11 фев 2012.

  1. Vunderkind

    Vunderkind Active Member

    Регистрация:
    26 окт 2010
    Сообщения:
    27
    Симпатии:
    0
    Нужно написать условие для нахождение чисел разных систем счисления из коммандной строки, Прежде чем написать условие для нахождение 10-х, 16-х, 2-х чисел, решил попробовать найти обычные числа после слово "add" и складывать эти числа , но не получилось, тут isdigit() не смог помочь, или я его не так использовал, вобщем код вот
    Код (C++):
    #include<stdio.h>
    #include<string.h>
    #include<ctype.h>
    #include<stdlib.h>

    int main(int argc, char* argv[]){


    double countAdd=0;
    int yes[100];
    if(argc>1){
    for(int i=0;i<argc;i++){

    if(stricmp(*(argv+i),"add")==0){
    for(int j=i+1;j<argc;j++){
    if(isdigit(atoi(*(argv+j)))){
    countAdd=countAdd+atoi(*(argv+j));

    }
    }
    printf("Sum is %d",countAdd);

    }
    }
    }
    return 0;
    }
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    надо понимать что пишешь.
    Код (Text):
    isdigit(atoi(*(argv+j)))
    http://cplusplus.com/reference/clibrary/cctype/isdigit/
    http://cplusplus.com/reference/clibrary/cstdlib/atoi/
    Приведи пример исходных данных? судя по коду нечто типа "add 123 add 456 add 345"
    но мне такой формат кажется странным.
     
  3. Vunderkind

    Vunderkind Active Member

    Регистрация:
    26 окт 2010
    Сообщения:
    27
    Симпатии:
    0
    Хочу чтоб моя прога читала данные из командной строки и складывала все числа (десятичные, шестнадцатеричные и двоичные) после слово "add, например: add 12 0010 0x2
    вывод: Сумма 16.

    но застрял в isdigit(), почему то она не хочет читать данные от указателя на чаровый массив.
    искал возможные варианты чтобы исправить ошибку и написал atoi
     
  4. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Зачем вам isdigit? Вы уверены что понимаете как оно работает и зачем вообще нужно? - ссылку на описание я привел выше, почитайте.

    Код (Text):
    for(int i=0;i<argc;i++){

    if(stricmp(*(argv+i),"add")==0){
    допустим аргумент: "add 123 456"
    argc = 3, Значит будет 3 итерации в этом цикле. Что будет являться аргументом stricmp на первой и следующих итерациях?

    И еще раз:
    А тут написан фантастический бред. Судя по тому что вы ищите слово add на каждой итерации передавать в качестве аргумента надо нечто типа "add23 add456", но внутренний цикл тогда надо менять.
     
  5. qqwertty

    qqwertty Гость

    Я не знаю, мож у вас задание прям такое, но ИМХО не проще явно указывать систему счисления, например 1000 может интерпретироваться двояко, замучаетесь баги править потом... Можно например так: add d100 b100 0x15 или просто x15. argv это обычные строки, соответственно ищем букву и узнаем какое число, просто, понятно и расширяемо.
     
Загрузка...
Похожие Темы - Условие Для Нахождения
  1. Dimm
    Ответов:
    11
    Просмотров:
    224
  2. shilovec5377
    Ответов:
    0
    Просмотров:
    1.036
  3. zdrastes
    Ответов:
    0
    Просмотров:
    1.122
  4. era1fgg
    Ответов:
    1
    Просмотров:
    1.301
  5. dimon131
    Ответов:
    2
    Просмотров:
    1.643

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