MemDin: Array con calloc

13 array con calloc.html
#include <stdio.h>
#include <stdlib.h>

int main(){
	 int *p1;
	 int i;
	 
	 p1 = calloc(5,sizeof(int));
	 
	 for(i=0; i<5; i++){
	 	printf("Ingrese un numero: ");
	 	scanf("%d",&p1[i]);
	 }
	 printf("\n\nEl array es: \n");
	 for(i=0; i<5; i++){
	 	printf("%d ",p1[i]);
	 }
	printf("\n\n");
	
	system("pause");
	return 0;
}

MemDin: Pedir numeros array y ampliar con otros mas

12 pedir numeros array.html
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){

	int *p_array,*p_arrayResultante;
	int i;
	p_array = malloc(5*sizeof(int));
	//Pidiendo los primeros 5 numeros
	for(i=0;i<5;i++){
		printf("%i. Digite un numero: ",i+1);
		scanf("%i",&p_array[i]);
	}
	
	//Ampliando el arreglo a 10 numeros 
	p_arrayResultante = realloc(p_array,10*sizeof(int));
	printf("\n\n");
	
	//Pidiendo los 5 numeros siguientes
	for(i=5;i<10;i++){
		printf("%i. Digite un numero: ",i+1);
		scanf("%i",&p_arrayResultante[i]);
	}
	printf("\n\n\n");
	//Imprimiendo el arreglo resultante de 10 numeros
	for(i=0;i<10;i++){
		printf("%i.\n",p_arrayResultante[i]);
	}
	free(p_arrayResultante);
	return 0;
}

MemDin: Realloc, ampliar a 30 caracteres

11 realloc nombre 30 elem.html
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
	
	char *p_nombre, *p_nombrecompleto;
	p_nombre = malloc(10*sizeof(char));
	
	strcpy(p_nombre,"Jorge ");
	printf("El nombre es %s \n",p_nombre);
	
	p_nombrecompleto = realloc(p_nombre,30*sizeof(char));
	strcat(p_nombrecompleto, "Curso de C");	
	
	printf("El nombre completo es %s\n\n",p_nombrecompleto);
	free(p_nombrecompleto);
	
	
	system("pause");
	return 0;
}

MemDin: Asignar 1000 caracteres, double, lf

10 asignar 1000 caracteres.html
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TOPE 1000

int main(){
	
	double *p_array;
	int i;
	
	p_array = malloc(TOPE*sizeof(double));
	
	if(p_array==NULL){
		printf("No hay memoria suficiente.\n");
		return -1;
	}
	else{
		srand(time(NULL));
		for(i=0; i<TOPE; i++){
			p_array[i] = 1 + rand()%((TOPE+1)-1);
			printf("%d. Numero %.lf\n",i+1,p_array[i]);
		}
	}	
	
	system("pause");
	return 0;
}

MemDin: Reservar memo con calloc

09 calloc.html
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
	
	char *c, palabra[50];
	
	printf("Digite una palabra: ");
	gets(palabra);
	
	c = calloc(strlen(palabra)+1,sizeof(char));
	strcpy(c,palabra);
	
	printf("Palabra: %s \n\n", c);
	
	free(c);
	
	printf("Palabra despues de free: %s \n\n", c);
	
	system("pause");
	return 0;
}

MemDin: Pedir palabra y reservar memo

08 pedir palabra.html
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
	
	char palabra[50], *p_palabra;
	int longitud;
	
	printf("Digite una palabra (string): ");
	gets(palabra);
	
	longitud = strlen(palabra);
	
	p_palabra = malloc((longitud+1)*sizeof(char));
	
	strcpy(p_palabra,palabra); // pasa el valor de palabra al apuntador p_palabra
	
	printf("\nPalabra: %s",p_palabra);
	free(p_palabra);
	
	printf("\nPalabra dp de free: %s \n\n", p_palabra);	
	
	system("pause");
	return 0;
}

MemDin: Realloc, ampliar vector

07 ampliar vector realloc.html
#include <stdio.h>
#include <stdlib.h>

