Tarun Jha Ответов: 1

Имея проблему с программой C, чтобы найти общие факторы между 2 числами.


Программа печатает не общее, а инициализированное значение, которое должно увеличиваться, как закодировано в программе.

И я думаю, что проблема заключается в цикле while.

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

Что я уже пробовал:

#include <conio.h>
#include <stdio.h>

int main(){
	
	int a, b, i, j;
	int total_a=0, total_b=0;
	
	printf("Enter your integers: \n");
	scanf(" %d%d", &a, &b);
	
	for(i=1, j=1; i<=a,j<=b; i++,j++){
		
		if(a%i==0)
			total_a = total_a*10 + i;
			
		if(b%j==0)
			total_b = total_b*10 + j;
		
	}
	
	/*printf(" %d %d", total_a, total_b);
	int total=0;
	printf(" %d", total);*/

	int rem_a, rem_b, total =0;

	while(total_a!=0){
		
		rem_a = total_a%10;
		
		while(total_b!=0){
			
			rem_b =total_b%10;
			
			if(rem_a==rem_b){
				total = total*10 + rem_a;
			}
			
			total_b/=10;
		}
		
		total_a/=10;
	}
	
	printf(" %d", total);
	
	return 0;
}

1 Ответов

Рейтинг:
0

OriginalGriff

Хм. Вам нужно еще немного подумать об этом: ваш код не делает того, что вы думаете.

for(i=1, j=1; i<=a,j<=b; i++,j++){

Внутри этой петли, i и j они всегда будут иметь одно и то же значение; они оба будут начинаться с единицы, затем они оба будут двумя, и так далее. Я не уверен, когда они остановятся, потому что раньше я не видел условия с запятой в нем, и я сомневаюсь, что он будет компилироваться - я нахожусь на планшете и в данный момент у меня нет компилятора C, я не могу проверить, но я не думаю, что это допустимый код C.

Вероятно, вам нужна вложенная пара циклов, а не один цикл...


Richard MacCutchan

Просто попробовал, и это прекрасно работает. Цикл продолжается до второго выражения (j<=b) есть true Что может быть, а может и не быть тем, чего хочет программист.

Tarun Jha

да, это проблема, цикл while