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

  • Автор темы Vunderkind
  • Дата начала
V

Vunderkind

Нужно написать условие для нахождение чисел разных систем счисления из коммандной строки, Прежде чем написать условие для нахождение 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;
}
 
R

rrrFer

надо понимать что пишешь.
Код:
isdigit(atoi(*(argv+j)))


int isdigit ( int c );
Check if character is decimal digit
Checks if parameter c is a decimal digit character.

Приведи пример исходных данных? судя по коду нечто типа "add 123 add 456 add 345"
но мне такой формат кажется странным.
 
V

Vunderkind

надо понимать что пишешь.
Код:
isdigit(atoi(*(argv+j)))




Приведи пример исходных данных? судя по коду нечто типа "add 123 add 456 add 345"
но мне такой формат кажется странным.

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

но застрял в isdigit(), почему то она не хочет читать данные от указателя на чаровый массив.
надо понимать что пишешь.
Код:
isdigit(atoi(*(argv+j)))
искал возможные варианты чтобы исправить ошибку и написал atoi
 
R

rrrFer

Зачем вам isdigit? Вы уверены что понимаете как оно работает и зачем вообще нужно? - ссылку на описание я привел выше, почитайте.

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

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

И еще раз:
надо понимать что пишешь.

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

qqwertty

Я не знаю, мож у вас задание прям такое, но ИМХО не проще явно указывать систему счисления, например 1000 может интерпретироваться двояко, замучаетесь баги править потом... Можно например так: add d100 b100 0x15 или просто x15. argv это обычные строки, соответственно ищем букву и узнаем какое число, просто, понятно и расширяемо.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!