rendered paste body/*izveidot divizmera dinamisko masivu kura elementi ir short int tipa.nepiecieshams:+ laut ievadit masiva elementus,+ mainit ta rindu garumus un elementus rindas+ izvadit pirmskaitlu skaitu rindas*/#include <stdlib.h>#include <stdio.h>#include <conio.h> // DOS API, not portableint main() { int input = 0, // ievades buferis autofill = 1, // automatiska aizpilde exit = 0, // vai beigt? [1 == nekad neatkartot] cnt, cnt2, cnt3; // skaititaji short** root; // koka sakne root = calloc(1, sizeof(short*)); // stobrs root[0] = calloc(1, sizeof(short )); // pirmais (dienesta) zars - masiva garums do { // galvenais cikls clrscr(); // DOS API printf("-=-=-=-=-=-=-=-=-=-=-=-\n"); for (cnt = 1; cnt <= root[0][0]; cnt++) { // cikls zaru izvadei printf("-%d- [%d] ", cnt, root[cnt][0]); // zara numurs for (cnt2 = 1; cnt2 <= root[cnt][0]; cnt2++) // cikls ciparu izvadei printf(" %d", root[cnt][cnt2]); printf("\n"); } printf("-----------------------\n"); // pamaciba printf(" 0 - izmainit X ass garumu\n \[n] - izmainit n-tas Y ass garumu\n \-1 - iziet\n \-2 - automatisks ievades rezhims\n \-3 - manuals ievades rezhims\n \-4 - pirmskaitlu skaits rindas\n \ Izvele: "); scanf("%d", &input); // izvelne switch (input) { // ievades apstrade case 0: // zaru skaits printf("Ievadiet jaunu rindu skaitu: "); scanf("%d", &input); if (input >= 0) { for (cnt = root[0][0]; cnt >= input + 1; cnt--) free(root[cnt]); // atbrivot zarus, kas nebus aizsniedzami pec zaru skaita mainas root = realloc(root, sizeof(short*) * (input+1)); for (cnt = root[0][0]+1; cnt <= input; cnt++) root[cnt] = calloc(1, sizeof(short)); // izveidot jaunus zarus root[0][0] = input; // saglabat jaunu zaru skaitu } else { printf("Rindu skaits nevar but mazaks par 0\n"); getch(); // DOS API } break; case -1: // izeja exit++; break; case -2: autofill = 1; printf("Automatiska skaitlu ievade IESLEGTA\n"); break; case -3: autofill = 0; printf("Automatiska skaitlu ievade IZSLEGTA\n"); break; case -4: printf("Pirmskaitli: \n"); for (cnt = 1; cnt <= root[0][0]; cnt++) { // cikls zaru izvadei printf("-%d- ", cnt); cnt3 = root[cnt][0]; // pirmskaitlu skaits zara for (cnt2 = 1; cnt2 <= root[cnt][0]; cnt2++) { // cikls skaitliem// if ((root[cnt][cnt2] == 1) || (root[cnt][cnt2] == 2)) {// cnt3--;// printf("%d ", root[cnt][cnt2]);// break;// } else { for (input = 2; input < root[cnt][cnt2]; input++) { // meklet dalitajus if (!(root[cnt][cnt2] % input)) { // ja tiek atrasts nepirmskaitlis cnt3--; // samazinat pirmskaitlu skaitu break; // ne turpinat mekleshanu } } if ((input >= root[cnt][cnt2] - 1) || (root[cnt][cnt2] == 1) || (root[cnt][cnt2] == 2)) // ja ir pirmskaitlis printf("%d ", root[cnt][cnt2]);// } } printf(":: %d pirmskaitli\n", cnt3); } getch(); break; default: // zara lapu skaita izmaina if ((input > 0) && (input <= root[0][0])) { // ievades parbaude printf("Ievadiet jaunu skaitlu skaitu: "); cnt = -1; while (cnt < 0) { scanf("%d", &cnt); if (cnt < 0) printf("Skaitlu skaits nevar but mazaks par 0\n"); } root[input] = realloc(root[input], sizeof(short) * cnt+1); // izmainit zara garumu cnt3 = root[input][0]; //saglabat iepriekshejo skaitlu skaitu root[input][0] = cnt; // saglabat jaunu zara garumu printf("Vadit skaitlus no jauna? (1/0) "); scanf("%d", &cnt2); if (cnt2) cnt3 = 1; for (cnt = cnt3+1; cnt <= root[input][0]; cnt++) // iteracija pa zara lapam if (autofill) root[input][cnt] = rand() % 127; // automatiska aizpilde else { printf("%d-as rindas %ds elements: ", input, cnt); // manuala ievade do {// flushall(); scanf("%d", &cnt2);// flushall(); if (cnt2 < 0) printf("Skaitlis nevar but mazaks par 0\n"); } while (cnt2 < 0); root[input][cnt] = cnt2; } } else { printf("Nepareizs rindas numurs\n"); getch(); // DOS API } } } while (!exit); // atkartot darbibas kamer exit <= 0 for (cnt = root[0][0]; cnt >= 0; cnt--) // pie izejas atbrivot zarus... free(root[cnt]); free(root); // ...un stobru return EXIT_SUCCESS;}