int main(){
	
	int *vector, *vectorConvertido;
	int i;
	vector = malloc(3*sizeof(int)); // reserva espacio para 3 elementos enteros
	
	vector[0] = 1;
	vector[1] = 2;
	vector[2] = 3;
	
	fflush(stdin);
	printf("Vector de 3 elementos:\n");
	for(i=0; i<3; i++){
		printf("%d ",vector[i]);
	}
	// Convertir vector
	vectorConvertido = realloc(vector,5*sizeof(int)); // Ampliar el vector a 5 elementos
	
	vectorConvertido[3] = 4;
	vectorConvertido[4] = 5;
	
	fflush(stdin);
	
	printf("\n\nVector ampliado a 5 elementos:\n");
	for(i=0; i<5; i++){
		fflush(stdin);
		printf("%d ",vectorConvertido[i]);
	}
	
	system("pause");
	return 0;
}

MemDin: Liberar memoria, free

06 Liberar memo free.html
#include <stdio.h>
#include <stdlib.h>

int main(){
	int *p1;
	p1 = malloc(sizeof(int));
	
	if(p1 == NULL){
		printf("Memoria llena.\n");
	}
	else{
		printf("Hay espacio disponible.\n");
		*p1 = 15;
		printf("\n\n%d ",*p1);
	}
	free(p1);
	
	printf("\n\n%d ",*p1);	
	
	system("pause");
	return 0;
}

MemDin: Malloc, reservar para nombre

05 malloc nombre.html
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
	char nombre[20], *pnombre;
	int longitud;
	
	strcpy(nombre, "Jorge");
	longitud = strlen(nombre);
	
	printf("%d", longitud);
	pnombre = malloc((longitud+1)*sizeof(char));
	
	strcpy(pnombre,nombre);
	printf("Nombre: %s", pnombre);
	
	
	
	system("pause");
	return 0;
}

MemDin: Malloc, rellenar arreglo

04 malloc llenar arreglo.html
#include <stdio.h>
#include <stdlib.h>

int main(){
	
	int i;
	int *p1 = malloc(4*sizeof(int)); //asigna para arreglo de 4 int
	int *p2 = malloc(sizeof(int[4])); // otra forma de asignar para arreglo de 4 int
	int *p3 = malloc(4*sizeof *p3); // otra forma de lo mismo
	
	if(p1){
		for(i=0; i<4; i++){
			p1[i] = i*i;
		for(i=0; i<4; i++){
			printf("p1[%d] == %d\n",i, p1[i]);
		}
		}
	}
	
	free(p1);
	free(p2);
	free(p3);	
	
	system("pause");
	return 0;
}

MemDin: Malloc, entero, float, char

03 malloc.html
#include <stdio.h>
#include <stdlib.h>

int main(){
	int *a;
	float *b;
	char *c;
	//int x;
	
	a = malloc(sizeof(int));
	b = malloc(sizeof(float));
	c = malloc(sizeof(char));
	
	*a = 5;
	*b = 5.54;
	*c = 'h';
	
	printf("Un entero: %d \n",*a);
	printf("Un float: %.2f \n",*b);
	printf("Un caracter: %c \n",*c);
	
	//x = sizeof(int);
	//printf("%d ",x);	
	
	system("pause");
	return 0;
}

MemDin: Malloc, array

02 malloc array.html
#include <stdio.h>
#include <stdlib.h>

int main(){
	
	int * array;
	array = (int*)malloc(sizeof(int)*8);
	
	if(array != NULL){
		printf("Memoria no se ha podido asignar.\n");
	}
	else{
		printf("Memoria asignada.\n");
	}
	free(array);
	
	system("pause");
	return 0;
}

MemDin: Malloc, reserva entero

01 malloc entero.html
#include <stdio.h>
#include <stdlib.h>

int main(){
	
	int* entero;
	entero = (int*)malloc(4);
	
	if(entero != NULL){
		printf("La memoria se ha otorgado.\n");
	}
	else{
		printf("Error al asignar memoria.\n");
	}
	
	system("pause");
	return 0;
}

Recursion: Fibonacci recursivo

fibonacci recursion.html
#include <stdio.h>

int fibonacci();

int main(){
	
	int num, i;
	
	printf("Ingrese un numero: ");
	scanf("%d",&num);
	
	for(i = 0; i<num; i++){
		printf("%d ",fibonacci(i));
	}
	
	
	system("pause");
	return 0;
}

int fibonacci(n){
	
	if(n==0 || n==1){
		return 1;
	}
	else{
		return (fibonacci(n-1)+fibonacci(n-2));
	}
	
	
}

String: largo cadena. strlen

strlen largo cadena.html
#include <stdio.h>
#include <string.h>

int main(){
	
	char array[200];
	int largo;
	
	printf("Escribe algo: ");
	gets(array);
	
	largo = strlen(array);
	
	printf("El largo del texto es %d caracteres\n",largo);
	
	
	
	system("pause");
	return 0;
}

