Sunteți pe pagina 1din 13

Repblica Bolivariana de Venezuela Ministerio Para el Poder Popular para la Educacin Universitaria Instituto Universitario de Tecnologa los Llanos

Valle de la pascua Edo Gurico PNFI seccin 2

Profesor: Francisco Salazar

Integrantes: Maikel Navarro Hernndez Jorge Rodrguez Miguel Hctor Gonzales

Ejercicios:
#include <conio.c> #include <stdlib.h> #include <stdio.h> int **mat; void main() { int i=0,j, n, m; clrscr(); printf("Cuantos elemntos tendr la matriz?\n"); scanf("%d", &n); scanf("%d", &m); mat=(int **)malloc(sizeof(int)*m); //doble puntero puts("\nLlenamos loe elementos:"); for(i=0; i<n; i++) { mat[i] = (int *)malloc(100); //array de punteros for(j=0; j<m; j++) scanf("%d", (*(mat+i)+j)); } printf("\nImprimimos el resultado:\n"); for(i=0; i<n; i++) { for(j=0; j<m; j++) printf(" %d", *(*(mat+i)+j)); //Como doble puntero // printf(" %d", *(mat[i]+j)); //Como array de puntteros // printf(" %d", mat[i][j]); //Como array bidimensional printf("\n"); } getch(); getch(); } }

//Programa que emplea un array de punteros #include <stdio.h> #include <conio.c> #include <stdlib.h> //int mat[?][25] int *mat[25];//MATRIZ DE PUNTEROS....SE MANTIENE LA PRIMERA DIMENSION y se obvia la sgunda void main() { int i=0, j, n, m; clrscr(); printf("Cuantos filas tendra la matriz?\n"); scanf("%d", &n); printf("Cuantas columnas tendra la matriz?\n"); scanf("%d", &m); *mat= (int *)malloc(n*sizeof(int)); puts("\nLlenamos loe elementos:"); for(i=0; i<n; i++) { mat[i] = (int *)malloc(sizeof(int)*m ); //Memoria para m elementos for(j=0; j<m; j++) scanf("%d",(*(mat+i)+j));

} printf("\nImprimimos el resultado:\n"); for(i=0; i<n; i++) { for(j=0; j<m; j++) printf(" %d",*(*(mat+i)+j)); printf("\n"); } getch(); getch(); } #include <conio.c> #include <stdio.h> void main() { int mat[] = {1,2,3,4}, *pmat, i; clrscr(); printf("\Empleamos notacion decimal\n"); printf("Hacemos que el puntero seale al primer elemento del array: pmat = mat"); pmat = mat; //pmat=&mat[0]; //ES LO MISMO QUE pmat =mat printf("\nComprobamos los valores: "); printf("\nDireccin de inicio del array: mat = %u", &mat[0]); getch(); printf("\nDireccin a que apunta pmat = %u", pmat); getch(); printf("\nImprimimos las direcciones de memoria y sus contenidos:\n"); for(i=0; i<4; i++) { printf("\n&mat[%u] = %u (pmat+%u) = %u ", i, &mat[i], i, (pmat+i)); printf(" mat[%u] = %u *(pat+%u) = %u" , i, mat[i], i, *(pmat+i)); } getch(); getch(); } //Programa que LLENA UN ARRRAY Y SE REFIERE A EL COMO UN PUNTERO A //UN GRUPO DE ARRRAYS CONTIGUOS #include <stdio.h> #include <conio.c> void main() { int x[2][3], fil, col; clrscr(); puts("Llenamos el array"); for(fil=0; fil<2; fil++) for(col=0; col<3; col++) { printf("x[%d][%d] = ", fil, col); scanf("%d", &x[fil][col]); } printf("\nImprimimos usando un puntero a un grupo de arrays:\n"); printf("\nPRIMERA FILA:\n"); for(col=0; col<3; col++) printf(" %d", (*x)[col]); printf("\nSEGUNDA FILA:\n"); for(col=0; col<3; col++)

printf(" %d", (*(x+1))[col]); getch(); getch(); } #include <stdio.h> #include <conio.c> void main() { char *cad[] = {"Esto es una cadena", "Y esto, otra"}, **p; int i=0; clrscr(); p=&cad[0]; do { puts(*(p+i)); getch(); i++; }while(**(p+i)!='\0'); //Tambien vale '\0' o 0 getch(); } /* Escribir los valores de un array. Versin con punteros */ #include <stdio.h> void main() { static int lista[] = {24, 30, 15, 45, 34}; int ind; int *plista = lista; for (ind = 0; ind < 5; ind++) printf("%d ", *plista++); }

