Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- // o tabela de int-uri
- // o tabela de tabele de int-uri
- // numarul de elemente din fiecare vector
- // numarul de vectori
- typedef struct {
- int numar_de_vectori; // numarul de vectori
- int *lungime_individuala; // numarul de elemente din fiecare vector
- int **vectori; // o tabela de tabele de int-uri
- } TabelMare;
- #define MAX_LINE_LEN 10000
- #define MAX_LINE_INT_COUNT 100
- int main() {
- // 3 4 2
- // 10 11
- // 4
- TabelMare tab;
- /*
- tab.numar_de_vectori = 3;
- tab.lungime_individuala = (int *) calloc(sizeof(int), tab.numar_de_vectori);
- tab.vectori = (int **) calloc(sizeof(int *), tab.numar_de_vectori);
- tab.lungime_individuala[0] = 3;
- tab.lungime_individuala[1] = 2;
- tab.lungime_individuala[2] = 1;
- for (int i = 0; i < tab.numar_de_vectori; ++i) {
- tab.vectori[i] = (int *) calloc(sizeof(int), tab.lungime_individuala[i]);
- }
- tab.vectori[0][0] = 3;
- tab.vectori[0][1] = 4;
- tab.vectori[0][2] = 2;
- tab.vectori[1][0] = 10;
- tab.vectori[1][1] = 11;
- tab.vectori[2][0] = 4;
- */
- FILE *f = fopen("../in.txt", "r");
- if (f == NULL) {
- return 1;
- }
- fscanf(f,"%d\n", &tab.numar_de_vectori);
- tab.lungime_individuala = (int *) calloc(sizeof(int), tab.numar_de_vectori);
- tab.vectori = (int **) calloc(sizeof(int *), tab.numar_de_vectori);
- int rez_fgets, nr_de_specificatori_cititi, nr_de_caractere_citite, nr_citit;
- int locatie_curenta_in_linie;
- int index_element_citit, index_linie_curenta;
- char *linie = (char *) calloc(sizeof(char), MAX_LINE_LEN);
- int *linie_int = (int*) calloc(sizeof(int ), MAX_LINE_INT_COUNT);
- index_linie_curenta = 0;
- while (1) {
- rez_fgets = fgets(linie, MAX_LINE_LEN, f);
- if (rez_fgets == NULL || rez_fgets == EOF) {
- break;
- }
- // printf("-:%s", linie);
- locatie_curenta_in_linie = 0;
- nr_de_specificatori_cititi = 1;
- index_element_citit = 0;
- while (nr_de_specificatori_cititi == 1) {
- nr_de_specificatori_cititi = sscanf(linie + locatie_curenta_in_linie, "%d%n",
- &nr_citit, &nr_de_caractere_citite);
- if (nr_de_specificatori_cititi == 1) {
- // printf("%d ", nr_citit);
- linie_int[index_element_citit++] = nr_citit;
- // mut pointerul dupa caracterele citite
- locatie_curenta_in_linie += nr_de_caractere_citite;
- }
- }
- if(index_element_citit == 0){
- continue;
- }
- tab.lungime_individuala[index_linie_curenta] = index_element_citit;
- tab.vectori[index_linie_curenta] = (int *) calloc(sizeof(int), tab.lungime_individuala[index_linie_curenta]);
- memcpy(tab.vectori[index_linie_curenta], linie_int, sizeof(int) * tab.lungime_individuala[index_linie_curenta]);
- index_linie_curenta++;
- }
- for (int i = 0; i < tab.numar_de_vectori; ++i) {
- printf(">>> ");
- for (int j = 0; j <tab.lungime_individuala[i]; ++j) {
- printf("%d ", tab.vectori[i][j]);
- }
- printf("\n");
- }
- free(linie);
- free(linie_int);
- free(tab.vectori);
- free(tab.lungime_individuala);
- fclose(f);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement