Advertisement
Dr4noel

Matrice cu un "for" (folosind pointer)

Dec 12th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.39 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4.  
  5.  
  6. int *alocare(int linii, int coloane) {              //Functi de alocare memorie pentru un pointer simplu.
  7.     int *p;
  8.     if ((p = (int*)malloc(sizeof(int)*linii*coloane)) == NULL) {
  9.         printf("Nu aveti memorie suficienta!");
  10.         _getch();
  11.         exit(0);
  12.     }
  13.     return p;
  14. }
  15.  
  16. void main(){
  17.     int linii, coloane, *p;
  18.     int i, *init;
  19.  
  20.     printf("Introduceti numarul de linii: \n");
  21.     scanf_s("%d", &linii);
  22.  
  23.     printf("Introduceti numarul de coloane: \n");
  24.     scanf_s("%d", &coloane);
  25.  
  26.     p = alocare(linii, coloane);                    //Apelam  functia pentru alocarea de memorie pentru pointer
  27.  
  28.     init = p;                                       //In variabila "init" tinem adresa de inceput a pointerului
  29.     for (i = 0; i < linii*coloane; i++) {
  30.         printf("V[%d][%d]= ", i / coloane, i%coloane);
  31.         scanf_s("%d", p);
  32.         p++;                                        //Incrementarea adresei se face pentru a nu scrie o valoare
  33.     }                                               //peste o valoare(pentru fiecare valoare ne trebuie o adresa noua)
  34.  
  35.  
  36.     p = init;                                       //Initializam adresa pointerului cu adresa lui INITIALA                                        
  37.     for (i = 0; i < linii*coloane; i++) {
  38.         if ((i % coloane) == 0) {                   //Atunci cand restul pozitiilor si al coloanelor
  39.             printf("\n");                           //este 0, se va trece pe un nou rand
  40.         }
  41.         printf("%d ", *p);
  42.         p++;                                        //Se incrementeaza adresa pentru a lua valorile din adresele
  43.     }                                               //care urmeaza dupa cea initiala
  44.     _getch();
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement