Cadenas y Estructuras

Documentos relacionados
Ficheros: texto y binarios

Vectores y matrices. Fundamentos de Programación Fundamentos de Programación I

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

Hoja de ejercicios del Tema 3

Introducción al tipo de dato ARRAY

Funciones. Parámetros por valor

= RETURN =3 7-. ELSE K

Programación 1 Tema 3. Información, datos, operaciones y expresiones

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

Prof. Dr. Paul Bustamante

#include <fstream.h> ifstream descriptor ( nombre.extensión ); ofstream descriptor ( nombre.extensión );

Programación 1. Tema II. Diseño de programas elementales. Lección 7. Diseño modular y descendente de programas

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

Estructuras de repetición

1 Estructura básica de un programa C++

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

TécniquesInformàtiques PRÀCTICA 6 (2 Sessions) Curs

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 2 CADENAS O VECTORES DE CARACTERES 6 3 PASO DE CADENAS Y ARRAYS A FUNCIONES 8

PROBLEMAS DEL TEMA 7: Subprogramas y Modularidad

TEMA 8: Gestión dinámica de memoria

Se guardan en archivos con extencion c y los cabezales con extension h

Vectores. 27/05/05 Programación Digital I 1

Tema 2: La clase string

Prof. Dr. Paul Bustamante

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

8.1 Un primer bucle FOR Varias formas de utilizar el bucle FOR Calcular el factorial de un número mediante un bucle FOR...

1. Qué se muestra en pantalla si se ejecutan las siguientes sentencias (suponiendo que el resto del programa que no se presenta es correcto)?

LENGUAJE DE PROGRAMACION I. Ing. JAVIER ECHEGARAY ROJO Ing. WILDER ROMAN MUNIVE. Ing. Javier Echegaray Rojo / Ing. Wilder Román Munive Pag 1

Escuela Politécnica Superior de Elche

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Examen escrito de Programación 1

2^10 2^9 2^8 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 SUMA

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Informática FACULTAD DE FÍSICAS

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Tema: Arreglos de Objetos en C++.

Curso 0 de Informática

Esquema de un programa en C: bloques básicos

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Tema 4: Estructuras de Control Estructura y Contenidos

Programación I. Contenido. Relación de Ejercicios Sonido e Imagen

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

Estructuras de repetición hacer-mientras y repita hasta

Estructuras de Datos Declaraciones Tipos de Datos

Examen escrito de Programación 1. Jueves 5 de febrero de Problema 1 o (3.5 puntos)

Examen Principios de Programación Febrero 2012

Pseudolenguaje. (1 byte) (valores códigos ASCII) [CHAR_MIN.. CHAR_MAX] (Definida en <limits.h>) No hay. Dominio n 1 [MIN(C)..

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

TEMA 4. ESTRUCTURAS DE CONTROL

Introducción al lenguaje C

Prof. Dr. Paul Bustamante

Elementos léxicos del lenguaje de programación Java

OBJETIVOS. Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos.

Prof. Dr. Paul Bustamante

Cadenas de Caracteres

ALMACENAMIENTO PERSISTENTE DE DATOS

1. Ejemplo de clase: La clase Disco 2. Ejemplo de clase: La clase Colección. 3. Relación entre clases: Clientismo

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Tema 5: Diseño modular. Índice. Notas. Programación 2. Curso Notas. Ejemplo. La herramienta make. 1 Diseño modular.

Prof. Dr. Paul Bustamante

Asignatura: Estructuras de Datos. Año Escolar: Grado y Sección: 6to INF A-B Docente: Ing. Yesika Medina

Introducción a C++ y Code::Blocks

Programación en C++/Funciones

#include <stdio.h> /* Factorial de un número - versión 1- */

Contenido. Capítulo 1. Introducción a lenguaje C 1

LENGUAJE. Tema 1 - Introducción

Lenguaje de programación C. Introducción

Guía - Taller # 2 (JAVA)

Programación Estructurada

Estructuras de Decisión Simples y Dobles

GENERALIDADES DEL LENGUAJE C

Programación. Test Autoevaluación Tema 3

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

Prof. Dr. Paul Bustamante

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda. Lenguaje C++ Contadores y Acumuladores

Estructuras de Control 3

Para dudas, comentarios escribe a: C BASICO

Lección 2 Introducción al lenguaje C

Prof. Dr. Paul Bustamante

Tema 3: Ficheros en C++

Asignatura. Taller de Computación I

LABORATORIO 3 ESTRUCTURAS REPETITIVAS WHILE / DO WHILE

Tema 7 Vectores y cadenas de caracteres. Fundamentos de Informática

TEMA 4. ELEMENTOS BÁSICOS DE PROGRAMACIÓN

MANUAL DE REFERENCIA DE C++

Programación En Lenguaje C

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C

Fundamentos de Programción (I)

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C

FUNDAMENTOS DE INFORMÁTICA

CONCEPTOS BASICOS DEL LENGUAJE JAVA

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

Transcripción:

Cadenas y Estructuras Fundamentos de Programación Fundamentos de Programación I FP / FP I 1 Proyecto de programación para el manejo de cadenas en C++ Escriba un programa que lea el nombre de una persona en el siguiente formato: Apellido, Nombre_de_pila, inicial_intermedia Por ejemplo la entrada: Juan Antonio Lopez Deberá producir la salida: Lopez, Juan A. La entrada Juan A. Lopez Deberá producir la salida: Lopez, Juan A. El programa deberá funcionar igual y colocar un punto después de la inicial intermedia, aunque la entrada no contenga el punto. El programa deberá contemplar usuarios que no den un nombre intermedio o inicial. En tal caso, claro, la salida no contendrá una inicial intermedia. Por ejemplo, la entrada, Juan Lopez Deberá producir la salida: Lopez, Juan FP / FP I 2 1

//Programa que toma el nombre de una persona y lo cambia de formato #include <iostream.h> #include <string> //Prototipos de funciones void ProcesarNombreCompleto(string todo, string &primer,string &segundo, string &apellido); //Función principal int main() //Declaracion de variables string nom_comp; string npri,nseg,ape; string formatonuevo; //Leo el nombre de la entrada estandar cout << "Introduce tu nombre completo:\n"; getline(cin,nom_comp); //Analizo la cadena introducida //La separo en 3 partes (1 nombre, 2 nombre y apellido) ProcesarNombreCompleto(nom_comp, npri,nseg, ape); //Reconstruyo el nombre con nuevo formato a partir de //las partes individuales formato = ape + ", " + npri + " " + nseg; //Escribo el resultado cout << formato << endl; return 0; FP / FP I 3 //Funcion que procesa la cadena con el nombre completo void ProcesarNombreCompleto(string todo, string & primer, string & segundo, string & apellido) //Declaracion de variables locales int posini, posfinal; int tamanyo; //Extraigo el primer nombre posini = 0; posfinal = todo.find(" "); primer = todo.substr(posini, posfinal - posini); //Ahora el segundo posini = posfinal + 1; posfinal=todo.find(" ", posini); //Si posfinal es 1 no hay segundo nombre if ( posfinal > 0) //Cuando haya segundo nombre segundo=todo.substr(posini,posfinal-posini); posini=posfinal+1; //Modifico el segundo nombre tamanyo = segundo.length(); segundo.erase(1, tamanyo - 1 ); segundo = segundo + "."; else //Cuando no hay segundo nombre segundo = ""; //apellido posfinal = todo.length(); apellido = todo.substr(posini,posfinal-posini); return ; FP / FP I 4 2

Manejo de Cadenas: Cifrado de datos Una técnica de cifrado elemental consiste en lo siguiente: se dispone de una frase clave que llamamos llave. A cada carácter leído del mensaje que queremos cifrar, le aplicamos la operación XOR bit a bit con un carácter de llave y el resultado es el carácter cifrado. El carácter de llave aplicado es el siguiente en número de orden siguiendo un ciclo. Es decir si llave tiene 4 caracteres, cifraremos el primer carácter leído con llave[0], el segundo con llave[1],... el quinto con llave[0] etc. Este método tiene la propiedad de que cifrando el texto ya cifrado con la misma llave vuelve a aparecer el texto original. Implementa una función que reciba como argumento una llave, una cadena y la devuelva la cadena encriptada. Realiza una función que pida al usuario una frase, la encripte, muestre la cadena encriptada y después la desencripte con la misma función y muestre el resultado por pantalla. NOTA: En C++ puedes aplicar la operación lógica XOR sobre dos variables de tipo carácter de la siguiente manera: char a= A ; char b= B ; char resul; resul = a ^ b; // el signo ^ es el XOR en C++. Esto realiza la operación XOR sobre cada uno de los bits de a y b FP / FP I 5 // Programa que encripta una frase introducida por teclado según una clave tambien introducida por teclado #include <iostream.h> #include <string> //Prototipos de funciones string encriptar(string frase, string clave); int main() string frase; string clave; string res,res2; cout << "Este programa encripta una frase introducida por teclado \n segun una clave tambien introducida por teclado\n"; cout << "Introduce una frase para encriptar\n"; //Leo la frase getline(cin,frase); //Leo la clave cout << "clave:"; cin >> clave; res = frase; res2 = frase; res = encriptar(frase, clave); cout << " La frase encriptada es:\n"; cout << res; cout << "Proceso inverso (desencripto)\n"; res2 = encriptar(res,clave), cout << "La frase desencriptada es:\n"); cout << res2; return 0; FP / FP I 6 3

//Funcion que encriptar una frase pasada como parametro /7segun la clave tambien pasada como parametro //devuelve la frase encriptada string encriptar(string frase, string clave) string res; int a,b,c; int i,j; int longi; res = frase; //Recorro la cadena para obtener la frase encriptada for(i = 0; i < frase.length() ; i++) a = int (frase[i]); //Calculo el indice de la clave j = i % clave.length(); b = int (clave[j]); //Operación xor c = a ^ b; //Guardo el caracter encriptado res[i] = char( c ); return res; FP / FP I 7 Calculo de calificaciones escolares Escribe un programa para calcular la nota de un grupo escolar que siga la siguiente política de calificación: Hay 2 cuestionarios, cada uno de ellos se califica sobre 10 puntos. Hay un examen parcial y un examen final, cada uno de los cuales se califica sobre 100 puntos. El examen final representa el 50% de la nota, el parcial el 25% y los 2 cuestionarios juntos el 25% restante. Las notas se representan de la siguiente forma: Sobresaliente corresponde a una nota entre [90,100]. Notable corresponde a una nota promedio entre [70,90]. Aprobado entre [50,70]. Suspendido una nota promedio inferior a 50. Define y emplea una estructura para almacenar la información de cada estudiante. El programa debe pedir el nombre del alumno y sus notas parciales. Con ellas calculará su nota final de acuerdo a los datos anteriores. El programa pedirá los datos de todos los alumnos hasta que se le indique que no quedan más alumnos por procesar. Deberá mostrar después todos los datos introducidos y caculados. FP / FP I 8 4

//Programa que calcula calificaciones de alumnos #include <iostream.h> #include <stdlib.h> #include <string> const int MAXIMO = 100 ; //Definición de estructuras struct Alumno string n_alumno; int test1,test2; int parcial, final; string notaglobal; ; //Definicion de tipos typedef Alumno Curso[MAXIMO]; //Prototipos de funciones void LeerRegistro(Alumno & alu); void MostrarRegistro(Alumno alu); void CalcularNotaRegistro(Alumno & alu); FP / FP I 9 int main() //Declaro un vector para almacenar la información de //los alumnos Curso micurso; int numero; bool seguir; int i, elementos; //Numero de alumnos introducidos seguir = true; i = 0; do //Lee datos LeerRegistro(micurso[i]); //Calcula nota global CalcularNotaRegistro(micurso[i]); //Muestro el resultado MostrarRegistro(micurso[i]); //Compruebo condicion de salida if (i > MAXIMO) seguir = false; cout << "Para terminar pulse 0. Para continuar 1\n"; cin >> numero; if (numero == 0) seguir = false; i++; while (seguir); elementos = i; cout << "Notas almacenadas en esta sesion:" << endl; for (i = 0; i < elementos ; i++) MostrarRegistro(micurso[i]); return 0; FP / FP I 10 5

void LeerRegistro(Alumno &alu) //Leo cada elemento de la estructura de forma //independiente cout << "Nombre: " ; getline(cin,alu.n_alumno); cout << "Introduce las calificaciones\n"; cout << "Test 1: "; cin >> alu.test1; cout << "Test 2: " ; cin >> alu.test2; cout << "Parcial: "; cin >> alu.parcial; cout << "Final: "; cin >> alu.final; return; //Escribo los datos almacenados en el registro por pantalla void MostrarRegistro(Alumno alu) cout << "Nombre: "; cout << alu.n_alumno << endl; cout << "\t\tcalificaciones: "; cout << "\t" << alu.test1 << " " << alu.test2 <<" " << alu.parcial << " " << alu.final << endl; cout << "\t\tcalificacion global: "; cout << "\t" << alu.notaglobal<< endl; return FP / FP I 11 //Calculo la nota final void CalcularNotaRegistro(Alumno & alu) float notanumerica; notanumerica = (alu.test1 + alu.test2) * 25 / 20 + (alu.final / 2 ) + (alu.parcial / 4); if (notanumerica > 90.0) alu.notaglobal= "Sobresaliente"; else if (notanumerica > 70.0) alu.notaglobal= "Notable"; else if (notanumerica > 50.0 ) alu.notaglobal="aprobado"; else alu.notaglobal="suspendido"; return; FP / FP I 12 6