#include<stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define distance(xi,xj,yi,yj) sqrt(pow((xi)-(xj),2.0)+pow((yi)-(yj),2.0))
#define MaxN 100
FILE * fp1;
FILE * fp2;
FILE * fp3;
struct CityInfo
{
int citynumber;
double x;
double y;
} ;
int main( void ) {
int N;
int n;
int city_number;
double a, b;
double ux;
double uy;
struct CityInfo cityinfo[ MaxN] { { 0 , 0.0 , 0.0 } } ;
printf ( "訪問都市の位置座標x座標とy座標の範囲(下限a,上限b)の設定について\n " ) ; printf ( "範囲の下限aを指定して下さい____> " ) ; scanf_s
( "%lf" , & a
) ; printf ( "範囲の上限bを指定して下さい____> " ) ; scanf_s
( "%lf" , & b
) ; printf ( "訪問都市数Nを指定して下さい____>" ) ; scanf_s
( "%d" , & N
) ;
errno_t err, err_r;
err = fopen_s( & fp1, "citydata_info.csv" , "w" ) ;
if ( err == 1 )
{
printf ( "The file 'citydata_info.csv'was not opened\n \n " ) ; }
printf ( "\n 都市番号\t x座標\t \t \t y座標\n " ) ;
for ( n = 1 ; n <= N; n++ ) {
city_number = n;
ux
= ( double ) rand ( ) / ( double ) RAND_MAX
; cityinfo[ n] .x = a + ( b - a) * ux;
uy
= ( double ) rand ( ) / ( double ) RAND_MAX
; cityinfo[ n] .y = a + ( b - a) * uy;
printf ( "%d\t \t %lf\t \t %lf\n " , n
, cityinfo
[ n
] .
x , cityinfo
[ n
] .
y ) ; fprintf ( fp1
, "%d\t %lf\t %lf\n " , n
, cityinfo
[ n
] .
x , cityinfo
[ n
] .
y ) ;
}
if ( fp1)
{
if ( err == 1 )
{
printf ( "The file 'citydata_info.csv'was not closed\n \n " ) ; }
}
struct CityInfo * cityinfodata;
cityinfodata
= ( struct CityInfo
* ) malloc ( ( N
+ 1 ) * sizeof ( struct CityInfo
) ) ; if ( cityinfodata == NULL) {
}
for ( n = 0 ; n <= N; n++ ) {
cityinfo[ n] .citynumber = 0 ;
cityinfo[ n] .x = 0.0 ;
cityinfo[ n] .y = 0.0 ;
}
if ( err == 1 ) {
printf ( "The file 'citydata_info.txt' was not opened as read mode.\n \n " ) ; }
err_r = fopen_s( & fp2, "citydata_info.csv" , "w" ) ;
if ( err_r == 1 ) {
printf ( "The file 'citydata_info.csv' was not opened as read mode.\n \n " ) ; }
n = 0 ;
while ( ( fscanf_s( fp1, "%d,%lf,%lf" , & cityinfo[ n] .citynumber , & cityinfo[ n] .x , & cityinfo[ n] .y ) ) == 3 ) {
fprintf_s( fp2, "%d,%lf,%lf\n " , cityinfo[ n] .citynumber , cityinfo[ n] .x , cityinfo[ n] .y ) ;
n++;
}
if ( fp1) {
if ( err
== 1 ) { printf ( "The file 'citydata_info.txt' was not closed.\n \n " ) ; } }
if ( fp2) {
if ( err_r
== 1 ) { printf ( "The file 'citydata_info.csv' was not closed.\n \n " ) ; } }
err_r = fopen_s( & fp2, "citydata_info.csv" , "r" ) ;
if ( err_r == 1 ) {
printf ( "The file 'citydata_info.csv' was not opened as read mode.\n \n " ) ; }
errno_t err3;
err3 = fopen_s( & fp3, "qwerty.csv" , "w" ) ;
if ( err3 == 1 )
{
printf ( "The file qwerty.csv' was not opened as read mode.\n \n " ) ; }
fprintf_s( fp3, "都市番号,x座標,y座標\n " ) ;
while ( ( fscanf_s( fp3, "%d,%lf,%lf" , & cityinfo[ n] .citynumber , & cityinfo[ n] .x , & cityinfo[ n] .y ) ) == 3 ) {
n++;
}
int * z;
z
= ( int * ) malloc ( ( N
+ 1 ) * sizeof ( int ) ) ; if ( z == NULL) {
}
for ( n = 0 ; n <= N; n++ ) {
z[ n] = 0 ;
}
int * zz;
zz
= ( int * ) malloc ( ( N
+ 1 ) * sizeof ( int ) ) ; if ( zz == NULL) {
}
for ( n = 0 ; n <= N; n++ ) {
zz[ n] = 0 ;
}
clock_t start_time, end_time;
int start;
int i;
int j;
int k;
int next;
double min;
double disij;
double tdis= 0.0 ;
start = 0 ;
printf ( "\n 最初の出発都市startを都市番号1~%dより指定してください。-->" , N
) ; scanf_s
( "%d" , & start
) ;
i = start;
printf ( "k\t i\t next\t min\t tdis\n " ) ;
k = 1 ;
z[ i] = k;
zz[ k] = i;
for ( k = 2 ; k <= N; k++ ) {
min = 10000.0 ;
for ( j = 1 ; j <= N ; j++ ) {
if ( z[ j] == 0 ) {
disij = distance( cityinfo[ i] .x , cityinfo[ j] .x , cityinfo[ i] .y , cityinfo[ j] .y ) ;
if ( disij< min) {
next = j;
min = disij;
}
}
}
z[ next] = k;
zz[ k] = next;
tdis = tdis + disij;
i = next;
printf ( "%d\t %d\t %d\t %lf\t %lf\n " , k
, i
, next
, min
, tdis
) ; fprintf ( fp3
, "%d,%d,%d,%lf,%lf\n " , k
, i
, next
, min
, tdis
) ;
}
double ldis= 0.0 ;
ldis
= sqrt ( pow ( cityinfo
[ start
] .
x - cityinfo
[ next
] .
x , 2.0 ) + pow ( cityinfo
[ start
] .
y - cityinfo
[ next
] .
y , 2.0 ) ) ; tdis = tdis+ ldis;
printf ( "\t %d\t %d\t %lf\t %lf\n " , next
, start
, ldis
, tdis
) ; fprintf ( fp3
, ",%d,%d,%lf,%lf\n " , next
, start
, ldis
, tdis
) ;
double searching_time;
searching_time = ( double ) ( end_time - start_time) / ( double ) CLOCKS_PER_SEC;
printf ( "\n 最近隣法による最短巡回経路の総移動距離は%lfです。\n " , tdis
) ; fprintf_s( fp3, "\n 最近隣法による最短巡回経路の総移動距離は%lfです。\n " , tdis) ;
printf ( "探索処理時間%lf秒\n " , searching_time
) ; fprintf_s( fp3, "探索処理時間%lf秒\n " , searching_time) ;
return 0 ;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8bWF0aC5oPgojaW5jbHVkZSA8dGltZS5oPgojZGVmaW5lIGRpc3RhbmNlKHhpLHhqLHlpLHlqKSBzcXJ0KHBvdygoeGkpLSh4aiksMi4wKStwb3coKHlpKS0oeWopLDIuMCkpCiNkZWZpbmUgTWF4TiAxMDAKIApGSUxFICpmcDE7CkZJTEUgKmZwMjsKRklMRSAqZnAzOwogCnN0cnVjdCBDaXR5SW5mbwp7CiAgICBpbnQgY2l0eW51bWJlcjsKICAgIGRvdWJsZSB4OwogICAgZG91YmxlIHk7Cn07CiAKaW50IG1haW4odm9pZCl7CmludCBOOwppbnQgbjsKaW50IGNpdHlfbnVtYmVyOwpkb3VibGUgYSwgYjsKICAgIGRvdWJsZSB1eDsKICAgIGRvdWJsZSB1eTsKIAogICAgc3RydWN0IENpdHlJbmZvIGNpdHlpbmZvW01heE5de3sgMCwgMC4wLCAwLjAgfX07CiAKIAogICAgcHJpbnRmKCLoqKrllY/pg73luILjga7kvY3nva7luqfmqJl45bqn5qiZ44GoeeW6p+aomeOBruevhOWbsijkuIvpmZBhLOS4iumZkGIp44Gu6Kit5a6a44Gr44Gk44GE44GmXG4iKTsKICAgIHByaW50Zigi56+E5Zuy44Gu5LiL6ZmQYeOCkuaMh+WumuOBl+OBpuS4i+OBleOBhF9fX18+ICIpOyBzY2FuZl9zKCIlbGYiLCAmYSk7CiAgICBwcmludGYoIuevhOWbsuOBruS4iumZkGLjgpLmjIflrprjgZfjgabkuIvjgZXjgYRfX19fPiAiKTsgc2NhbmZfcygiJWxmIiwgJmIpOwogICAgcHJpbnRmKCLoqKrllY/pg73luILmlbBO44KS5oyH5a6a44GX44Gm5LiL44GV44GEX19fXz4iKTsgc2NhbmZfcygiJWQiLCAmTik7CiAKICAgIGVycm5vX3QgZXJyLCBlcnJfcjsKICAgIGVyciA9IGZvcGVuX3MoJmZwMSwgImNpdHlkYXRhX2luZm8uY3N2IiwgInciKTsKICAgIGlmIChlcnIgPT0gMSkKICAgIHsKICAgICAgICBwcmludGYoIlRoZSBmaWxlICdjaXR5ZGF0YV9pbmZvLmNzdid3YXMgbm90IG9wZW5lZFxuXG4iKTsKICAgIH0KIAogICAgc3JhbmQoKHVuc2lnbmVkIGludCl0aW1lKE5VTEwpKTsKIAogICAgcHJpbnRmKCJcbumDveW4gueVquWPt1x0eOW6p+aomVx0XHRcdHnluqfmqJlcbiIpOwogCiAgICBmb3IgKG4gPSAxOyBuIDw9IE47IG4rKykgewogICAgICAgIAogICAgICAgIGNpdHlfbnVtYmVyID0gbjsKIAogICAgICAgIHV4ID0gKGRvdWJsZSlyYW5kKCkgLyAoZG91YmxlKVJBTkRfTUFYOwogICAgICAgIGNpdHlpbmZvW25dLnggPSBhICsgKGIgLSBhKSAqIHV4OwogICAgICAgIHV5ID0gKGRvdWJsZSlyYW5kKCkgLyAoZG91YmxlKVJBTkRfTUFYOwogICAgICAgIGNpdHlpbmZvW25dLnkgPSBhICsgKGIgLSBhKSAqIHV5OwogICAgICAgIAogICAgICAgIAogICAgICAgIHByaW50ZigiJWRcdFx0JWxmXHRcdCVsZlxuIiwgbiwgY2l0eWluZm9bbl0ueCwgY2l0eWluZm9bbl0ueSk7CiAgICAgICAgZnByaW50ZihmcDEsICIlZFx0JWxmXHQlbGZcbiIsIG4sIGNpdHlpbmZvW25dLngsIGNpdHlpbmZvW25dLnkpOwogCiAgICB9CiAKICAgIGlmIChmcDEpCiAgICB7CiAgICAgICAgZXJyID0gZmNsb3NlKGZwMSk7CiAgICAgICAgaWYgKGVyciA9PSAxKQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCJUaGUgZmlsZSAnY2l0eWRhdGFfaW5mby5jc3Ynd2FzIG5vdCBjbG9zZWRcblxuIik7CiAgICAgICAgfQogICAgfQogCiAKICAgIHN0cnVjdCBDaXR5SW5mbyAqY2l0eWluZm9kYXRhOwogCiAgICBjaXR5aW5mb2RhdGEgPSAoc3RydWN0IENpdHlJbmZvICopbWFsbG9jKChOICsgMSkgKnNpemVvZihzdHJ1Y3QgQ2l0eUluZm8gKSk7CiAgICBpZiAoY2l0eWluZm9kYXRhID09IE5VTEwpewogICAgICAgIHByaW50ZigiIOODoeODouODquOBjOeiuuS/neOBp+OBjeOBvuOBm+OCk+OAglxuIik7IGV4aXQoMSk7CiAgICB9CiAKICAgIGZvciAobiA9IDA7IG4gPD0gTjsgbisrKXsKICAgICAgICBjaXR5aW5mb1tuXS5jaXR5bnVtYmVyID0gMDsKICAgICAgICBjaXR5aW5mb1tuXS54ID0gMC4wOwogICAgICAgIGNpdHlpbmZvW25dLnkgPSAwLjA7CiAgICB9CiAgICBpZiAoZXJyID09IDEpewogICAgICAgIHByaW50ZigiVGhlIGZpbGUgJ2NpdHlkYXRhX2luZm8udHh0JyB3YXMgbm90IG9wZW5lZCBhcyByZWFkIG1vZGUuXG5cbiIpOwogICAgfQogICAgZXJyX3IgPSBmb3Blbl9zKCZmcDIsICJjaXR5ZGF0YV9pbmZvLmNzdiIsICJ3Iik7CiAKICAgIGlmIChlcnJfciA9PSAxKXsKICAgICAgICBwcmludGYoIlRoZSBmaWxlICdjaXR5ZGF0YV9pbmZvLmNzdicgd2FzIG5vdCBvcGVuZWQgYXMgcmVhZCBtb2RlLlxuXG4iKTsKICAgIH0KIAogICAgbiA9IDA7CiAKICAgIHdoaWxlICgoZnNjYW5mX3MoZnAxLCAiJWQsJWxmLCVsZiIsICZjaXR5aW5mb1tuXS5jaXR5bnVtYmVyLCAmY2l0eWluZm9bbl0ueCwgJmNpdHlpbmZvW25dLnkpKSA9PSAzKXsKIAogICAgICAgIGZwcmludGZfcyhmcDIsICIlZCwlbGYsJWxmXG4iLCBjaXR5aW5mb1tuXS5jaXR5bnVtYmVyLCBjaXR5aW5mb1tuXS54LCBjaXR5aW5mb1tuXS55KTsKIAogICAgICAgIG4rKzsKIAogICAgfQogICAgCiAKICAgIGlmIChmcDEpewogICAgICAgIGVyciA9IGZjbG9zZShmcDEpOwogICAgICAgIGlmIChlcnIgPT0gMSl7IHByaW50ZigiVGhlIGZpbGUgJ2NpdHlkYXRhX2luZm8udHh0JyB3YXMgbm90IGNsb3NlZC5cblxuIik7IH0KICAgIH0KICAgIGlmIChmcDIpewogICAgICAgIGVycl9yID0gZmNsb3NlKGZwMik7CiAgICAgICAgaWYgKGVycl9yID09IDEpeyBwcmludGYoIlRoZSBmaWxlICdjaXR5ZGF0YV9pbmZvLmNzdicgd2FzIG5vdCBjbG9zZWQuXG5cbiIpOyB9CiAgICB9CiAKICAgIGVycl9yID0gZm9wZW5fcygmZnAyLCAiY2l0eWRhdGFfaW5mby5jc3YiLCAiciIpOwogCiAgICBpZiAoZXJyX3IgPT0gMSl7CiAgICAgICAgcHJpbnRmKCJUaGUgZmlsZSAnY2l0eWRhdGFfaW5mby5jc3YnIHdhcyBub3Qgb3BlbmVkIGFzIHJlYWQgbW9kZS5cblxuIik7CiAgICB9CiAKICAgIGVycm5vX3QgZXJyMzsKICAgIGVycjMgPSBmb3Blbl9zKCZmcDMsICJxd2VydHkuY3N2IiwgInciKTsKICAgIGlmIChlcnIzID09IDEpCiAgICB7CiAgICAgICAgcHJpbnRmKCJUaGUgZmlsZSBxd2VydHkuY3N2JyB3YXMgbm90IG9wZW5lZCBhcyByZWFkIG1vZGUuXG5cbiIpOwogICAgfQogICAgZnByaW50Zl9zKGZwMywgIumDveW4gueVquWPtyx45bqn5qiZLHnluqfmqJlcbiIpOwogCiAgICB3aGlsZSAoKGZzY2FuZl9zKGZwMywgIiVkLCVsZiwlbGYiLCAmY2l0eWluZm9bbl0uY2l0eW51bWJlciwgJmNpdHlpbmZvW25dLngsICZjaXR5aW5mb1tuXS55KSkgPT0gMyl7CiAKICAgICAgICBuKys7CiAKICAgIH0KIAogICAgaW50ICp6OwogICAgeiA9IChpbnQgKiltYWxsb2MoKE4gKyAxKSAqc2l6ZW9mKGludCkpOwogICAgaWYgKHogPT0gTlVMTCl7CiAgICAgICAgcHJpbnRmKCLkuIDmrKHlhYPphY3liJcgeiDjga7jg6Hjg6Ljg6rjgpLnorrkv53jgafjgY3jgb7jgZvjgpPjgIJcbiIpOyBleGl0KDEpOwogICAgfQogCiAgICBmb3IgKG4gPSAwOyBuIDw9IE47IG4rKyl7CiAgICAgICAgeltuXSA9IDA7CiAgICB9CiAKICAgIGludCAqeno7CiAgICB6eiA9IChpbnQgKiltYWxsb2MoKE4gKyAxKSAqc2l6ZW9mKGludCkpOwogICAgaWYgKHp6ID09IE5VTEwpewogICAgICAgIHByaW50Zigi5LiA5qyh5YWD6YWN5YiXIHp6IOOBruODoeODouODquOCkueiuuS/neOBp+OBjeOBvuOBm+OCk+OAglxuIik7IGV4aXQoMSk7CiAgICB9CiAKICAgIGZvciAobiA9IDA7IG4gPD0gTjsgbisrKXsKICAgICAgICB6eltuXSA9IDA7CiAgICB9CiAgICAKICAgIGNsb2NrX3Qgc3RhcnRfdGltZSwgZW5kX3RpbWU7CiAgICBpbnQgc3RhcnQ7CiAgICBpbnQgaTsKICAgIGludCBqOwogICAgaW50IGs7CiAgICBpbnQgbmV4dDsKICAgIGRvdWJsZSBtaW47CiAgICBkb3VibGUgZGlzaWo7CiAgICBkb3VibGUgdGRpcz0wLjA7CiAgICAKICAgIHN0YXJ0ID0gMDsKICAgIHByaW50ZigiXG7mnIDliJ3jga7lh7rnmbrpg73luIJzdGFydOOCkumDveW4gueVquWPtzHvvZ4lZOOCiOOCiuaMh+WumuOBl+OBpuOBj+OBoOOBleOBhOOAgi0tPiIsIE4pOyBzY2FuZl9zKCIlZCIsICZzdGFydCk7CiAKICAgIHN0YXJ0X3RpbWUgPSBjbG9jaygpOwogICAgaSA9IHN0YXJ0OwogCiAgICBwcmludGYoImtcdGlcdG5leHRcdG1pblx0dGRpc1xuIik7CiAgICAKICAgIGsgPSAxOwogCiAgICAKICAgIHpbaV0gPSBrOwogICAgenpba10gPSBpOwogCiAgICBmb3IgKGsgPSAyOyBrIDw9IE47IGsrKykgewogICAgICAgIG1pbiA9IDEwMDAwLjA7CiAgICAgICAgZm9yIChqID0gMTsgaiA8PSBOIDsgaisrKSB7CiAgICAgICAgICAgIGlmICh6W2pdID09IDApIHsKICAgICAgICAgICAgICAgIGRpc2lqID0gZGlzdGFuY2UoY2l0eWluZm9baV0ueCwgY2l0eWluZm9bal0ueCwgY2l0eWluZm9baV0ueSwgY2l0eWluZm9bal0ueSk7CiAKICAgICAgICAgICAgICAgIGlmIChkaXNpajxtaW4pIHsKICAgICAgICAgICAgICAgICAgICBuZXh0ID0gajsKICAgICAgICAgICAgICAgICAgICBtaW4gPSBkaXNpajsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICB6W25leHRdID0gazsKICAgICAgICB6eltrXSA9IG5leHQ7CiAgICAgICAgdGRpcyA9IHRkaXMgKyBkaXNpajsKICAgICAgICBpID0gbmV4dDsKICAgICAgICAKICAgICAgICBwcmludGYoIiVkXHQlZFx0JWRcdCVsZlx0JWxmXG4iLCBrLCBpLCBuZXh0LCBtaW4sIHRkaXMpOwogICAgICAgIGZwcmludGYoZnAzLCAiJWQsJWQsJWQsJWxmLCVsZlxuIiwgaywgaSwgbmV4dCwgbWluLCB0ZGlzKTsKIAogICAgfQogCiAgICBlbmRfdGltZSA9IGNsb2NrKCk7CiAKICAgIGRvdWJsZSBsZGlzPSAwLjA7CiAgICBsZGlzID0gc3FydChwb3coY2l0eWluZm9bc3RhcnRdLnggLSBjaXR5aW5mb1tuZXh0XS54LCAyLjApICsgcG93KGNpdHlpbmZvW3N0YXJ0XS55IC0gY2l0eWluZm9bbmV4dF0ueSwgMi4wKSk7CiAgICB0ZGlzID0gdGRpcytsZGlzOwogICAgCiAgICBwcmludGYoIlx0JWRcdCVkXHQlbGZcdCVsZlxuIiwgbmV4dCwgc3RhcnQsIGxkaXMsIHRkaXMpOwogICAgZnByaW50ZihmcDMsICIsJWQsJWQsJWxmLCVsZlxuIiwgbmV4dCwgc3RhcnQsIGxkaXMsIHRkaXMpOwogCiAgICBkb3VibGUgc2VhcmNoaW5nX3RpbWU7CiAgICBzZWFyY2hpbmdfdGltZSA9IChkb3VibGUpKGVuZF90aW1lIC0gc3RhcnRfdGltZSkgLyAoZG91YmxlKUNMT0NLU19QRVJfU0VDOwogCiAgICBwcmludGYoIlxu5pyA6L+R6Zqj5rOV44Gr44KI44KL5pyA55+t5beh5Zue57WM6Lev44Gu57eP56e75YuV6Led6Zui44GvJWxm44Gn44GZ44CCXG4iLCB0ZGlzKTsKICAgIGZwcmludGZfcyhmcDMsICJcbuacgOi/kemao+azleOBq+OCiOOCi+acgOefreW3oeWbnue1jOi3r+OBrue3j+enu+WLlei3nembouOBryVsZuOBp+OBmeOAglxuIiwgdGRpcyk7CiAKICAgIHByaW50Zigi5o6i57Si5Yem55CG5pmC6ZaTJWxm56eSXG4iLCBzZWFyY2hpbmdfdGltZSk7CiAgICBmcHJpbnRmX3MoZnAzLCAi5o6i57Si5Yem55CG5pmC6ZaTJWxm56eSXG4iLCBzZWFyY2hpbmdfdGltZSk7CiAKICAgIGZyZWUoY2l0eWluZm8pOwogICAgZnJlZSh6KTsKICAgIGZyZWUoenopOwogCiAgICByZXR1cm4gMDsKfQ==
compilation info
prog.c: In function ‘main’:
prog.c:27:35: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
struct CityInfo cityinfo[MaxN]{{ 0, 0.0, 0.0 }};
^
prog.c:27:39: warning: left-hand operand of comma expression has no effect [-Wunused-value]
struct CityInfo cityinfo[MaxN]{{ 0, 0.0, 0.0 }};
^
prog.c:27:44: warning: left-hand operand of comma expression has no effect [-Wunused-value]
struct CityInfo cityinfo[MaxN]{{ 0, 0.0, 0.0 }};
^
prog.c:27:38: warning: statement with no effect [-Wunused-value]
struct CityInfo cityinfo[MaxN]{{ 0, 0.0, 0.0 }};
^
prog.c:27:50: error: expected ‘;’ before ‘}’ token
struct CityInfo cityinfo[MaxN]{{ 0, 0.0, 0.0 }};
^
prog.c:31:5: warning: implicit declaration of function ‘scanf_s’ [-Wimplicit-function-declaration]
printf("範囲の下限aを指定して下さい____> "); scanf_s("%lf", &a);
^
prog.c:35:5: error: unknown type name ‘errno_t’
errno_t err, err_r;
^
prog.c:36:5: warning: implicit declaration of function ‘fopen_s’ [-Wimplicit-function-declaration]
err = fopen_s(&fp1, "citydata_info.csv", "w");
^
prog.c:51:9: error: ‘cityinfo’ undeclared (first use in this function)
cityinfo[n].x = a + (b - a) * ux;
^
prog.c:51:9: note: each undeclared identifier is reported only once for each function it appears in
prog.c:94:5: warning: implicit declaration of function ‘fscanf_s’ [-Wimplicit-function-declaration]
while ((fscanf_s(fp1, "%d,%lf,%lf", &cityinfo[n].citynumber, &cityinfo[n].x, &cityinfo[n].y)) == 3){
^
prog.c:96:9: warning: implicit declaration of function ‘fprintf_s’ [-Wimplicit-function-declaration]
fprintf_s(fp2, "%d,%lf,%lf\n", cityinfo[n].citynumber, cityinfo[n].x, cityinfo[n].y);
^
prog.c:118:5: error: unknown type name ‘errno_t’
errno_t err3;
^
prog.c:22:5: warning: variable ‘city_number’ set but not used [-Wunused-but-set-variable]
int city_number;
^
stdout