String: Primeras letras de cadena

primeras letras de cadena.html
#include <stdio.h>
#include <string.h>

int main(){
	char texto1[40], texto2[40], texto3[30];
	
	printf("Escribe una frase: ");
	gets(texto1);
	strcpy(texto2,texto1);
	
	printf("\n\nUna copia de tu frase es: %s ", texto2);
	strncpy(texto3, texto1, 10);
	printf("\n\nY sus 10 primeras letras son %s\n", texto3);
	
	system("pause");
	return 0;
}

String: Invertir cadena. strrev

invertir cadena strrev.html
#include <stdio.h>
#include <string.h>

int main(){
	
	char cad1[100];
	
	printf("Ingresa palabra:");
	gets(cad1);
	
	strrev(cad1);
	
	printf("Cadena invertida %s: ",cad1);
	
	system("pause");
	return 0;
}

String: Insertar subca en cad

insertar subca en cadena.html
#include <stdio.h>
#include <string.h>

void insertar(char cadena[], int longitud);

int main(){
	
	char cadena1[200];
	int tamano;
	
	printf("Introduce una cadena: ");
	gets(cadena1);
	
	tamano = strlen(cadena1);
	
	insertar(cadena1,tamano);
	
	
	system("pause");
	return 0;
}

void insertar(char cadena[], int longitud){
	char aux[200], aux2[200], aux3[200];
	int i, p, min, max, longaux;
	
	printf("Introduce texto que quieres insertar: ");
	gets(aux);
	
	longaux = strlen(aux);
	aux[longaux-1] = '\0';
	
	printf("Inserte la posicion en donde quiere la insercion: ");
	scanf("%d",&p);
	fflush(stdin);
	
	for(i=0; i<p; i++){
		aux2[i]=cadena[i];
	}
	
	longaux = strlen(aux2);
	aux2[longaux] = '\0';
	strcat(aux2,aux);
	
	printf("aux2+aux = %s\n",aux2);
	
	max = longitud-p;
	for(i=0; i<max; i++){
		aux3[i] = cadena[p];
		p++;
	}
	strcat(aux2,aux3);
	printf("Final: %s",aux2);
}

String: Eliminar caracteres

eliminar caracteres.html
#include <stdio.h>
#include <string.h>

void eliminar(char cadena[]);

int main(){
	char texto[200];
	
	printf("Escriba un texto: ");
	gets(texto);
	
	eliminar(texto);	
	
	system("pause");
	return 0;
}

void eliminar(char cadena[]){
	char aux[200];
	int n, i, longitud, resto;
	
	printf("Cuantos caracteres quieres eliminar: ");
	scanf("%d",&n);
	fflush(stdin);
	
	longitud = strlen(cadena);
	resto = longitud - n;
	
	if(n<longitud){
		for(i=0; i<resto; i++){
			aux[i] = cadena[n];
			n++;
		}
		printf("Su texto es: %s\n longitud = %d\n",aux,resto);
	}
	else{
		printf("No se pueden eliminar mas caracteres de los que ha escrito.\n\n");
	}
}

String: Decimal a cadena

decimal a cadena.html
#include <stdio.h>
#include <stdlib.h>

int main(){
	
	int punto_decimal, signo;
	char *cadena;
	double valor = 3.141592653;
	
	cadena = _fcvt(valor, 8, &punto_decimal, &signo);
	printf("Valor: %.29f, cadena: '%s', punto decimal: %d, signo: %d\n", valor, cadena, punto_decimal, signo);	
	
	system("pause");
	return 0;
}

String: contar letras a, as, del

contar letras a as del.html
#include <stdio.h>
#include <string.h>

int main(){
	char texto[100];
	int i, a=0, as=0, del=0, largo;
	
	printf("Ingresa un texto: ");
	gets(texto);
	
	largo = strlen(texto);
	
	while(texto[i] != '\n'){
		if(texto[i] == 'a'){
			a++;
			if(texto[i+1] == 's'){
				as++;
			}
		}
		if((texto[i] == 'd') && (texto[i+1] == 'e') && (texto[i+2] == 'l')){
			del++;
		}
		i++;
	}
	printf("La letra a aparece %d veces\n",a);
	printf("'as' aparece %d veces\n",as);
	printf("'del' aparece %d veces\n",del);	
	
	system("pause");
	return 0;
}