[c] wykreslanie elementów z tablicy
-
- Użytkownik
- Posty: 696
- Rejestracja: 5 lut 2008, o 15:38
- Płeć: Mężczyzna
- Lokalizacja: marki
- Podziękował: 165 razy
- Pomógł: 20 razy
[c] wykreslanie elementów z tablicy
jak napisać program w C
Mamy listę 1000 elementów (ponumerowanych od 1 do 1000). Wykreślamy co siódmy element (tzn. element nr 7, 14 itd.). Po dojściu do końca listy kontynuujemy od jej początku omijając elementy już wykreślone. Procedurę prowadzimy aż zostanie 10 ostanich elementów. Jakie to elementy?
Mamy listę 1000 elementów (ponumerowanych od 1 do 1000). Wykreślamy co siódmy element (tzn. element nr 7, 14 itd.). Po dojściu do końca listy kontynuujemy od jej początku omijając elementy już wykreślone. Procedurę prowadzimy aż zostanie 10 ostanich elementów. Jakie to elementy?
-
- Użytkownik
- Posty: 374
- Rejestracja: 21 cze 2007, o 11:28
- Płeć: Mężczyzna
- Lokalizacja: Łostowice
- Pomógł: 146 razy
[c] wykreslanie elementów z tablicy
Obawiam się że wynik działania przedstawionego wyżej programu może nie do końca być tym co autor miał na myśli.
Kod: Zaznacz cały
#include <stdio.h>
#define N 1000
#define M 10
#define D 7
int main() {
static int i, j, k = -1, t[N];
/* ustawianie tablicy */
for(i = 0; i < N; t[i++] = 1);
/* usuwanie 990 elementów */
for(i = 0; i < (N - M); i++) {
for(j = 0; j < D; ) {
if (t[(k + 1) % N])
j++;
k = (k + 1) % N;
}
t[k] = 0;
}
for(i = 0; i < N; i++) {
if (t[i])
printf("%d, ", i + 1);
}
return 0;
}
-
- Użytkownik
- Posty: 696
- Rejestracja: 5 lut 2008, o 15:38
- Płeć: Mężczyzna
- Lokalizacja: marki
- Podziękował: 165 razy
- Pomógł: 20 razy
[c] wykreslanie elementów z tablicy
Mam pytanie który program działa poprawnie czy smiechowieca czy matshadowa czy ten poniższy?
Kod: Zaznacz cały
//Załączenie bibliotek
#include <stdio.h>
// Procedura zapisywania do tablicy liczb od 1 do 1 000
void tablicowanie(int *tablica)
{
int i,nr; // Deklaracja zmiennych typu całkowitego
// Pętla for tablicująca liczby od 1 do 1 000 w tablicy "tablica"
for(i=0, nr=1; i<1000; i++, nr++)
{
tablica[i]=nr; // Zapisywanie kolejnych liczb w tablicy "tablica"
}
}
// Koniec procedury "tablicowanie"
// Procedura wyświetlania liczb wykreślonych co siedem
void wyswietlenie(int *tablica)
{
int i,nr; // Deklaracja zmiennych typu całkowitego
printf("Pozostalymi liczbami sa:
");
// Pętla for wyświetlająca liczby wykreślonych co siedem
for(i=0; i<1000; i++)
{
if (tablica[i]==9999) // Jeżeli liczba w tablicy równa 9999
{
// Liczbą jest omijana
}
else // Jeżeli liczba w tablicy jest różna od 9999
{
printf("%d
", tablica[i]); // Wyświetlana jest na ekran
}
}
}
// Koniec procedury "wyswietlenie"
// Procedura wykreślająca liczby co siódmą z zakresu od 1 do 1 000
void cosiodma(int *tablica)
{
int i, g, x, suma, sortowanie, temp; // Deklaracja zmiennych typu całkowitego
// Pętla for wykreślająca liczby co siódmą z zakresu od 1 do 1 000
for (g=0; g<32; g++)
{
// Pętla for wykreślająca liczby
for(i=6, suma=0; i<=1000; i=i+7)
{
tablica[i]=9999;
}
// Pętla for sorująca tablice "liczby" rosnąco
for (sortowanie=0; sortowanie<1000; sortowanie++) // Sortowanie jest powtarzane 1000 razy
{
// Pętla for porównująca liczby w tablicy
for(i=0, x=1; x<1000; i++, x++)
{
if (tablica[x]<tablica[i]) // Jak pierwsza liczba "tablica[x]" jest większa od drugiej liczby "tablica[i]
{
// Liczby te są zamieniane miejscami
temp=tablica[i];
tablica[i]=tablica[x];
tablica[x]=temp;
}
}
}
}
}
// Koniec procedury "cosiodma"
// Początek programu
int main()
{
int tablica[1000]; // Deklaracja tablicy typu całkowitego
// Wyświetlenie tekstu
printf("Mamy liste 1000 elementow (ponumerowanych od 1 do 1000).
");
printf("Wykreslamy co siodmy element (tzn. element nr 7, 14 itd.).
");
printf("Po dojsciu do konca listy kontynuujemy od jej poczatku omijajac
");
printf("elementy juz wykreslone. Procedure prowadzimy az zostanie 10
");
printf("ostanich elementow. Jakie to elementy?
");
printf("Pogram rozwiazujacy to zadanie.
");
tablicowanie(tablica); // Wywołanie procedury zapisującej liczby od 1 do 1 000 w tablicy
cosiodma(tablica); // Wywołanie procedury wykreślającej liczby z tablicy co siódmą
wyswietlenie(tablica); // Wywołanie procedury wyświetlania liczb pozostałem w tablicy
system("PAUSE"); // Zatrzymanie programu
return 0;
}
// Koniec programu
-
- Użytkownik
- Posty: 374
- Rejestracja: 21 cze 2007, o 11:28
- Płeć: Mężczyzna
- Lokalizacja: Łostowice
- Pomógł: 146 razy
[c] wykreslanie elementów z tablicy
W celu sprawdzenia poprawności programu naljelpiej sprawdzić wynik ręcznie.
Przedstawiony ostatnio program zwraca wynik :
Natomiast skreślając liczby na kartce mamy po kolei
Zostaje zatem
103, 160, 166, 297, 404, 547, 724, 737, 757, 830
Najszybciej widać skreślenie liczby 1, która w przedstawionym algorytmie jest pomijana.
Przedstawiony ostatnio program zwraca wynik :
Kod: Zaznacz cały
Pozostalymi liczbami sa:
1
2
3
4
5
6
564
657
766
893
Kod: Zaznacz cały
7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98, 105, 112, 119, 126, 133, 140, 147, 154, 161,
168, 175, 182, 189, 196, 203, 210, 217, 224, 231, 238, 245, 252, 259, 266, 273, 280, 287, 294, 301,
308, 315, 322, 329, 336, 343, 350, 357, 364, 371, 378, 385, 392, 399, 406, 413, 420, 427, 434, 441,
448, 455, 462, 469, 476, 483, 490, 497, 504, 511, 518, 525, 532, 539, 546, 553, 560, 567, 574, 581,
588, 595, 602, 609, 616, 623, 630, 637, 644, 651, 658, 665, 672, 679, 686, 693, 700, 707, 714, 721,
728, 735, 742, 749, 756, 763, 770, 777, 784, 791, 798, 805, 812, 819, 826, 833, 840, 847, 854, 861,
868, 875, 882, 889, 896, 903, 910, 917, 924, 931, 938, 945, 952, 959, 966, 973, 980, 987, 994, 1, 9,
17, 25, 33, 41, 50, 58, 66, 74, 82, 90, 99, 107, 115, 123, 131, 139, 148, 156, 164, 172, 180, 188,
197, 205, 213, 221, 229, 237, 246, 254, 262, 270, 278, 286, 295, 303, 311, 319, 327, 335, 344, 352,
360, 368, 376, 384, 393, 401, 409, 417, 425, 433, 442, 450, 458, 466, 474, 482, 491, 499, 507, 515,
523, 531, 540, 548, 556, 564, 572, 580, 589, 597, 605, 613, 621, 629, 638, 646, 654, 662, 670, 678,
687, 695, 703, 711, 719, 727, 736, 744, 752, 760, 768, 776, 785, 793, 801, 809, 817, 825, 834, 842,
850, 858, 866, 874, 883, 891, 899, 907, 915, 923, 932, 940, 948, 956, 964, 972, 981, 989, 997, 5, 15
, 24, 34, 44, 53, 62, 72, 81, 92, 101, 110, 120, 129, 138, 149, 158, 167, 177, 186, 195, 206, 215, 2
25, 234, 243, 253, 263, 272, 282, 291, 300, 310, 320, 330, 339, 348, 358, 367, 377, 387, 396, 405,
415, 424, 435, 444, 453, 463, 472, 481, 492, 501, 510, 520, 529, 538, 549, 558, 568, 577, 586, 596,
606, 615, 625, 634, 643, 653, 663, 673, 682, 691, 701, 710, 720, 730, 739, 748, 758, 767, 778, 787,
796, 806, 815, 824, 835, 844, 853, 863, 872, 881, 892, 901, 911, 920, 929, 939, 949, 958, 968, 977,
986, 996, 6, 18, 29, 39, 51, 61, 73, 85, 95, 106, 117, 128, 141, 151, 162, 173, 184, 194, 207, 218,
228, 240, 250, 261, 274, 284, 296, 306, 317, 328, 340, 351, 362, 373, 383, 395, 407, 418, 429, 439,
451, 461, 473, 485, 495, 506, 517, 528, 541, 551, 562, 573, 584, 594, 607, 618, 628, 640, 650, 661,
674, 684, 696, 706, 717, 729, 740, 751, 762, 773, 783, 795, 807, 818, 829, 839, 851, 862, 873, 885,
895, 906, 918, 928, 941, 951, 962, 974, 984, 995, 8, 20, 32, 46, 59, 71, 86, 97, 111, 124, 136, 150,
163, 176, 190, 201, 214, 227, 241, 255, 267, 279, 292, 305, 318, 332, 345, 356, 370, 382, 397, 410,
422, 436, 447, 460, 475, 487, 500, 513, 526, 537, 552, 565, 578, 591, 603, 617, 631, 642, 656, 668,
681, 694, 708, 722, 733, 746, 759, 772, 786, 799, 811, 823, 837, 849, 864, 877, 888, 902, 914, 927,
942, 954, 967, 979, 992, 4, 22, 37, 52, 67, 80, 96, 113, 127, 143, 157, 171, 187, 202, 219, 233, 248
, 264, 277, 293, 309, 324, 338, 354, 369, 386, 400, 414, 430, 445, 459, 477, 489, 505, 521, 535, 550
, 566, 582, 598, 611, 626, 641, 657, 671, 688, 702, 716, 732, 747, 764, 779, 792, 808, 822, 838, 855
, 869, 884, 898, 913, 930, 944, 960, 975, 990, 3, 23, 40, 57, 76, 93, 109, 130, 145, 165, 181, 199,
216, 235, 251, 269, 288, 304, 323, 341, 359, 375, 391, 411, 428, 446, 465, 480, 498, 516, 534, 554,
570, 587, 604, 622, 639, 659, 676, 692, 712, 726, 745, 765, 781, 800, 816, 832, 852, 870, 887, 905,
922, 937, 957, 976, 993, 12, 31, 54, 75, 94, 116, 135, 155, 178, 198, 220, 239, 258, 281, 299, 321,
342, 363, 381, 403, 423, 443, 467, 486, 508, 527, 545, 569, 590, 610, 632, 649, 669, 690, 713, 734,
754, 774, 794, 814, 836, 857, 878, 897, 919, 936, 961, 982, 1000, 26, 47, 69, 100, 121, 144, 169,
192, 212, 242, 265, 289, 313, 334, 361, 388, 408, 432, 456, 479, 503, 530, 555, 576, 600, 624, 648,
675, 698, 723, 743, 769, 790, 820, 843, 865, 890, 912, 935, 963, 985, 11, 38, 65, 89, 122, 152, 179,
208, 232, 260, 290, 316, 347, 374, 402, 431, 457, 488, 514, 543, 571, 599, 627, 655, 683, 709, 738,
766, 797, 827, 848, 879, 908, 934, 965, 991, 19, 55, 87, 118, 153, 185, 222, 249, 283, 314, 349, 380,
416, 449, 478, 512, 544, 579, 612, 645, 677, 705, 741, 775, 804, 841, 871, 904, 943, 970, 2, 43, 79
, 114, 159, 193, 230, 271, 307, 346, 389, 421, 464, 496, 536, 575, 614, 652, 689, 725, 761, 803, 845
, 880, 921, 953, 998, 36, 83, 132, 170, 211, 257, 302, 353, 394, 438, 484, 524, 563, 619, 664, 704,
753, 789, 831, 886, 926, 971, 16, 68, 125, 174, 226, 276, 331, 379, 437, 493, 542, 592, 636, 697, 75
0, 802, 856, 900, 950, 10, 64, 134, 191, 247, 312, 366, 426, 494, 557, 608, 667, 731, 788, 859, 916,
978, 45, 104, 183, 256, 326, 398, 468, 533, 601, 680, 755, 821, 893, 955, 30, 108, 204, 285, 365,
452, 522, 620, 699, 780, 860, 946, 27, 137, 223, 325, 412, 509, 593, 715, 810, 894, 988, 102, 209,
333, 440, 559, 660, 771, 876, 999, 142, 268, 390, 519, 647, 782, 925, 60, 200, 355, 502, 666, 828, 969
, 146, 298, 471, 685, 846, 48, 244, 454, 635, 867, 88, 337, 583, 813, 78, 372, 633, 933, 236, 561, 909, 275, 718, 13, 470, 947, 419, 983, 585
103, 160, 166, 297, 404, 547, 724, 737, 757, 830
Najszybciej widać skreślenie liczby 1, która w przedstawionym algorytmie jest pomijana.