// Array de punteros. Nos pide el nmero de filas y columnas #include <stdio.h> #include <conio.c> #include <stdlib.h> int *mat[1]; //mat[fil][col] ---> *mat[fil] void main() { int i, j, fil, col; clrscr(); puts("Nmero de filas?"); scanf("%d", &fil); puts("Numero de columnas?"); scanf("%d", &col); puts("Rellenamos el array:"); for(i=0; i<fil; i++) mat[i]=(int *)malloc(col*2); //reservo memoria for(i=0; i<fil; i++) for(j=0; j<col; j++) scanf("%d", (mat[i]+j)); printf("\nImprimimos el resultado:\n"); for(i=0; i<fil; i++) {

for(j=0; j<col; j++) printf("%d\t",*(mat[i]+j)); printf("\n"); } getch(); getch(); } #include <stdio.h> #include <conio.h> int main() { unsigned int r, *p1, **p2, ***p3, ****p4; r = 58; p1 = &r; p2 = &p1; p3 = &p2; p4 = &p3; printf("CONTENIDOS:\n"); printf("r = %u\n", r); printf("*p1 = %u\n", *p1); printf("**p2 = %u\n", **p2); printf("***p3 = %u\n", ***p3); printf("****p4 = %u\n", ****p4); printf("\nDIRECCIONES:\n"); printf("&r = %u\n", &r); printf("p1 = %u\n", p1); printf("&p1 = %u\n", &p1); printf("&p2 = %u\n", &p2); printf("*p2 = %u\n", *p2); printf("&p3 = %u\n", &p3); printf("*p3 = %u\n", *p3); printf("&p4 = %u\n", &p4); printf("*p4 = %u\n", *p4); printf("**p4 = %u\n", **p4); printf("***p4 = %u\n", ***p4); printf("****p4 = %u\n", ****p4);

getch(); return 1; } #include <stdio.h> #include <conio.c> int a; int *punt; //declaracin de puntero. void main(void) { a=57; //inicializacin de variable punt=&a; //asignacin de direccin al puntero. clrscr(); printf("a = %d", a); //imprimo valor de variable printf("\n&a = %#x", &a); //imprimo direccin variable apuntada (en hexadecimal) printf("\npunt = %#x ", punt); //imprimo la direccin guardada (la de la variable apuntada) printf("\n*punt = %d", *punt); //imprimo el contenido de la direccin apuntada. printf("\ntamao puntero %d", sizeof(punt)); getch();

} #include <stdio.h> #include <conio.c> void main() { char carac='A', *r; int a=12,b=45; int *p, *q; clrscr(); printf("Direccin de a=%p\n", &a); printf("Direccin de b=%p\n", &b); printf("a = %d b = %d\n", a, b); printf("Direccin de caract = %p\n", &carac); printf("carac = %c\n", carac); printf("Valor ASCII de carac = %d\n", carac); printf("Direccin de p = %p\n", &p); printf("Direccin de q = %p\n", &q); printf("Direccin de r = %p\n", &r); p = &a; q = &b; r = &carac; printf("El puntero p apunta a la direccin: %p\n", p); printf("Y su contenido es: %d\n", *p); printf("El puntero q apunta a la direccin: %p\n", q); printf("Y su contenido es: %d\n", *q); printf("El puntero r apunta a la direccin: %p\n", r); printf("Y el contenido de *r es: %d\n", *r); printf("Como caracter ASCII *r contiene: %c\n", *r); getch(); }

#include <stdio.h> #include <conio.c> void main() { char carac='A', *r; int a=12,b=45, c; int *p, *q; clrscr(); printf("Direccin de a=%p\n", &a); printf("Direccin de b=%p\n", &b); printf("a = %d b = %d\n", a, b); printf("Direccin de caract = %p\n", &carac); printf("carac = %c\n", carac); printf("Valor ASCII de carac = %d\n", carac); printf("Direccin de p = %p\n", &p); printf("Direccin de q = %p\n", &q); printf("Direccin de r = %p\n", &r); p = &a; q = &b; r = &carac;

printf("El puntero p apunta a la direccin: %p\n", p); printf("Y su contenido es: %d\n", *p); printf("El puntero q apunta a la direccin: %p\n", q); printf("Y su contenido es: %d\n", *q); printf("El puntero r apunta a la direccin: %p\n", r); printf("Y el contenido de *r es: %d\n", *r); printf("Como caracter ASCII *r contiene: %c\n", *r); getch(); }

// Programa que utiliza un puntero a una matriz, //imprime sus elementos y las direcciones correspondientes utilizando //notacin de punteros #include "stdio.h" #include <conio.c> void main(){ int *p, i; int mat[4] ={1, 2, 3, 4}; p=mat; clrscr(); for(i=0; i<=3; i++) { printf("\nmat[%d] = %d ",i, *p++); printf("\tDireccin: %x",p); } getch(); }

// Programa que utiliza un puntero a una matriz, //imprime sus elementos y las direcciones correspondientes utilizando //notacin de punteros #include "stdio.h" #include <conio.c> void main(){ int i; int mat[4] ={1, 2, 3, 4}; clrscr(); for(i=0; i<=3; i++) { printf("\nmat[%d] = %d ",i, *(mat+i)); printf("\tDireccin: %x",mat+i); } }

// Declara una funcin a la que le pasa dos argumentos enteros //por referencia, imprimiendo sus valores en la propia funcin (incrementa //el primero de ellos en 10 unidades. #include <stdio.h> #include <conio.c> void main() { int a = 7, b = 5; void fun(int *p, int *q); clrscr(); fun(&a, &b); //llamada a la funcin printf("\nEn main() a = %d y b= %d", a, b); getch(); } //FIN DE main() void fun(int *x, int *y) { printf("En la funcin: %d , %d", *x+10, *y); } // Programa que rellena una array y lo imprime. En la segunda parte //utiliza notacin de punteros para referirse al array y reliza lo mismo, //efectuando una reserva din mica de memoria: malloc() de stdlib.h #include <stdio.h> #include <conio.c> #include<stdlib.h> /*int mat[100],i, n; void main(void) { clrscr(); printf("\nDe cuantos elementos desea el array?: "); scanf("%d", &n); clrscr(); printf("Llenamos el array:\n"); for(i=0; i<n; i++) scanf("%d", &mat[i]); printf("\nImprimimos el resultado:\n"); for(i=0; i<n; i++) printf("\n%d", mat[i]); getch(); } */ //SEGUNDA PARTE: void main(void) { int i, n , *mat; //defino el array con puntero clrscr(); printf("\nDe cuantos elementos desea el array?: "); scanf("%d", &n); clrscr(); //Realizo una reserva din mica de memoria para que quepa el array: mat =(int*) malloc(n*sizeof(int)); printf("Llenamos el array:\n"); for(i=0; i<n; i++) scanf("%d", mat+i); printf("\nImprimimos el resultado:\n"); for(i=0; i<n; i++) printf("\n%d", *mat++);

getch(); }

//Programa que rellena una array de valores //float y lo imprime. Utiliza notacin de puntero para acceder al array y //efecta una reserva din mica de memoria para valores tipo float mediante //malloc() de stdlib.h #include <stdio.h> #include <conio.c> #include<stdlib.h> void main(void) { int i, n; float *mat; //defino el array con puntero clrscr(); printf("\nDe cuantos elementos desea el array?: "); scanf("%d", &n); clrscr(); //Realizo una reserva din mica de memoria para que quepa el array: mat =(float*) malloc(n*sizeof(float)); printf("Llenamos el array:\n"); for(i=0; i<n; i++) scanf("%f", mat+i); //sin & printf("\nImprimimos el resultado(float):\n"); for(i=0; i<n; i++) printf("\n%g", *mat++); getch(); getch(); } /* Empleo formato hexadecimal para las direcciones de mem. */ #include <stdio.h> #include <conio.c> int main (void) { int valor[] = {2, 4, 9, 6,5, 33, -2317}, *p, *aux; //apuntamos: p = valor; //p = valor[0]; p=valor; //p guarda la d. de mem de valor[0]; equivale a p = &valor[0]; printf("1) %#x\n", p); //imprime &valor[0], es decir p printf("2) %d\n", *p); //imprime p[0], es decir 2 printf("3) %#x\n", p++); //imprime d.m. de &valor[0] y despus avanza el puntero (POSTINCREMENTO) printf("4) %d\n", (*p)+(*p+3));//*p ya es p[1], es decir 4, luego imprime 4+7, es decir 11 printf("5) %d\n", (*p)+13);// 17 printf("6) %#x\n", p); //d. de mem. de valor[1] printf("7) %d\n", *p); // 4 // printf("8) %d\n", (**p)+1); //ERROR p++; p++; //avanzamos en mem. dos saltos de sizeof(int): apuntamos al valor[3], es decir 6 printf("9) %d\n", *p); aux = p; //guardo el valor actual de p printf("10) %d\n", (++(++aux))-(p)); // doble preincremento. Resultado 2, difernecia entre las d.m printf("11) %#x\n" , p++); //imprime d.m. (direcc de mem) printf("12) %d + %d = %d\n", (*p), (*p+3), (*p)+(*p+3)); printf("13) %d" , *((++(++p)))); getch(); return 0;

} /********************* Funcin realloc *********************/ /* realloc.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.c> void main() { const int BYTES = 40; char *p; /* Asignar espacio para una cadena de caracteres */ p = ( char *)malloc(BYTES * sizeof(char)); /* Copiar una cadena de caracteres en el espacio asignado */ strcpy(p, "abcdef"); /* Reasignar el bloque para pueda contener ms caracteres */ if (p != NULL) p = (char *)realloc(p, BYTES * 2 * sizeof(char)); if (p != NULL) { printf("Bloque reasignado\n"); /* Escribir la cadena original */ printf("%s\n", p); /* Liberar el espacio de memoria */ free(p); printf("\nEl bloque ha sido liberado\n"); } else { printf("La reasignacin no ha sido posible\n"); printf("El espacio ocupado por el bloque ha sido liberado"); } getch(); } //Programa que pide una cadena, se la pasa como argumento a una //funcin. La funcin pide una nueva cadena, la concatena a la anterior //y devuelve el resultado de la concatenacin (empleo de strcat() de string.h) #include <stdio.h> #include <string.h> #include <conio.c> char func(char kadena7[]); void main(void) { char cadena[80]; clrscr(); printf("Introduce una cadena de caracteres:\n"); gets(cadena); func(cadena); //llamada a la funcion, pasando la cadena como argumento

printf("\nLa nueva cadena, devuelta por la funcion es:\n\n"); printf("%s", cadena); getch(); } char func(char *cadena) { char cadena2[20]; printf("\n\nIntroduce la cadena a concatenar:\n\n"); gets(cadena2); strcat(cadena, cadena2); return(cadena[80]); //Esta ltima lnea puede modificarse utilizando notacin de punteros: // return(*cadena); } /* Lectura y paso a minsculas de una cadena leida por tclado***********/ #include "stdio.h" #include "conio.c" void main() { char *cad; int i; clrscr(); cad = (char *)calloc(30, sizeof(char)); printf("\nIntroduzca la cadena: "); gets(cad); i=0; do { if ((*(cad+i)>= 'A')&& (*(cad+i)<='Z')) *(cad+i) = *(cad+i)+32; i++; } while (*(cad+i)!=0); printf ("\nLa cadena en minusculas es: %s",cad); getch(); } //Presenta un array de punteros y un puntero a puntero. #include <stdio.h> #include <conio2.h> #include <stdlib.h> main() { int i,j; int *p[4]; //array de punteros// int **px=p; //px es un puntero a un puntero// //Reservo mem para el array de punteros for (i=0; i<4; i++) px[i] =(int *)malloc(sizeof(int)); printf ("Introduzca 16 valores enteros:\n"); for (i=0; i<4; i++)

for (j=0; j<4; j++) scanf ("%d", &px[i][j]); //imprimimos for (i=0; i<4; i++) { for (j=0; j<4; j++) //printf("%7d",px[i][j]); //Imprime como array "%7d" deja 7 blancos printf("%7d", *(*(px+i)+j)); //Imprime como puntero printf("\n"); } getch(); getch(); } /************** Array dinamico de dos dimensiones **************/

#include <stdio.h> #include <stdlib.h> void main() { int **ppa = NULL; unsigned int nFilas = 0, nCols = 0; unsigned int Ok = 0, f = 0, c = 0; do { printf("Nmero de filas del array: "); Ok = scanf("%u", &nFilas); fflush(stdin); } while ( !Ok ); do { printf("Nmero de columnas del array: "); Ok = scanf("%u", &nCols); fflush(stdin); } while ( !Ok ); /* Asignar memoria para el array de punteros */ if ((ppa = (int **)malloc(nFilas * sizeof(int *))) == NULL) { printf("Insuficiente espacio de memoria\n"); exit(-1); } /* Asignar memoria para cada una de las filas */ for (f = 0; f < nFilas; f++) { if ((ppa[f] = (int *)malloc(nCols * sizeof(int))) == NULL) { printf("Insuficiente espacio de memoria\n"); exit(-1); } }

/* Inicializar el array a cero */ for ( f = 0; f < nFilas; f++ ) for ( c = 0; c < nCols; c++ ) ppa[f][c] = 0; /* Operaciones */ for ( f = 0; f < nFilas; f++ ) { for ( c = 0; c < nCols; c++ ) printf("%d ", ppa[f][c]); printf("\n"); } /* Liberar la memoria asignada a cada una de las filas */ for ( f = 0; f < nFilas; f++ ) free(ppa[f]); /* Liberar la memoria asignada al array de punteros */ free(ppa); }

S-ar putea să vă placă și