Cod sursa(job #2072277)

Utilizator justsomedudePalade Thomas-Emanuel justsomedude Data 21 noiembrie 2017 17:49:30
Problema Potrivirea sirurilor Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 2.57 kb
#include<stdio.h>
#include <stdlib.h>


int main ()
{
  int *v;
  int nr, i, j, k, n;
  int *a, *b, nr_a, nr_b;

  scanf("%d%d", &n, &nr);
  v = malloc(n*sizeof(int));

  for (i=0; i<n; i++)
  scanf("%d", &v[i]);
  
   a = calloc(n, sizeof(int));
   if (a == NULL) return 0;
   b = calloc(n, sizeof(int));
   if (b == NULL) return 0;
  
   j=-1; k=-1;

   for (i=0; i<n; i++)
      printf("%d ", v[i]);

   for (i=0; i<n; i++)
      if (v[i] > nr)
         a[++j] = v[i];
      else
	 b[++k] = v[i];


   for (i=0; i<j; i++)
   printf("%d ", a[i]);
 
   printf("\n");

    for (i=0; i<k; i++)
   printf("%d ", b[i]);

   return 0;
}




--------------------------------------------------------------------------------


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


int **get_matrix(int n, int m)
{
	int i, j;
	int **mat;

	mat = malloc(n * sizeof(int *));
	if (mat == NULL) {
		return NULL;
	}

	for (i = 0; i < n; i++) {
		mat[i] = calloc(m , sizeof(int));
		if (mat[i] == NULL) {
			for (j = 0; j < i; j++) {
				free(mat[j]);
			}
			
			free(mat);
			return NULL;
		}
	}

	return mat;
}

void free_matrix(int ***mat, int n)
{
	int i;

	for (i = 0; i < n; i++) {
		free((*mat)[i]);
	}

	free(*mat);
	*mat = NULL;
}

void read_matrix(int **mat, int n, int m)
{
	int i, j;

	for (i = 0; i < n; i++) {
		for (j = 0; j < m; j++) {
			scanf("%d", &mat[i][j]);
		}
	}
}

void sum_lines(int **mat, int n, int m)
{
	int i, j, sum;

	for (i = 0; i < n; i++) {
		sum = 0;
		for (j = 0; j < m; j++) {
			sum += mat[i][j];
		}
		printf("Suma elementelor de pe linia %d este %d\n", i, sum);
	}
}

void print_matrix(int **mat, int n, int m)
{
	int i, j;

	for (i = 0; i < n; i++) {
		for (j = 0; j < m; j++) {
			printf("%d ", mat[i][j]);
		}
		printf("\n");
	}
}

void copy_line(int **mat, int *v, int n, int m, int line)
{
       int i, j;
       v = malloc (m*sizeof(int));
       if (v == NULL) 
	exit(0);

       printf("\n");

       for (j = 0; j < m; j++) 
	  v[j] = mat[line][j];

       for (i = 0; i < m; i++)
           printf("%d ", v[i]); 
}

void new_line(int **mat, int *vector, int n, int m)
{
    ////// realloc pe matrice (n+1 linii * sizeof(*int))    

    mat[n+1] = calloc(m , sizeof(int));
      if (mat[n+1] == NULL) exit(0);
   mat[n+1] = vector;
}

int main(void)
{
	int n, m, line;
	int **matrix, *vector;


	scanf("%d%d%d", &n, &m, &line);
	
	matrix = get_matrix(n, m);


	if (matrix == NULL) {
		printf("Allocation error\n");
		return 1;
	}


	read_matrix(matrix, n, m);
	print_matrix(matrix, n, m);
	sum_lines(matrix, n, m);

        copy_line(matrix, vector, n, m, line);
	
	free_matrix(&matrix, n);

	return 0;
}