• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

struktura - odległości między punktami

Object Storage Arubacloud
0 głosów
227 wizyt
pytanie zadane 16 listopada 2020 w C i C++ przez ResCrove Obywatel (1,700 p.)

Moim zadaniem jest stworzenie programu który odczytuje z pliku współrzędne punktów a następnie wyszukuje parę punktów o najmniejszej odległości je dzielącej. W programie nie mogę zmieniać zawartości funkcji, jedynie mogę operować w mainie.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

struct point_t
{
    int x;
    int y;
};

struct point_t* set(struct point_t* p, int x, int y)
{
    if(p == NULL)
    {
        return NULL;
    }
    (*p).x = x;
    (*p).y = y;
    return p;
}

float distance(const struct point_t* p1, const struct point_t* p2, int *err_code)
{
    float zmienna = 0;
    if(p1 == NULL && err_code != NULL)
    {
        *err_code = 1;
        return -1;
    }
    if(p2 == NULL && err_code != NULL)
    {
        *err_code = 1;
        return -1;
    }
    if(err_code != NULL)
    {
        *err_code = 0;
    }
    if(err_code == NULL && p2 == NULL)
    {
        return -1;
    }
    if(err_code == NULL && p1 == NULL)
    {
        return -1;
    }
    zmienna = sqrt((p2->x - p1->x)*(p2->x - p1->x) + ((p2->y - p1->y)*(p2->y - p1->y)));
    return zmienna;
}

float zamiana(const struct point_t* p1, const struct point_t* p2, struct point_t* max, struct point_t* max1)
{
    max->x = p1->x;
    max->y = p1->y;
    max1->x = p2->x;
    max1->y = p2->y;
    return 0;
}

int main()
{
    struct point_t a, *p1;
    p1 = &a;
    struct point_t b, *p2;
    p2 = &b;
    struct point_t max, *pmax;
    pmax = &max;
    struct point_t max1, *pmax1;
    pmax1 = &max1;
    char filename[100];
    FILE *plik;
    FILE *plik1;
    int x = 0;
    int y = 0;
    int x1 = 0;
    int y1 = 0;
    int pozycja = 0;
    float dlugosc = 0;
    float maximum = 999999999999;
    int error = 0;
    int *p_error = 0;
    p_error = &error;
    int koniec = 0;
    int zmienna = 0;
    int licznik = 0;
    printf("Podaj nazwe pliku: ");
    scanf("%99s", filename);
    plik = fopen(filename, "r");
    if(plik == NULL)
    {
        printf("Couldn't open file");
        return 4;
    }
    plik1 = fopen(filename, "r");
    fseek(plik, 0, SEEK_END);
    koniec = ftell(plik);
    fseek(plik, 0, SEEK_SET);
    while(1)
    {
        //printf("%ld", ftell(plik));
        if(fscanf(plik, "%d %d", &x, &y) != 2)
        {
            fclose(plik);
            fclose(plik1);
            //printf("%ld %d", ftell(plik), koniec);
            printf("File corrupted");
            return 6;
        }
        set(p1, x, y);
        pozycja = ftell(plik);
        fseek(plik1, pozycja, SEEK_SET);
        while((licznik = fscanf(plik1, "%d %d", &x1, &y1)) == 2)
        {
            set(p2, x1, y1);
            dlugosc = distance(p1, p2, p_error);
            zmienna++;
            if(dlugosc < maximum && (p1->x != p2->x || p1->y != p2->y))
            {
                zamiana(p1, p2, pmax, pmax1);
                maximum = dlugosc;
            }
            if(fabs(dlugosc-maximum) < 0.0000001)
            {
                if(p1->x < pmax->x || p2->x < pmax1->x)
                {
                    zamiana(p1, p2, pmax, pmax1);
                }
            }
            //printf("%f {%f}[%d %d %d %d]\n", dlugosc, maximum, p1->x, p1->y, p2->x, p2->y);
        }
        fseek(plik, pozycja, SEEK_SET);
        if(pozycja == koniec)
        {
            break;
        }
    }
    if(zmienna <= 1)
    {
        fclose(plik);
        fclose(plik1);
        printf("File corrupted");
        return 6;
    }
    printf("%d %d %d %d\n", pmax->x, pmax->y, pmax1->x, pmax1->y);
    fclose(plik);
    fclose(plik1);
    return 0;
}

