전적으로 전문 지식이 부족한 것에 대해 사과드립니다 ... 하지만 얼마 전에 모든 숫자의 요소를 나열해야했습니다. 그래서 궁극적으로 구조의 모습Cake-Like linked-list
...
struct f{
int a;
struct f *b;
int c;
};
struct f factor = {
{factor_first, factor+1, factor_last},
{factor_second,factor+2, factor_second-to-last},
....(continued)
}
: 나는 다른 더 효율적인 방법이 거기 밖으로 확신하지만 , 나는 특히이 있었다 아이디어는 이러한 형태 인 구조를 만드는 것이 었습니다 :
가1) 내가 거기에 얼마나 많은 요인 모르는, 따라서 얼마나 오래 목록은 다음과 같습니다
factor = {factor_first, factor_second, factor_third ... ,factor_last}
문제가 있다는 것입니다.
2) 성공적으로 목록을 작성한 경우, 목록이 연속적이되도록 factor + some #에 대한 최종 참조를 어떻게 제거 할 수 있습니까?
3) 나는 for 루프를 사용하고자하지만 아마 같은 것을 할 수 없어 실현 : 그래서 모두 모두)
if (n%i==0) /* n is the number to be factored, by the way */
factor+i = {i, factor+i+1, n/i}
4, 나는 ...
을 완전히 우둔 해요어쨌든, 숫자의 요인을 찾는 더 좋은 방법이 있다는 것을 알고 있지만, 초보자부터 가능한 경우 어떻게 달성 할 수 있을지 궁금했습니다. (케이크와 같은 연결된 목록을 만드는이 특별한 방법으로)
'
#include <stdio.h>
#include <stdlib.h>
main()
{
typedef struct f{
int a;
struct f *b;
int c;
} FACTOR;
int n, i, j = 0;
scanf_s("%d", &n, sizeof(&n)); /*gets n*/
FACTOR *pTF;
FACTOR *head = pTF;
for (i = 1; i*i <= n; i++)
{
if (n%i == 0)
{
pTF = malloc(sizeof(struct f));
pTF[j]->a = i;
pTF[j]->c = n/i;
pTF[j]->b = malloc(sizeof(struct f));
pTF[j + 1] = malloc(sizeof(struct f));
pTF[j]->b = pTF[0 + j + 1];
j++;
}
}
}
를 어떻게 든이 작동하지 않습니다 ... 나는이 구조체와 포인터 사이의 전환과 관련이있다 생각하지만, 나는 할 수 있습니다
설명을 본 후, 나는 그것을 적용하기로 결정 t는 그것을 이해하는 것 : (
나는 pTF [행 번호]로 행을 편리하게 호출 할 수는 없을까? 하지만 어떻게 그럴 수 있습니까?
#include <stdio.h>
#include <stdlib.h>
typedef struct f{
int s;
struct f *link;
int b;
} FACT;
Factprint(FACT *a) //prints this structure in correct sequence.
{
if(a != NULL)
{
printf("%d ", a->s);
Factprint(a->link);
if(a->s!=a->b) printf("%d ", a->b); //skips a square
}
}
int main()
{
int num, i;
scanf("%d", &num);
FACT *x, *tmp_1, *tmp_2;
x = malloc(sizeof(FACT));
tmp_1 = x;
i = 1;
for (i = 1; i*i <= num; i++)
{
if (num%i == 0) //a factor
{
tmp_2 = malloc(sizeof(FACT));
tmp_2->s = i; //first get the factors
tmp_2->link = '\0';
tmp_2->b = num/i;
tmp_1->link = tmp_2; // then connect to the previous link
tmp_1 = tmp_2; //now go down the link...
}
}
Factprint(x->link);
}
답변 해 주셔서 감사합니다. 그러나 요인을 자동으로 찾을 수도 있습니까? 나는 초보적인 시도로 원래의 게시물을 업데이트했지만, 그것은 꽤 결함이있는 것 같다. –
자동으로와 같은 것은 없으며 논리를 프로그래밍해야합니다. 그러나 단순히 나머지를 나누고 확인하는 것이 트릭을 수행합니다. – saikumarm