Эта программа возвращает GCD аргументов командной строки, введенных пользователем, ТОЛЬКО от наименьшего до наибольшего. Например:
Пользовательский ввод: './a.out 5 10 15 20 25'
Эта программа возвращает: «GCD аргументов командной строки равен 5»
Однако проблема, с которой я сталкиваюсь, заключается в том, что пользователь, например, вводит:
Пользовательский ввод: './a.out 15 10 5 25 20'
Эта программа возвращает: 15
Может ли кто-нибудь сказать мне, как решить эту проблему?
Вот к чему я стремлюсь:
Если пользовательский ввод: './a.out 15 10 5 25 20'
Эта программа должна вернуть: 5
//Header Files
#include<stdio.h>
#include<string.h>
//Main Method
int main(int argc, char *argv[]){
//Declared variables here and print statements
int i,x,y,min;
printf("Number of command line args is %d\n", argc);
printf("The GCD is:\t");
//This is the main while loop
while( x !=0 && y !=0 && y != x){
if(x<y){
y=y-x;
}//End first IF statement
if(y<x){
x-x-y;
}//End second IF statement
}//End while loop
//This function returns the converted integral number as an int value
x=atoi(argv[i]);
for(i=2;i<argc;i++){
y=atoi(argv[i]);
}
//The following code gets the GCD and prints from the command line
min = (x>y)?x:y;
for(i=min;i>=1;--i){
if(x%i==0 && y%i==0){
for(i=1;i<argc;i++){
printf("%s\n", argv[i]);
break;}//End for loop
}//End IF statement
}//End For loop
}//End of MAIN
i
(и некоторые другие переменные) не инициализируются. В любом случае первый цикл while кажется бесполезным. Но, пожалуйста, сделайте правильный отступ в коде. - person wimh   schedule 29.03.2015