Dla pliku w którym znajduje się ponad 1000 linijek od razu wyskakuje błąd i komunikat File Corrupted

Na przykład takiego:

-204 -233
913 -735
564 962
-258 -132
-316 -887
32 -682
101 913
23 715
-556 -598
226 186
606 73
53 -657
-462 389
-737 228
563 152
912 172
-2 -225
-501 144
-593 -700
-714 -148
741 -197
565 647
321 -916
-277 -71
-951 -193
-402 -75
-360 -618
874 -533
-659 872
-272 77
750 402
-538 249
-956 -21
531 -133
424 -817
-934 -919
250 -272
844 -213
-390 -139
338 -623
939 -169
-817 -816
-1 -295
840 844
146 -708
431 -968
377 438
21 985
-497 -437
367 222
944 -819
73 258
745 157
700 443
-197 786
152 552
912 190
234 338
15 278
-208 -974
629 -222
-30 561
-504 40
-903 -491
-771 850
276 -949
-988 -784
-467 -461
177 682
-130 903
242 -505
-661 -773
959 -221
678 -813
64 -246
-160 -404
635 329
-650 17
710 701
566 -7
257 -195
332 -885
620 956
-282 -870
-413 140
329 417
-330 385
588 -9
-968 -123
-480 814
737 970
877 934
973 973
619 516
151 -633
830 -730
-477 955
856 -821
913 1000
-457 725
-982 -948
622 -129
-379 810
29 692
85 357
958 894
-458 -666
-129 843
-649 725
365 -71
10 587
-482 247
-734 -499
412 976
530 -706
-954 -219
-345 -852
314 242
322 535
131 -882
923 61
-218 927
806 466
191 203
-643 -814
240 -922
-195 -458
-923 198
684 -645
-864 -396
-783 303
303 883
-205 -930
536 3
-363 -512
265 309
46 -470
-675 -100
514 -768
-612 -430
-240 488
773 -247
797 -773
-267 399
875 -23
453 210
-891 624
990 770
-459 725
265 415
160 -515
-78 -927
411 -983
-804 941
316 295
99 -286
231 887
-898 238
596 -748
-525 710
-901 -809
-1 608
778 -258
847 -96
-774 -146
-941 -879
213 692
683 -462
-762 -995
193 -519
-210 -617
-828 315
310 599
-388 897
393 457
166 889
759 -110
527 47
-5 -797
-337 553
874 -978
86 -102
628 -954
149 850
470 -824
-494 -276
-173 -697
-409 254
-987 716
-884 -346
419 -493
863 -600
-567 744
-229 173
135 -404
786 934
915 -672
-973 399
-716 365
398 80
140 -708
691 157
-860 -798
-262 -362
983 771
935 395
143 -423
726 -412
209 426
237 -263
485 -13
624 281
-409 974
321 -281
113 -83
-749 -723
981 -806
-235 -411
377 489
829 652
985 675
367 -194
-417 -15
168 803
-377 614
592 540
15 475
-933 782
-907 -259
905 179
-983 584
-834 583
644 811
113 475
180 -957
983 256
912 260
381 27
-960 -958
-583 -648
532 -426
-593 481
727 94
-498 711
-759 785
-758 623
588 -262
-26 192
-32 -115
866 593
-911 839
-328 -623
86 -273
-816 608
-279 -24
87 -266
-858 451
-625 -533
-772 831
144 942
-387 30
-204 -96
-903 -593
-620 -39
-231 -924
-177 -839
22 -516
711 -787
-971 -290
482 -227
509 -595
-724 -379
716 -88
859 -332
-768 322
642 -804
146 -733
492 -302
276 -76
668 534
996 -811
-495 974
466 254
-164 -132
113 -689
82 -376
-710 378
275 -476
-826 370
551 105
885 199
713 -316
304 -92
374 975
812 -484
-741 -272
-19 134
-694 -706
-766 599
879 184
919 -960
129 -327
471 881
-873 -584
-49 -958
812 -790
342 638
57 721
-147 -232
63 -27
-122 225
-882 644
-842 -764
350 -47
602 -445
112 -766
-862 -845
-480 973
553 213
859 459
-744 -102
934 -970
-604 903
-461 983
-134 -967
-256 547
-172 -71
178 374
679 429
744 336
445 -228
211 732
-611 -353
468 -809
897 -415
159 434
-810 385
336 -212
555 182
-52 -887
-981 -753
-658 -131
-222 -716
-515 336
-307 -281
376 -902
417 341
-538 745
475 -942
114 302
675 -667
-736 -614
-277 -612
438 -265
927 -627
851 730
-276 808
-74 556
-693 518
357 -463
361 -264
170 863
-748 337
226 597
594 723
-404 407
893 573
296 64
-968 -826
776 -117
306 -984
-38 22
-26 116
868 743
-657 -608
509 690
123 141
-742 -569
520 -659
396 -593
220 745
-217 243
989 -824
-797 876
-71 93
571 697
-298 -142
-628 704
835 244
42 70
104 -792
922 -12
888 -402
-346 -364
-394 -710
-815 -414
-586 607
882 745
312 610
716 912
-129 -292
63 337
-927 427
343 -997
-148 980
-884 -963
-157 -186
-891 -20
-921 446
-33 -395
513 230
-319 15
460 768
-551 715
48 -196
667 771
-706 -178
135 572
81 -389
-48 -992
138 744
547 -118
-836 -75
-795 393
5 183
726 203
204 173
-694 570
120 -718
-8 -393
94 -47
967 898
389 -610
11 -633
438 -279
603 120
998 953
331 -735
187 335
-511 924
-270 533
725 105
560 976
-897 94
304 871
-624 -633
222 -406
-207 -282
-144 -160
-470 706
127 937
645 888
852 -244
-291 783
446 -733
577 304
-353 135
-621 679
-413 387
-905 966
588 939
-539 15
814 441
-855 194
436 676
-710 736
738 780
-97 -671
-361 504
661 330
582 -504
422 61
-969 331
55 371
-610 -68
-762 392
173 -382
-461 531
835 215
506 110
102 475
-197 -81
256 292
-253 785
549 745
625 -390
-397 669
662 142
691 -686
-934 212
547 -216
771 -692
-274 -4
338 -695
495 227
384 44
844 670
76 -47
-450 445
-360 650
377 -9
282 -137
849 -130
-132 909
-332 -56
-604 353
-967 -734
262 310
599 348
444 -846
792 178
-970 257
-526 125
-174 689
-124 617
-796 -587
-88 -608
847 131
546 118
482 747
7 -420
-424 443
-218 64
-150 599
-287 -465
-920 556
-629 -944
-984 -512
-146 -159
-388 839
833 418
-101 147
321 833
156 464
-234 9
698 -80
348 303
333 -775
971 -765
-883 -358
-608 -86
598 -793
785 -468
20 -793
-411 531
-93 -447
773 -681
797 848
323 190
267 826
-928 -334
-579 716
-526 697
298 844
-294 728
-931 -846
-585 -848
-872 939
860 -153
-836 -850
723 23
967 -429
-927 910
196 -115
-607 983
79 -469
594 365
859 800
-978 652
-879 745
677 -3
553 599
101 -569
-114 -289
263 639
-161 -330
-797 -900
713 748
-80 -275
129 405
202 -802
561 304
540 -573
-751 819
814 799
153 538
696 -201
925 -233
355 -393
762 229
-35 -649
452 4
-22 801
-20 333
-176 622
983 365
1000 731
473 -220
752 -405
-140 454
216 828
-884 -673
-701 88
678 501
763 -491
-835 -394
-13 -777
27 -402
-742 -69
-483 952
447 808
798 320
301 -142
-840 -201
742 -361
707 -444
325 151
-119 827
649 -430
-588 92
-834 942
713 591
-175 538
-217 -464
-795 -449
979 666
-446 658
-23 981
952 -402
142 -183
216 761
909 -309
448 -250
146 897
-974 109
416 -422
781 448
774 -679
605 -990
-607 -514
850 136
640 846
-616 -923
782 805
-29 -287
-418 770
-519 -198
887 16
-870 -999
-563 555
727 986
654 -878
-889 -13
-510 5
-563 201
-414 -570
147 603
-632 841
923 250
-299 801
-93 -536
40 -490
-787 -482
-361 58
-223 -91
345 2
283 -532
-105 452
419 -474
752 879
-613 -143
-407 -695
-24 -790
-181 -630
-218 -859
816 868
604 -642
980 768
92 421
645 -318
341 283
302 -262
-251 758
-261 -549
640 -807
111 -774
965 -434
-446 -805
-421 -396
673 -573
805 428
595 -150
349 -501
479 -984
-82 980
971 -789
-80 471
-868 -454
-343 -156
-954 202
891 266
-289 566
678 -727
-334 -936
846 -11
-699 -777
-670 369
-270 169
235 619
-625 861
-476 507
805 -287
-354 456
-430 -799
86 -112
755 248
-869 566
-496 274
-505 -877
160 831
-238 -846
474 -564
483 231
164 -648
807 117
-35 104
791 616
840 119
-42 7
718 875
-747 -799
923 765
872 -617
-439 286
926 256
-227 30
-133 619
64 830
403 188
-325 788
-28 -57
465 -13
-882 457
654 618
-201 -199
-335 372
902 -129
727 -605
-735 -9
49 -735
556 253
614 -381
411 475
748 -626
142 -192
-627 287
729 -368
-629 -735
208 -822
-178 -171
898 -709
790 -934
998 -522
-623 -689
446 -546
-783 283
-411 -17
13 -805
-679 -218
-177 -772
907 -638
-918 482
815 -200
181 -972
498 760
13 510
547 799
350 152
216 283
873 -126
913 -905
-956 -420
887 90
779 -678
-368 -744
162 -653
-752 411
745 -697
898 826
-330 690
434 -961
-404 -400
573 -885
0 -506
117 -324
-515 351
876 -918
761 -845
395 -614
-545 -785
903 311
-831 656
-501 -676
-216 875
202 -473
-300 599
-139 394
-508 924
196 710
603 -814
-773 -228
-641 968
224 -273
-286 -226
211 497
523 -399
-218 30
-374 -33
724 372
-709 -615
-759 -81
-503 -984
-553 307
-100 554
912 -886
928 31
719 567
760 -244
-443 -527
441 131
934 283
-783 -653
-966 -799
265 544
-876 866
-632 575
-830 179
-715 -527
136 176
-836 -424
-851 -238
361 601
-165 -21
-100 -119
-629 725
-212 341
536 690
233 111
944 -223
851 -950
-577 -324
715 -496
284 379
691 -655
918 -919
-895 905
770 298
921 -838
-32 -454
-842 828
-873 600
-844 219
-75 -471
765 -925
301 623
131 -414
442 928
990 -942
-329 650
-659 354
-810 -261
808 -596
351 332
883 660
103 146
684 -948
-663 -193
650 120
-729 -705
591 -895
719 106
457 -352
909 -321
-215 548
-778 193
422 -255
-648 647
-192 292
320 -301
-202 -910
-388 -374
-45 545
395 544
656 752
64 538
594 715
899 -926
507 111
723 207
512 732
937 499
955 -897
-85 -271
-212 -295
691 -551
-96 459
411 650
286 942
-27 -427
1 222
341 -639
138 944
-897 849
699 -119
-287 744
32 23
893 680
210 255
-575 -657
-65 557
-280 -627
737 896
327 -419
880 -50
-445 -63
-277 -943
-142 833
-957 59
93 262
-523 509
130 843
973 721
-920 221
270 432
-94 713
-945 430
-145 509
394 -827
-850 334
654 918
568 795
160 935
817 -318
-546 462
-864 36
-98 -922
-741 663
-467 -567
985 -354
782 203
-701 553
25 768
456 -374
703 102
837 970
412 937
-382 -26
-145 -580
172 -439
409 -8
-345 -673
64 -67
75 747
609 477
-677 310
218 509
-760 392
-704 -895
460 -30
-858 411
80 -566
-316 690
540 -23
-597 -91
-203 -818
122 -184
159 898
197 573
9 -183
775 -989
598 -853
-530 -749
-726 433
712 -748
-669 -410
843 -270
-706 -203
-726 -350
-714 -91
-626 645
-90 2
914 -170
757 110
601 -768
25 -753
811 202
-416 145
-866 -945
-933 -573
-730 -735
-986 -466
-903 -724
-281 -866
970 898
-875 269
552 -27
-852 566
-129 407
230 -388
968 692
-710 -562
292 -465
-480 402
-938 -469
345 631
287 -769
-967 992
-880 256
-30 993
510 863
791 -527
-430 352
758 -931
989 -251
-338 -627
-422 -668
126 362
-19 -470
-940 -972
-193 -19
0 -815
-267 -524
-762 -80
-25 -625
303 232
287 543
-615 188
340 346
-878 -601
168 116
-252 -257
-158 610
52 863
-259 969
-219 -899
-211 -181
-200 -231
377 220
116 395
-567 -557
-255 -836
-373 195
-569 -383
882 -256
734 -3
-344 641
442 -411
818 293
382 113
835 216
985 139
540 511
-924 881
913 -35
538 275
-226 174
-321 -593
-858 698
-591 -801
985 -227
394 -198
-578 139
-184 961
-117 -720
-571 618
-689 559
-537 -333
348 -278
-760 801
-720 -713
958 -856
842 705
-675 -274
242 -759
-577 -554
5 842
840 30
919 945
884 -799
-431 -110
113 -395
-281 -633
608 927
810 -454
747 -216
634 -487
-983 546
-364 339
478 603
-517 -526
644 452
15 -300
-129 293
-380 -418
-707 742
-268 817
725 880
548 -30
398 -600
549 -193
626 -811
430 664
-395 329
120 -211
674 729
-620 673
746 647
460 -685
-950 -121
-232 212
-567 -618
-102 462
770 -634
34 561
237 618
-770 -358
-191 81
-431 -645
-459 785
261 791
-1000 228
677 -113
-638 627
323 69
-199 400
-598 -570
306 -295
-381 -911
-752 487
136 -777
619 -864
-67 821
465 -423
320 -86
781 -12
630 -312
-667 657
678 -426
-744 -146
-801 -968
782 585
761 -643
482 339
506 783
523 -416
416 -784
-420 -637
-493 -292
-129 -700
291 -707
545 -927
56 252
488 694
-900 -533
-569 534
-906 185
-56 244
864 990
815 -596
453 -384
745 -122
531 334
12 -723
112 382
-554 -337
112 968
740 262
632 2
536 336
557 727
67 266
-961 211
-664 -757
526 -829
-859 240
257 690
-972 930
379 -250
306 653
-613 -978
-751 263
987 769
492 -514
759 931
-91 -364
-389 880
672 -190
934 244
227 831
-580 -594
-420 -389
-726 -348
219 172
713 -418
-629 -778
-52 -860
449 441
-573 659
929 309
973 -666
-474 712
133 69
75 -965
-98 -505
415 31
433 268
-547 -439
720 -468
656 527
913 990
-857 65
244 -953
-226 -704
-465 -366
431 956
747 -905
63 526
-534 147
-71 72
-487 21
281 493
-513 873
-844 640
-496 -370

Czy ktoś wie jak mogę usprawnić swój program aby takie długie też pliki także przetwarzał?

komentarz 16 listopada 2020 przez j23 Mędrzec (194,920 p.)
Nie lepiej te punkty wczytać do tablicy?
komentarz 18 listopada 2020 przez ResCrove Obywatel (1,700 p.)
niestety nie moge, jedyna tablica jaka może być to nazwa pliku

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 245 wizyt
0 głosów
3 odpowiedzi 224 wizyt
pytanie zadane 31 maja 2020 w C i C++ przez Dezmonths Początkujący (310 p.)
0 głosów
1 odpowiedź 671 wizyt

92,552 zapytań

141,399 odpowiedzi

319,533 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...