최단거리 알고리즘인데요 , 파일을 불러오지도 못하고,제대로길을찾지도못하고,ㅠㅠ
딸기우유
최단거리 알고리즘 입니다 . 수정좀 부탁드립니다 .문자와 숫자가 섞여있는 텍스트 파일을 불러와 2차원 배열로 저장하고 싶은데, 안되구요
이게 누구껄 보고 비슷하게 따라한건데 , value와 imsi배열은 왜있는지 모르겠습니다 .
함수 시간 구하는 걸 여기서 찾아다 썼는데요 0.0000이라고 밖에 안찍혀요, 더 세밀하게 구할순 없나요
제가 way 배열을 만들어서 넣었습니다 . 경로를 출력할때 역추적 하려구요 . 제대로 돌아가고 있는거 같나요 ?질문 내용 : #includestdio.h
#includeiostream.h
#includetime.h
#includeconio.h#define n 47
#define x 10000000
int ba[n][n], n;
int k[n]; //1번역에서 i번 역으로 가는 최단거리
int front, rear,m;
int imsi[n*n]; //말대로 임시배열
int value[n*n]; //이때의 가는거리
int way[n],y;
int jj[n*n];
void main()
{
time_t start,stop;
int i,j,t;
double during;
int
ba[n][n]={
{0,x,x,x,x,x,x,x,x,x,x,x,x,x,x,1131,x,x,3177,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,3034,x,x,2725,x,x,x,x},
{x,0,x,2212,x,x,x,x,x,x,x,1535,x,x,x,x,x,x,x,x,x,x,2163,1859,2432,x,x,x,x,x,x,x,x,x,x,2381,x,722,x,x,x,x,2772,x,x,x,x},
{x,x,0,x,x,x,x,x,x,x,x,x,x,2851,4310,x,x,x,x,x,2777,x,x,x,x,x,4472,x,x,x,x,x,x,x,x,x,x,x,3362,4669,x,x,x,2004,x,x,3449},
{x,2212,x,0,x,1760,4919,x,716,x,x,698,x,x,1320,x,3107,x,1117,x,x,x,2685,2968,2518,x,1485,x,1464,x,x,x,x,x,x,3210,x,x,4919,1302,x,x,x,x,x,x,x},
{x,x,x,x,0,x,x,x,0,x,x,x,x,x,x,x,x,x,x,5767,4395,x,x,x,x,x,x,6507,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,6524,5223,1340,x},
{x,x,x,1760,x,0,3330,x,1043,x,x,1198,x,x,x,x,1627,x,2757,x,x,x,1032,x,x,x,3151,x,x,4576,x,x,x,x,x,x,x,x,x,3002,x,x,2408,x,3926,x,x},
{x,x,x,4919,x,3330,0,x,x,x,x,x,x,x,x,x,1813,1855,x,1063,x,x,2300,x,x,x,x,x,x,1365,x,x,x,x,x,x,x,x,x,x,3325,x,x,x,889,x,2846},
{x,x,x,x,x,x,x,0,x,x,x,x,x,x,x,x,x,3359,x,x,x,x,3004,x,x,x,x,x,x,x,x,x,x,x,3600,2940,x,x,x,x,x,x,x,x,x,x,1309},
{x,x,x,716,x,1043,x,x,0,x,x,350,x,x,x,x,x,x,x,x,x,x,x,x,2785,x,2150,x,x,x,x,x,x,x,1509,x,x,x,x,1984,x,x,1366,x,x,x,x},
{x,x,x,x,x,x,x,x,x,0,2899,x,637,x,x,x,x,x,x,x,x,x,x,x,x,1172,x,3477,x,x,x,1962,1512,x,x,x,x,x,2489,x,x,2828,x,x,x,x,x},
{x,x,x,x,x,x,x,x,x,2899,0,x,3169,x,x,4352,x,x,x,x,x,x,x,x,x,1951,x,x,x,x,x,x,4408,x,x,x,x,x,x,x,x,1220,x,x,x,x,x},
{x,1535,x,698,x,1198,x,x,350,x,x,0,x,x,1986,x,2735,6149,1814,x,x,x,2210,x,2441,x,2184,x,x,x,x,x,x,x,1788,2696,x,2201,5604,1997,x,x,1328,x,x,x,x},
{x,x,x,x,x,x,x,x,x,637,3169,x,0,x,x,x,x,x,5015,x,x,x,x,x,1709,4652,x,4350,x,x,2221,1362,x,x,x,x,x,2125,4728,x,2818,5188,x,x,x,x,x},
{x,x,2851,x,x,x,x,x,x,x,x,x,x,0,4253,x,x,x,4324,x,4249,x,x,x,x,x,3945,1752,x,x,x,1688,1185,745,x,x,x,x,711,4130,x,x,x,1855,x,x,6294},
{x,x,4310,1320,x,x,x,x,x,x,x,1986,x,4253,0,x,x,x,421,x,x,x,3441,x,x,x,596,5607,x,x,x,x,x,x,3594,964,x,x,x,3845,637,x,x,947,x,x,x},
{1131,x,x,x,x,x,x,x,x,x,4352,x,x,x,x,0,x,x,2841,x,x,x,x,x,x,x,2713,x,x,x,x,x,x,x,4037,x,x,x,3812,2610,x,3122,2588,x,x,x,x},
{x,x,x,3107,x,1627,1813,x,x,x,x,2735,x,x,x,x,0,x,3802,2342,x,x,664,x,x,x,4168,x,x,x,x,x,x,x,2695,707,x,x,x,x,x,x,x,3672,x,2570,x},
{x,x,x,x,x,x,1855,3359,x,x,x,6149,x,x,x,x,x,0,7412,2147,6235,x,x,x,x,x,7767,8624,x,1655,x,x,x,x,x,x,x,x,x,x,1601,x,7268,x,1042,2869,3462},
{3177,x,x,1117,x,2757,x,x,x,x,x,1814,5015,4324,421,2841,3802,7412,0,x,x,x,3536,x,3016,x,394,5789,883,x,x,x,4820,3629,1257,4080,x,3923,3847,291,x,x,592,5676,x,x,x},
{x,x,x,x,5767,x,1063,x,x,x,x,x,x,x,x,x,2342,2147,x,0,5538,x,2967,x,x,x,x,7231,x,700,x,x,x,x,x,2671,x,x,x,x,x,x,x,6889,x,4582,1790},
{x,x,2777,x,4395,x,x,x,x,x,x,x,x,4249,x,x,x,6235,x,5538,0,x,x,x,x,x,x,2551,x,5291,x,x,x,x,x,x,x,x,x,x,x,x,x,2394,x,5074,x},
{x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,0,x,1737,x,x,x,x,5037,x,1910,x,x,x,x,x,x,1818,x,x,x,4416,4811,x,x,x,x},
{x,2163,x,2685,x,1032,2300,3004,x,x,x,2210,x,x,3441,x,664,x,3536,2967,x,x,0,x,x,x,x,x,x,x,x,x,x,x,2612,543,x,2713,x,3810,x,x,3301,x,x,x,x},
{x,1859,x,2968,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,1737,x,0,1116,x,x,x,3323,x,x,x,x,x,x,x,x,1506,x,3753,x,x,3195,x,x,x,x},
{x,2432,x,2518,x,x,x,x,2785,x,x,2441,x,x,x,x,x,x,3016,x,x,x,x,1116,0,x,3108,x,2378,x,x,x,x,x,x,x,x,2380,x,2920,x,x,2502,x,x,x,x},
{x,x,x,x,x,x,x,x,x,1172,1951,x,1709,x,x,x,x,x,x,x,x,x,x,x,x,0,x,4172,x,x,x,2636,2620,x,x,x,x,x,3649,x,x,2352,x,x,x,x,x},
{x,x,4472,1485,x,3151,x,x,2150,x,x,2184,4652,3945,596,2713,4168,7767,394,x,x,x,x,x,3108,x,0,5448,779,x,x,x,4426,3240,1551,4467,x,4241,3455,212,5759,891,5352,x,x,x,x},/,x,x},
{x,x,x,x,6507,x,x,x,x,3477,x,x,x,1752,5607,x,x,8624,5789,7231,2551,x,x,x,x,4172,5448,0,x,x,x,x,1551,2336,2475,x,x,x,x,2456,5653,x,x,x,x,7491,5468},
{x,x,x,1464,x,x,x,x,x,x,x,x,4350,x,x,x,x,x,883,x,x,5037,x,3323,2378,x,779,x,0,x,x,x,x,4413,3439,2123,x,x,x,3585,647,x,5061,838,x,x,x},
{x,x,x,x,x,4576,1365,x,x,x,x,x,x,x,x,x,x,1655,x,700,5291,x,x,x,x,x,x,x,x,0,x,x,x,x,x,x,x,x,x,x,x,x,x,x,1485,3889,1687},
{x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,1910,x,x,x,x,x,x,x,x,0,x,x,x,x,x,2915,x,1924,x,x,3655,x,x,x,x,x},
{x,x,x,x,x,x,x,x,x,1962,x,x,2221,1688,x,x,x,x,x,x,x,x,x,x,x,2636,x,1551,x,x,x,0,1274,2314,x,x,x,x,2086,x,x,x,x,1889,x,x,x},
{x,x,x,x,x,x,x,x,x,1512,4408,x,1362,1185,x,x,x,x,4820,x,x,x,x,x,x,2620,4426,2336,4413,x,x,1274,0,1411,x,x,x,x,1093,4570,x,4180,x,2584,x,x,x},
{x,x,x,x,x,x,x,x,x,x,x,x,x,745,3594,x,x,x,3627,x,x,x,x,x,x,x,3240,2475,3439,x,x,2314,1411,0,4382,x,x,x,329,3417,x,x,4086,x,x,x,x},
{x,x,x,x,x,x,x,3600,1509,x,x,1788,x,x,964,4037,2695,x,1257,x,x,x,2612,x,x,x,1551,x,2123,x,x,x,x,4382,0,x,x,x,4663,1540,x,x,1468,x,x,x,4653},
{x,2381,x,3210,x,x,x,2940,x,x,x,2696,x,x,x,x,707,x,4080,2671,x,x,543,x,x,x,4467,x,x,x,2915,x,x,x,x,0,x,2814,x,x,4532,x,3834,2429,x,x,x},
{x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,0,x,7958,10251,3924,8507,10551,5461,5166,1969,4438},
{x,722,x,x,x,x,x,x,x,x,x,2201,x,x,x,x,x,x,3923,x,x,1818,2713,1506,2380,x,4241,x,x,x,1924,x,x,x,x,2814,x,0,x,4032,x,x,3352,x,x,x,x},
{x,x,3362,4919,x,x,x,x,x,2489,x,5604,2125,711,3845,3812,x,x,3847,x,x,x,x,x,x,3649,3455,2456,3585,x,x,2086,1093,329,4663,x,7958,x,0,3621,x,4820,4276,2567,x,x,6733},
{3034,x,4669,1302,x,3002,x,x,1984,x,x,1997,4728,4130,637,2610,x,x,291,x,x,x,3810,3753,2920,x,212,5653,647,x,x,x,4570,3417,1540,x,10251,4032,3621,0,x,5600,600,x,x,x,x},
{x,x,x,x,x,x,3325,x,x,x,x,x,x,x,x,x,x,1601,x,x,x,x,x,x,x,x,x,x,x,x,3655,x,x,x,x,4532,3924,x,x,x,0,x,x,x,2400,2000,x},
{x,x,x,x,x,x,x,x,x,2828,1220,x,2818,x,x,3122,x,x,x,x,x,4426,x,x,x,2352,5759,x,5061,x,x,x,4180,x,x,x,8507,x,4820,5600,x,0,5700,x,x,x,x},
{2725,2779,x,x,x,2408,x,x,1366,x,x,1328,5188,x,947,2588,3672,7268,592,x,x,4811,3301,3195,2502,x,891,x,838,x,x,x,x,4086,1468,3834,10551,3352,4276,600,x,5700,0,5100,x,x,x},
{x,x,2004,x,6524,x,x,x,x,x,x,x,x,1855,x,x,x,x,5676,6889,2394,x,x,x,x,x,5352,x,x,x,x,1889,2584,x,x,x,5461,x,2567,x,x,x,5100,0,x,x,x},
{x,x,x,x,5223,3926,899,x,x,x,x,x,x,x,x,x,2570,1042,x,x,x,x,x,x,x,x,x,x,x,1485,x,x,x,x,x,2429,5166,x,x,x,2400,x,x,x,0,3900,3300},
{x,x,x,x,1340,x,x,x,x,x,x,x,x,x,x,x,x,2869,x,4582,5074,x,x,x,x,x,x,7491,x,3889,x,x,x,x,x,x,1969,x,x,x,2000,x,x,x,3900,0,4800},
{x,x,3449,x,x,x,2846,1309,x,x,x,x,x,6294,x,x,x,3462,x,1790,x,x,x,x,x,x,x,5468,x,1867,x,x,x,x,4653,x,4438,x,6733,x,x,x,x,x,3300,4800,0},
};
/*
file *fp;
fp = fopen(linkcost.txt,rt);
for(i=0;in*n; i++)
{
fscanf(fp,%c ,&jj[i]);
}
for(i=0; in; i++)
{
for(j=0;jn;j++)
{
ba[i][j] = jj[i*n+j];
}
}
*/
for(i=0; in; i++)
{
k[i] = x;
}
k[0]=0;
imsi[0] = 0;
value[0] = 0;
rear = 1;
printf(---------------------------------------------------------------------\n);
printf(|1.abidjan2.addis ababa3.anchorage|\n);
printf(|4.athens5.auckland6.bahrain|\n);
printf(|7.bangkok8.beijing9.beiru|\n);
printf(|10.bogota11.buenos aires12.cairo|\n);
printf(|13.caracas14.chicago15.copenhagen|\n);
printf(|16.dakar17.delhi18.denpasar-bali|\n);
printf(|19.frankfurt20.hong kong21.honolulu|\n);
printf(|22.johannesburg23.karachi24.kinshasa|\n);
printf(|25.lagos26.lima27.london|\n);
printf(|28.los angeles29.madrid30.manila|\n);
printf(|31.mauritius32.mexico city33.miami|\n);
printf(|34.montreal35.moscow36.mumbai|\n);
printf(|37.nadi38.nairobi39.new york|\n);
printf(|40.paris41.perth42.rio de janeiro|\n);
printf(|43.rome44.san francisco45.singapore|\n);
printf(|46.sydney47.tokyo|\n);
printf(---------------------------------------------------------------------\n);
printf(목적지를 입력하세요\n);
scanf(%d , &n);
start = time(null);
for(;;front++)
{
if(front == rear)break; // underflow 조건
t = imsi[front]; //현재 위치 저장
if(value[front] != k[t]) continue; //이미 갱신된 경우
for(i=0; in; i++)
{
int j=0;
if(ba[t][i] == x) continue; // t 에서 i로 갈수 없는 경우
if(k[i] == x)
{
k[i] = k[t] + ba[t][i]; //갱신
value[rear] = k[i];
imsi[rear++] = i; // 집어넣기
way[i] = t;
}
else if(k[i] k[t] + ba[t][i])
{
k[i] = k[t] + ba[t][i];
value[rear] = k[i];
imsi[rear++] = i;
way[i] = t;
}
}
}
y = way[n-1];
for(j=0; jn; j++)
{
for(i=0; in; i++)
{
if( y == i)
{
printf(%d - ,i+1);
y= way[i];
continue;
}
}
if(y==0)
{
printf(1\n);
break;
}
}
stop = time(null);
printf( %d 번까지의 최종거리는 %d mile입니다!\n , n, k[n-1]);
during = difftime(stop,start)*100000000000000000;
printf(time = %f \n,during);}
어떤분이 최단거리 알고리즘 만드신거 보고 작성한건데요,
이게 일단 잘 안돌아 가는거 같구요 . (첫번째)
그리구 가운데 value하구, imsi는 왜있는건지 모르겠어요 (두번째)
그리구 way배열은 제가 경로를 추적하려고 만든건데 , 저게 제대로 돌아가는건가요 ? (세번째)
그리구 제가 함수 시간을 측정하려고 썼는데요 . 0.0000밖에 안나와요 .
그래서 저기 막 뒤에 숫자를 곱했잖아요 ,근데도 안나와요 ㅠ 더 세밀하게 측정할수 없을까요 ?(네번째)
제일 중요한건데요, 저기 보시면 제가 주석 처리 한부분 있잖아요 ,
그부분이 원래는 파일을 불러오는 거거든요 !
확장자없는 test라는 파일을 불러올껀데요 ,
연결이 되지 않은곳은 x로 되있고, 연결이 된곳은 링크 코스트가 적혀있는 파일입니다 .
각 링크당 구분은 스페이스바 (띄어쓰기) 로 되어있구요 .
근데 안읽혀요 ,
그리구 제가 지금 ba배열로 한것두 , 똑같이 원래는 텍스트 파일로 가지고 있거든요
근데 저걸 불러오면, 만약에 x x x 1131 x x x 이런식이면
x x x 1 1 3 1 x x x 이렇게 불려오는데 고칠수 있는 방법이 없나요 ? (다섯번째 )숫자와 문자가 섞여있는 파일을 불러와서 2차원 배열로 저장하고 싶은데 ,
(위에 다섯번째에서 부탁드린거가 이얘기인데요 )
문자와 숫자가 섞여 있어서 그런지 %d 로 불러오면 0으로 찍히고
%c로 불러오면 모든 원소가 null 이라고 적히구요
%s 도 뭔가 이상하게 불려옵니다 ...제가 c언어로 뭘 짜는게 거의 처음이라서
이거 가지고 몇일을 헤매고 있어요 ㅠㅠㅠ
제발 부탁드릴게요 !
-
매1력적
ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ;;;;
-
갤3
헐....
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692451 | 이 문제좀 풀어주세요 ^^ | 게자리 | 2025-04-23 |
2692424 | 2차원배열 자료입력질문이요! (1) | 똘끼 | 2025-04-22 |
2692401 | 유닉스안에서 C언어를 이용한 명함 만들기 입니다; 이해안가는 부분이있네요 | 2gether | 2025-04-22 |
2692374 | 고수님들 댓글 마니부탁해요!!! (2) | 엄지 | 2025-04-22 |
2692343 | scnaf에 자꾸 선언을 참조하라는데;; (8) | 도래 | 2025-04-22 |
2692282 | 도스상에서 생성된 exe파일에 press~ 뜨게 하기 (4) | 회사원 | 2025-04-21 |
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |