Cadenas y apuntadores Programación.

Slides:



Advertisements
Presentaciones similares
Laboratorio Lenguaje de Programación ING2101
Advertisements

Lenguaje C++.
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
FICHEROS.
Instrucciones Básicas Entrada de Información
Fundamentos de Programación I Agradecimientos al Ing. Namuel Solórzano Peralta por el contenido de esta presentación.
MANUAL EXPRESS DE C J.M.sevilla.
LOGROS DEL PERÍODO Utiliza de forma correcta las funciones para entrada y salida de datos en c++. Utiliza los elementos básicos de un programa en c++.
Repaso para la construcción del intérprete 2012
Estructuras de control
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Fundamentos de la Programación Estructurada
Programación, Algoritmos y Estructuras de Datos
Variables Prof. Gonzalo Pastor.
EJERCICIOS DE PROGRAMACION
INFORMATICA I Funciones CLASE 13.
Introducción al Lenguaje C (ANSI)
Aprende C en una lluviosa tarde de domingo (en algo más de un par de horas) Sintaxis del lenguaje C para implementar un programa imperativo.
ESTRUCTURAS DE SECUENCIA
Una breve introducción
Unidad 3 Punteros.
Ejemplos en C /* Ejemplos L/E en C con printf y scanf */ #include #include main(){ int i; int i; char nombre[30]; char nombre[30]; printf ("\nIntroduce.
String o Cadenas Prof. Gonzalo Pastor. Cadenas o String ► En C, una cadena o texto se define como un vector de caracteres de longitud determinada que.
Estructuras y uniones Programación. Definición de estructura Una estructura (también llamada registro) es un tipo de datos que agrupa varios datos de.
Funciones y procedimientos
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
POO Java Módulo 3 Elementos de programas Identificadores
Tema 3 Entrada y Salida.
LENGUAJE “C” Programación.
Archivos Programación.
Informática Ingeniería en Electrónica y Automática Industrial
Asignatura: Lenguaje de Programación de Sistemas PPT No.05 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya.
Lenguaje C.
LENGUAJE “C” Programación.
Semana 5 Subprogramas..
Características de “C”
Características de “C” Y Esta conformado por un Ambiente Integrado. Y Es un Lenguaje de Nivel medio. Y Es un compilador. YContiene un conjunto de palabras.
Tema 1: Lenguaje PHP básico Ing. Tulio Nel Benavides Peña
Archivos.
Programación I Teoría VIII: Entrada/Salida
Lenguaje C Ing. Sonia Alexandra Pinzón Nuñez
Pulse para añadir texto Desarrollo de sitios web con PHP y MySQL Tema 2: Lenguaje PHP básico Elaborado por: José Mariano González Romano
Informática Ingeniería en Electrónica y Automática Industrial
CAPITULO 1 - INTRODUCCIÓN Comenzaremos con una rápida introducción al lenguaje C. Mostraremos algunos elementos esenciales del lenguaje en programas reales,
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
Archivos Programación I MC Beatriz Beltrán Martínez.
Elementos básicos del lenguaje
Introducción Lenguaje de Programación ING2101 SECC Ayud. Ariel Fierro Sáez.
Tipo de dato Arreglo en C Uso del for con arreglos
Elementos básicos del lenguaje
PUNTEROS Y REFERENCIAS
PROGRAMACIÓN MULTIMEDIA
FUNDAMENTOS DE PROGRAMACIÓN
REPÚBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN UNIDAD EDUCATIVA COLEGIO “JUAN XXIII” – FE Y ALEGRÍA CIUDAD OJEDA- ESTADO.
Estructura de un programa C
Tipo de dato char El tipo de dato char ocupa un byte de memoria. Con un byte solo se puden guardar 256 números enteros sin signo, del 0 – 255. Si a cada.
Pelando la cebolla 1. Aquí discutiremos lo necesario del lenguaje necesario para implementar una metodología que llamo “pelando la cebolla”. Permite abordar.
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
ALGORITMOS Y ESTRUCTURAS DE DATOS Operaciones sobre cadenas de caracteres y Funciones LIA. Suei Chong Sol.

LENGUAJE “C” Programación.
Algoritmo.
Lenguaje de programación c
TIPOS DE DATOS Estructuras de control y repetición PARCIAL III.
OBJETIVOS DEFINIR LA ESTRUCTURA DE ARREGLOS. DECLARAR ARREGLOS EN C.
Archivos. Introducción Los datos que hemos tratado hasta el momento han residido en la memoria principal. Sin embargo, las grandes cantidades de datos.
Computación I :: Prof. Yeniffer Peña Lenguaje C Presentación Computación I.
PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE Introducci Ó n a los Arreglos (“arrays”) en C++
Introducción al Lenguaje C (II) Cadenas de caracteres, archivos de cabecera, lectura y escritura Fundamentos de Programación Departamento de Lenguajes.
Transcripción de la presentación:

Cadenas y apuntadores Programación

Variables de tipo char Las variables de tipo char ocupan un byte. Los valores posibles son de -128 a 127. Las constantes de tipo char pueden especificarse utilizando un carácter o una secuencia de escape encerrada entre apóstrofos. ‘a’, ‘5’, ‘\n’ Pueden mezclarse con variables enteras. char x, y; int a,b; x = 45; y = ‘a’; a = 2*x; b = 3*x – y;

Lectura de caracteres scanf (stdio.h) utilizando el formato %c. requiere presionar ENTER getch (conio.h) no requiere de ENTER. getchar (stdio.h) requiere presionar ENTER #include <stdio.h> #include <conio.h> main(){ char p1,p2,p3=65; printf("\ningrese un caracter: "); p1 = getchar(); putchar(p1); printf("\n"); printf("\nel caracteer p3 es:"); putchar(p3); printf("\n"); printf("\ningrese otro caracter: "); scanf("%c",&p2); printf("%c",p2); p2 = getch(); printf("caracter leido: %c",p2); getch(); }

Uso de fflush Se requiere borrar el buffer para leer correctamente #include <stdio.h> #include <conio.h> main(){ char p1,p2,p3=65; printf("\ningrese un caracter: "); p1 = getchar(); putchar(p1); printf("\n"); fflush(stdin); printf("\nel caracteer p3 es:"); putchar(p3); printf("\ningrese otro caracter: "); scanf("%c",&p2); printf("%c",p2); fflush(stdin); p2 = getch(); printf("caracter leido: %c",p2); getch(); }

Funciones básicas de ctype.h Función Significado isdigit(c) Regresa un 1 si el argumento c es un dígito, sino regresa 0. isalpha(c) Regresa un 1 si el argumento c es una letra, sino regresa 0. islower(c) Regresa un 1 si el argumento c es una letra minúscula, sino regresa 0. isupper(c) Regresa un 1 si el argumento c es una letra mayúscula, sino regresa 0. tolower(c) Regresa el carácter c convertido a minúscula. toupper(c) Regresa el carácter c convertido a mayúscula.

ejemplo #include <stdio.h> #include <conio.h> #include <ctype.h> main(){ char c1,c2,c3,c4; printf("tecle un caracter: "); c1 = getch(); fflush(stdin); if(isdigit(c1)) printf("%c es un digito\n",c1); else printf("%c NO es un digito\n",c1); c2 = getch(); if(isalpha(c2)) printf("%c es una letra\n",c2); printf("%c NO es una letra\n",c2); printf("tecle un caracter: "); c3 = getch(); fflush(stdin); if(isupper(c3)){ printf("%c es una letra mayuscula\n",c3); printf("La minuscula de %c es %c\n\n",c3,tolower(c3)); } if(islower(c3)){ printf("%c es una letra minuscula\n",c2); printf("La mayuscula de %c es %c\n\n",c3,toupper(c3)); getch();

Ejemplo de Conversión #include <stdio.h> #include <conio.h> #include <ctype.h> char aMayuscula(char c){ if(isalpha(c)) return toupper(c); switch(c){ case 'á':return 'Á'; case 'é':return 'É'; case 'í':return 'Í'; case 'ó':return 'Ó'; case 'ú':return 'Ú'; case 'ñ':return 'Ñ'; } main(){ printf("%c\n",aMayuscula(‘á')); getch();

Función issymbol #include <stdio.h> #include <conio.h> char issymbol(char c){ if(c<=47||c>=58&&c<=64||c>=91&&c<=96||c>=123) return 1; return 0; } main(){ printf("%d \n",issymbol('2')); printf("%d \n",issymbol('a')); printf("%d \n",issymbol('A')); printf("%d \n",issymbol('(')); printf("%d \n",issymbol('?')); printf("%d \n",issymbol('[')); printf("%d \n",issymbol('{')); getch();

tarea Escriba una función que regrese 1 si el parámetro de tipo char es letra o número.

Quiz Que valores se imprimen en la pantalla con las siguientes sentencias: El código ASCII de ‘A’ es 65. char a = ‘E’; printf(“%c es una letra, su codigo ASCII es %d\n”, a, a); printf(“%c %d”, tolower(a), isdigit(a));

Cadenas Una cadena de caracteres es un arreglo unidimensional de caracteres que termina con el carácter \0. El nombre de la variable de cadena se utiliza como un apuntador al inicio del arreglo de caracteres. Las constantes de tipo cadena se encierran entre comillas dobles. Ejemplos: char a[10] = “hola”; char m[25] = “”; char *x = “San Luis Potosí”;

Declaración e inicialización #include <stdio.h> #include <conio.h> main(){ // declara una cadena de longitud 20 como máximo. char a[20]; // el contenido es la cadena “hola”, x[4] = ‘\0’. char x[10] = "hola"; // declara una cadena de 4 caracteres mas \0 char *m = "que tal"; // declara una cadena con longitud variable char s[] = {'B','i','e','n','v','e','n','i','d','o','\0'}; char nom[] = "juan perez"; puts(x); puts(m); puts(s); puts(nom); printf("x es \"%s\", ",x); printf("m es \"%s\", ",m); printf("s es \"%s\", ",s); printf("nom es \"%s\" ",nom); getch(); }

Lectura de cadenas #include <stdio.h> #include <conio.h> main(){ //cadena de longitud variable char cad2[10]="hola"; char *cad0; char *cad1; cad0 = "Marruecos"; puts(cad0); cad0 = "San Luis Potosi"; //lectura de cadena variable gets(cad1); puts(cad1); //lectura de cadena de longitud fija printf("%s\n",cad2); gets(cad2); puts(cad2); scanf("%s",cad2); getch(); }

Biblioteca stdlib.h Función Significado atoi(cad) Convierte cadena a entero atof(cad) Convierte cadena a double strtod(cad,&cad2) atol(cad) Convierte cadena a long strtol(cad,&cad2,base)

Ejemplo #include <stdio.h> #include <stdlib.h> #include <conio.h> main(){ char s1[20],*s2; int i; long l; double d; printf("introduce cadena:"); gets(s1); i = atoi(s1); l = atol(s1); d = atof(s1); printf("s1 = \"%s\"\n",s1); printf("i = %d\n",i); printf("l = %d\n",l); printf("d = %lf\n",d); l = strtol(s1,&s2,0); printf("%d, s2= %s\n",l,s2); d = strtod(s1,&s2); printf("%lf, s2= %s\n",d,s2); getch(); }

Quiz ¿Qué función realiza la conversión especificada? 1. atol ___ convierte carácter a mayúscula 2. atod ___ convierte cadena a entero 3. atoi ___ convierte carácter a minúscula 4. tolower ___ convierte cadena a entero largo 5. toupper ___ convierte cadena a double

Contar caracteres #include <stdio.h> #include <stdlib.h> #include <conio.h> int cuenta(char s[],char c){ int i=0,cuenta=0; while(s[i]){ if(s[i]==c) cuenta++; i++; } return cuenta; main(){ char s[50],c; printf("Cuenta el numero de veces que aparece\nun caracter en una cadena\n"); printf("introduce cadena:"); gets(s); printf("introduce el caracter a contar:"); c = getchar(); printf("el caracter '%c' aparece %d veces\n“ , c, cuenta(s,c)); getch(); }

Cuenta las vocales de una cadena int cuentaVocales(char s[]){ int i=0,cuenta=0; while(s[i]){ if(tolower(s[i])=='a'|| tolower(s[i])=='e'|| tolower(s[i])=='i'|| tolower(s[i])=='o'|| tolower(s[i])=='u' ) cuenta++; i++; } return cuenta;

Otra solución para contar vocales main(){ int cuentaVocales; char s[50]; printf("Escriba cadena:"); gets(s); cuentaVocales=cuenta(s,'a')+cuenta(s,'e')+ cuenta(s,'i')+cuenta(s,'o')+cuenta(s,'u'); printf("Total de vocales %d",cuentaVocales); getch(); }

Convierte a mayúsculas una cadena void aMayusculas(char s[]){ int i=0; while(s[i]){ s[i] = toupper(s[i]); i++; } main(){ char s[50]; printf("Cuenta el número de vocales en una cadena\n"); printf("introduce cadena:"); gets(s); aMayusculas(s); printf("la cadena en mayusculas es:\n%s",s); getch();

Reemplazar un carácter por otro void reemplaza(char s[],char c1, char c2){ int i=0; while(s[i]){ if(s[i]==c1) s[i] = c2; i++; } main(){ char s[50],c1,c2; printf("reemplaza un caracter por otro en una cadena\n"); printf("introduce cadena:"); gets(s); printf("introduce el caracter a reemplazar:"); c1 = getchar(); fflush(stdin); printf("introduce el caracter de reemplazo:"); c2 = getchar(); reemplaza(s,c1,c2); printf("la cadena reeplazada es:\n%s",s); getch();

Suma de dígitos de un número #include <stdio.h> #include <ctype.h> #include <conio.h> int sumaDigitos(char s[]){ int i=0,suma=0; while(s[i]){ if(isdigit(s[i])) suma += s[i]-'0'; i++; } return suma; main(){ int suma; char s[50]; printf("Escriba cadena:"); gets(s); suma = sumaDigitos(s); printf("Suma de digitos = %d",suma); getch(); }

Extraer fecha del CURP El CURP está formado por una cadena de 18 caracteres, la fecha la forman los caracteres del 5 al 10. La siguiente función extrae el día, el mes y el año de nacimiento. #include <stdio.h> #include <ctype.h> #include <conio.h> void fechaCURP(char s[],int *d,int *m,int *a){ *a = 1900+(s[4]-'0')*10+(s[5]-'0'); *m = (s[6]-'0')*10+(s[7]-'0'); *d = (s[8]-'0')*10+(s[9]-'0'); }

Actividad Escriba una función que cambie todos los dígitos iguales a ‘0’ por la letra ‘o’ y los unos ‘1’ por letras ‘I’ de una cadena que pase como parámetro. void reemplaza(char s[],char c1, char c2){ int i=0; while(s[i]){ if(s[i]==c1) s[i] = c2; i++; }

Funciones de cadenas Biblioteca string.h Función Descripción strcpy(cad1,cad0) Copia la cadena cad0 en la cadena cad1 strncpy(cad1,cad0,n) Copia n caracteres de la cadena cad0 en la cadena cad1 strcat(cad1,cad0) Añade una copia de cad0 al final de la cadena cad1. strncat(cad1,cad0,n) Añade n caracteres de cad0 al final de la cadena cad1 strstr(cad1,cad0) Localiza la primera ocurrencia de la cadena cad0 en la cadena cad1, regresa el apuntador a esa cadena. strlen(cad0) Regresa la longitud de la cadena cad0 strcmp(cad0,cad1) Compara cad0 con cad1, regresa un entero mayor, igual o menor que cero según si la cadena cad0 es mayor, igual o menor que cad2. strchr(cad,c) Localiza la primera ocurrencia del carácter c dentro de la cadena cad y regresa el apuntador a la cadena restante.

Ejemplo strcpy #include <stdio.h> #include <conio.h> #include <string.h> int main() { char s2[8] = "abcdefg"; char s1[8]; strcpy( s1, s2 ); printf( "s2=%s\n", s2 ); printf( "s1=%s\n", s1 ); getch(); return 0; }

Ejemplo strncpy #include <stdio.h> #include <conio.h> #include <string.h> int main() { char s2[8] = "abcdefg"; char s1[8]; strncpy( s1, s2, 3); printf( "s2=%s\n", s2 ); printf( "s1=%s\n", s1 ); getch(); return 0; }

Ejemplo strcat #include <stdio.h> #include <conio.h> #include <string.h> int main() { char s1[11] = "Hola "; char s2[8] = "amigos"; printf( "s1=%s\t", s1 ); printf( "s2=%s\n", s2 ); strcat( s1, s2 ); printf( "s1=%s\n", s1 ); getch(); return 0; }

Ejemplo strncat #include <stdio.h> #include <conio.h> #include <string.h> int main() { char s1[11] = "Hola "; char s2[8] = "amigos"; printf( "s1=%s\t", s1 ); printf( "s2=%s\n", s2 ); strncat( s1, s2, 4); printf( "s1=%s\n", s1 ); getch(); return 0; }

Ejemplo strstr #include <stdio.h> #include <conio.h> #include <string.h> int main() { char s1[13] = "Hola a todos"; char s2[3] = "la"; printf( "s1=%s\n", s1 ); printf( "s2=%s\n", s2 ); printf( "strstr(s1,s2) = %s\n", strstr( s1, s2 ) ); getch(); return 0; }

Ejemplo strlen #include <stdio.h> #include <conio.h> #include <string.h> int main() { char s[13] = "Hola a todos"; printf( "s=%s\n", s ); printf( "strlen(s) = %d\n", strlen( s ) ); getch(); return 0; }

Ejemplo strcmp #include <stdio.h> #include <conio.h> #include <string.h> int main() { char s1[10] = "Abeja"; char s2[10] = "Abeja"; int i; printf( "s1=%s\t", s1 ); printf( "s2=%s\n", s2 ); i = strcmp( s1, s2 ); printf( "s1 es " ); if( i < 0 ) printf( "menor que" ); else if( i > 0 ) printf( "mayor que" ); else printf( "igual a" ); printf( " s2 (strcmp = %d)\n",i); getch(); return 0; }

Ejemplo strchr #include <stdio.h> #include <conio.h> #include <string.h> int main() { char s[20] = "Hola amigos"; char c = 'a'; printf( "s=%s\t", s ); printf( "c=%c\n", c ); printf( "strchr=%s\n", strchr( s, c ) ); getch(); return 0; }

Ejemplo contar caracteres #include <stdio.h> #include <conio.h> #include <string.h> int main() { char cad1[50],cad2[50],*cad3; int i=0; printf("escriba cadeba: "); gets(cad1); printf("escriba cadeba a contar: "); gets(cad2); strcpy(cad3,cad1); //localiza la primera ocurrencia printf("AQUI"); cad3 = strstr(cad3,cad2); //licaliza las demás ocurrencias while(cad3!=NULL){ i++; cad3 = strstr(cad3+1,cad2); } printf("\nSe encontraron %d ocurrencias.\n",i); getch();

Actividad Cual es la salida del siguiente programa: #include <stdio.h> #include <conio.h> #include <string.h> int main() { char cad1[50]="bienvenidos a Mexico"; char cad2[50]; strcpy(cad2,cad1); printf("cad2 = %s\n",cad2); strcat(cad1,strstr(cad2,"Mex")); printf("cad1 = %s\n",cad1); strncat(cad1,cad2,10); getch(); }

Quiz Escriba una sentencia utilizando las funciones de cadena para extraer las cadenas que se solicita de la cadena suministrada. s1 = “San Luis Potosí” extraer “Luis” Obtenga la cadena “esta es una cadena concatenada” a partir de las cadenas y las funciones de cadena (AYUDA: puede hacer llamadas anidadas de la función strcat) s1 = “cadena ” s2 = “concate” s3 = “ es una ” s4 = “esta” strcpy(cad1,cad0) strncpy(cad1,cad0,n) strcat(cad1,cad0) strncat(cad1,cad0,n) strstr(cad1,cad0) strlen(cad0) strcmp(cad0,cad1) strchr(cad,c)

Arreglos de cadenas Un arreglo de cadenas es una arreglo bidimensional de caracteres. Podemos ver el arreglo bidimensional como un arreglo de una dimensión de cadenas de caracteres. Se pueden utilizar las funciones revisadas anteriormente en cada elemento del arreglo.

Ordenación de una lista de nombres #include <stdio.h> #include <string.h> #include <conio.h> void intercambia(char cad1[50],char cad2[50]){ char temp[50]; strcpy(temp,cad1); strcpy(cad1,cad2); strcpy(cad2,temp); } void ordena(char lista[][50],int num){ int i,j; for(i = 0;i<num-1;i++){ for(j = i+1;j<num;j++) if(strcmp(lista[i],lista[j])>0) intercambia(lista[i],lista[j]);

int leerLista(char lista[][50]){ int i=0,hecho=0; char s[50]; printf("Escriba los nombres (FIN=terminar)\n"); do{ gets(lista[i]); if(strcmp(lista[i],"FIN")!=0) i++; else hecho = 1; }while(!hecho); return i; } void imprime(char lista[][50],int num){ int i; for(i = 0;i<num;i++) puts(lista[i]);

main(){ char nombres[50][50]; int total; total = leerLista(nombres); ordena(nombres,total); imprime(nombres,total); getch(); }

Apuntadores Una variable de tipo apuntador contiene una dirección de memoria. La dirección de memoria señalada por el apuntador es la que contiene el dato que puede ser de cualquier tipo, incluso void. int entero, *pentero; entero = 548; pentero = &entero; *pentero = -234; entero Asigna la dirección de entero a pentero 548 pentero entero 548 pentero entero NOTA: a los apuntadores solo puede asignárseles: 0, NULL o una dirección -234

Ejemplo #include <stdio.h> #include <conio.h> main(){ int entero,*pentero; entero = 548; pentero = &entero; printf("La dirección de entero es %d\n",&entero); printf("el valor de pentero es %d\n",pentero); printf("el valor de entero es %d\n",entero); printf("el valor de *pentero es %d\n",*pentero); *pentero = -234; getch(); }

Aritmética de apuntadores Los apuntadores pueden utilizarse para acceder a los elementos de un arreglo. #include <stdio.h> #include <conio.h> main(){ int a[10]={3,4,1,8,2,3,4,5,7,0},*b; b = a;//b apunta al inicio del arreglo a printf("dirección de b es %d, el contenido es %d\n",b,*b); b = b + 1;//b apunta a a[1] b = b + 3;//b apunta a a[4] b = b - 2;//b apunta a a[2] getch(); }

#include <stdio.h> #include <conio.h> main(){ double a[10]={3,4,1,8,2,3,4,5,7,0},*b; b = a;//b apunta al inicio del arreglo a printf("dirección de b es %d, el contenido es %lf\n",b,*b); b = b + 1;//b apunta a a[1] b = b + 3;//b apunta a a[4] b = b - 2;//b apunta a a[2] getch(); }

Apuntadores y subíndices La aritmética de apuntadores y los subíndices son equivalentes. #include <stdio.h> #include <conio.h> main(){ double a[10]={3,4,1,8,2,3,4,5,7,0},*b; int i; b = a;//b apunta al inicio del arreglo a for(i=0;i<10;i++) printf("a[%d]=%lf\n",i,a[i]); printf("*(b+%d)=%lf\n",i,*(b+i)); getch(); }

Apuntadores a funciones Las funciones se comportan como apuntadores. El nombre de la función es un apuntador al inicio del código de la función. Las funciones pueden pasarse como parámetros a otras funciones.

Ejemplo de apuntador a función #include <stdio.h> #include <conio.h> #include <math.h> void tabula(double a, double b,double (*fun)(double )){ double x,y; for(x=a;x<=b;x+=(b-a)/10.0){ y = (*fun)(x); printf("f(%lf) = %lf \n",x*180/3.1416,y); } main(){ tabula(0,3.1416/2,sin); tabula(0,3.1416/2,cos); getch();

Salida de apuntador a función

¿Que valores tienen las variables? int x. *px: float y, *py; x = 5; px = &x; *px = 2*x + *px; y = x; py = y; y = *py + x; printf(“*p = %d x = %d\n”,*px,x); printf(“*p = %f x = %f\n”,*py,y); x *px y *py

Suponga la siguiente declaración: float n1 = 7.3, n2; Escriba una sentencia para cada una de las siguientes acciones: Declare ptrF como un apuntador a un objeto tipo float Asigne la dirección de n1 a ptrF Despliegue el valor del objeto apuntado por ptrF Asigne el valor del objeto apuntado por ptrF a n2 Despliegue el valor de n2 Despliegue la dirección de n1 Despliegue la dirección almacenada en ptrF Asigne a ptrF la dirección de n2 Asigne al valor del objeto apuntado por ptrF el valor 8.1 Despliegue el valor de n1

Funciones de cadenas estilo Pascal Las siguientes funciones implementan algunas de las funciones y procedimientos utilizadas en el lenguaje Pascal. Supondremos que las cadenas están declaradas como arreglos de 256 caracteres (incluyendo el \0 de terminación). Función Descripción copystr extrae una subcadena de una cadena deletestr borra una subcadena de una cadena insert inserta una subcadena dentro de otra pos busca una subcadena dentro de otra cadena

Función copystr void copystr(char s[256],char s1[256],int n,int c){ int i,l=strlen(s1); if(l<n)s[0] = '\0'; else{ for(i=0;i<c&&i<l;i++) s[i]=s1[n+i]; s[i]='\0'; }

Función deletestr void deletestr(char s[256],int n,int c){ int i=0,l=strlen(s); if(!(l<n)) while(s[i+n]){ s[i+n]=s[i+n+c]; i++; }

Función insertstr void insertstr(char s[256],char s1[256],int n){ int i,len=strlen(s); char temp[256]; copystr(temp,s1,n,256); for(i=0;i<len&&i<255;i++) s1[i+n] = s[i]; for(i=0;i<len&&(i+n+len<255);i++) s1[i+n+len] = temp[i]; s1[i+n+len] = '\0'; }

Función pos int pos(char s1[256],char s2[256]){ int len1,len2,i,j1,j2; len1 = strlen(s1); len2 = strlen(s2); for(i=0;i<=len2-len1;i++){ j1 = 0; j2 = i; while(s1[j1]==s2[j2]&&s1[j1]!='\0'){ j1++; j2++; } if(j1==len1)return i; return -1;

Ejemplo main(){ char c1[256],c2[256]; strcpy(c1,"hola tal"); printf("c1 = %s\n",c1); strcpy(c2,"que "); printf("c2 = %s\n",c2); insertstr("\"esta es una prueba \"",c1,5); printf("inserta \"esta es una prueba \" en c1 = %s\n",c1); deletestr(c1,0,8); printf("borra de 0 a 8 en c1 = %s\n",c1); deletestr(c1,10,7); printf("borra de 10 a 17 en c1 = %s\n",c1); deletestr(c1,16,5); printf("borra de 16 a 21 en c1 = %s\n",c1); printf("pos de \"una\" = %d\n",pos("una",c1)); printf("pos de \"xxx\" = %d\n",pos("xxx",c1)); printf("pos de \"tal\" = %d\n",pos("tal",c1)); getch(); }