Mediante una matriz saber cual es el numero Mayor y Menor y mostrar la matriz de los elementos ingresados.
#include<iostream>
#include<iomanip>
#include<stdlib.h>
using namespace std;
void ingresar(float A[50][50],int n, int m);
void mostrar(float A[50][50],int n, int m);
void mayor(float A[50][50],int n, int m);
void menor(float A[50][50],int n, int m);
int main()
{
system("cls");
// system("color A0");
int n,m;
float A[50][50];
cout<<"\n\n\t- INGRESA FILAS : ";
cin>>n;
cout<<"\n\t- INGRESA COLUMNAS : ";
cin>>m;
ingresar(A,n,m);
mostrar(A,n,m);
mayor(A,n,m);
menor(A,n,m);
cout<<endl<<endl;
system("pause");
}
void ingresar(float A[50][50],int n, int m)
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
cout<<endl<<"\t\t\t\t - ["<<i<<"]"<<"["<<j<<"] =";
cin>>A[i][j];
}
}
void mostrar(float A[50][50],int n, int m)
{
cout<<"\n\n\t Matriz = \n";
for(int i=0;i<n;i++)
{
cout<<endl<<"\n\t\t";
for(int j=0;j<m;j++)
{
cout<<" "<<setw(4)<<A[i][j];
}
}
}
void mayor(float A[50][50],int n, int m)
{
float mayor=A[0][0];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
if(A[i][j]>mayor)
mayor=A[i][j];
}
cout<<"\n\n\n\t\t\tEL MAYOR = "<<mayor;
}
void menor(float A[50][50],int n, int m)
{
float menor=A[0][0];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
if(A[i][j]<menor)
menor=A[i][j];
}
cout<<"\n\n\t\t\tEL MENOR = "<<menor;
}
Código:
#include<iostream>
#include<iomanip>
#include<stdlib.h>
using namespace std;
void ingresar(float A[50][50],int n, int m);
void mostrar(float A[50][50],int n, int m);
void mayor(float A[50][50],int n, int m);
void menor(float A[50][50],int n, int m);
int main()
{
system("cls");
// system("color A0");
int n,m;
float A[50][50];
cout<<"\n\n\t- INGRESA FILAS : ";
cin>>n;
cout<<"\n\t- INGRESA COLUMNAS : ";
cin>>m;
ingresar(A,n,m);
mostrar(A,n,m);
mayor(A,n,m);
menor(A,n,m);
cout<<endl<<endl;
system("pause");
}
void ingresar(float A[50][50],int n, int m)
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
cout<<endl<<"\t\t\t\t - ["<<i<<"]"<<"["<<j<<"] =";
cin>>A[i][j];
}
}
void mostrar(float A[50][50],int n, int m)
{
cout<<"\n\n\t Matriz = \n";
for(int i=0;i<n;i++)
{
cout<<endl<<"\n\t\t";
for(int j=0;j<m;j++)
{
cout<<" "<<setw(4)<<A[i][j];
}
}
}
void mayor(float A[50][50],int n, int m)
{
float mayor=A[0][0];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
if(A[i][j]>mayor)
mayor=A[i][j];
}
cout<<"\n\n\n\t\t\tEL MAYOR = "<<mayor;
}
void menor(float A[50][50],int n, int m)
{
float menor=A[0][0];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
if(A[i][j]<menor)
menor=A[i][j];
}
cout<<"\n\n\t\t\tEL MENOR = "<<menor;
}
Menor y Mayor mediante una matriz c/c++
Hoy vamos a hacer un programa en que el elemento A y B se ingresen #n cantidad de elementos y que nos de al final un elemento C de cual es la intersección de los elementos A y B.
Codigo:
#include<iostream>
#include<stdlib.h>
using namespace std;
int contador = 0;
int *Ingresar( int *A , int N)
{
A = new int [100];
for( int i = 0 ; i < N ; i++ )
{
cout<<"\n\t\t\t - ["<<i+1<<"] : ";
cin>>A[i];
}
return A;
}
int *Interseccion( int *A , int *B , int *C , int N ,int M )
{
C = new int [100];
for( int i = 0 ; i < N ; i++ )
for( int j = 0 ; j < M ; j++ )
if ( A[i] == B[j])
{
C[contador++] = A[i];
}
if ( contador == 0)
return 0;
else
return C;
}
void Mostrar( int *A , int N)
{
cout<<" "<<A[0];
for( int i = 1 ; i < N ; i++ )
cout<<" , "<<A[i];
}
int main()
{
int N, M;
int *A = NULL;
int *B = NULL;
int *C = NULL;
cout<<"\n\n\t Primer Conjunto : ";
cin>>N;
A = Ingresar(A , N);
cout<<"\n\n\t\t A = { ";
Mostrar(A,N);
cout<<" } \n\n";
cout<<"\n\n\t Segundo Conjunto : ";
cin>>M;
B = Ingresar(B , M);
cout<<"\n\n\t\t B = { ";
Mostrar(B,M);
cout<<" } \n\n";
C = Interseccion( A , B , C , N , M );
cout<<"\n\n\t\t Interseccion C = { ";
Mostrar(C,contador);
cout<<" } \n\n";
cout<<endl<<endl;
system("pause");
return 0;
}
Interseccion de conjutos c/c++
Esta vez Trabajaremos en Excel ya sea 2007-2010-2013 realizaremos un código de registro en el cual llenaremos las celdas al llenar los campos del registro y nos calculara automáticamente la edad.
1.- llenar los campos de Nombres, Apellidos, Cédula, Fecha de Nacimiento, Edad( La edad sera calculada automáticamente al momento de pasar los datos ingresados al campo de las celdas.
2.- Informar al usuario si desea guardar los datos.
3.- una ves confirmado el guardar informar si el año es bisiesto o no.
Código enVisual Basic (Excel )
Private Sub CommandButton1_Click()
Dim NOMBRE, APELLIDO, CEDULA, FECHA_NACIMIENTO As String
Dim REGISTRO As Double
Dim FECHA As Date, EDAD, I, J As Integer
Dim MES, DIA, ANIO As String
Dim bEscribe1, bEscribir2 As Boolean
'Inicializamos las variables para revisar la fila vacias
I = 1
J = 2
bEscribe1 = False
bEscribe2 = False
'mid substrae una subcadena de una cadena
NOMBRE = TextBox1.Value
APELLIDO = TextBox2.Value
CEDULA = TextBox3.Value
FECHA_NACIMIENTO = TextBox4.Value
MES = Mid(FECHA_NACIMIENTO, 4, 2)
DIA = Mid(FECHA_NACIMIENTO, 1, 2)
ANIO = Mid(FECHA_NACIMIENTO, 7, 4)
'trim buscar espacio en blanco para colocarlos en un orden
Do While bEscribe1 = False
If Trim(Hoja1.Cells(I, 1)) = "" And Trim(Hoja1.Cells(I, 2)) = "" And Trim(Hoja1.Cells(I, 3)) = "" And Trim(Hoja1.Cells(I, 4)) = "" And Trim(Hoja1.Cells(I, 5)) = "" Then
bEscribe1 = True
Else
I = I + 1
End If
Loop
Do While bEscribe2 = False
If Trim(Hoja2.Cells(J, 1)) = "" And Trim(Hoja2.Cells(J, 2)) = "" And Trim(Hoja2.Cells(J, 3)) = "" And Trim(Hoja2.Cells(J, 4)) = "" And Trim(Hoja2.Cells(J, 5)) = "" Then
bEscribe2 = True
Else
J = J + 1
End If
Loop
'len mide una cadena
If Len(FECHA_NACIMIENTO) = 10 Then
If MES >= 1 And MES <= 12 And DIA >= 1 And DIA <= 31 And ANIO >= 1 And ANIO <= Year(Date) Then
FECHA = CDate(TextBox4)
EDAD = CInt((Date - FECHA) / 365)
a = MsgBox("CONFIRMAR GUARDAR DATOS", vbOKCancel, "AVISO")
If a = 1 Then
If MES = 12 Then
Hoja2.Cells(J, 1) = NOMBRE
Hoja2.Cells(J, 2) = APELLIDO
Hoja2.Cells(J, 3) = CEDULA
Hoja2.Cells(J, 4) = FECHA_NACIMIENTO
Hoja2.Cells(J, 5) = EDAD
Else
Hoja1.Cells(I, 1) = NOMBRE
Hoja1.Cells(I, 2) = APELLIDO
Hoja1.Cells(I, 3) = CEDULA
Hoja1.Cells(I, 4) = FECHA_NACIMIENTO
Hoja1.Cells(I, 5) = EDAD
End If
'calculo del año
TextBox4.Text = Year(TextBox4.Text)
año = TextBox4.Text
If año Mod 100 = 0 Then
Bisiesto = (año Mod 400 = 0)
Else
Bisiesto = (año Mod 4 = 0)
End If
If Bisiesto = True Then
MsgBox ("AÑO ES BISIESTO")
Else
MsgBox ("AÑO NO ES BISIESTO")
End If
TextBox1.Text = Empty
TextBox2.Text = Empty
TextBox3.Text = Empty
TextBox4.Text = Empty
TextBox1.SetFocus
Else
MsgBox ("GRACIAS, LA INFORMACION NO SE GUARDO")
End If
Else
MsgBox ("ERROR, EN LA FECHA INGRESADA")
End If
Else
MsgBox ("ERROR EL FORMATO DE LA FECHA DEBE SER DD/MM/AAAA")
End If
End Sub
Private Sub CommandButton2_Click()
a = MsgBox("DESEA SALIR?", vbOKCancel, "AVISO")
If a = 1 Then
End
End If
End Sub
Private Sub CommandButton3_Click()
TextBox1.Text = Empty
TextBox2.Text = Empty
TextBox3.Text = Empty
TextBox4.Text = Empty
End Sub
Private Sub Label1_Click()
End Sub
Private Sub Label5_Click()
End Sub
Simular Registro (Excel 2016) Code VB
En este programa veremos utilizando las clases para crear operadores en que el usuario ingrese dos números cualquiera.
Codigo:
#include <iostream>
#include <stdlib.h>
using namespace std;
class Operaciones{
public:
int a;
int b;
void set_a_b(int n1, int n2);
void suma();
void resta();
void multiplicacion();
void divicion();
};
void Operaciones::set_a_b(int n1, int n2)
{
cout<<"Ingrese valores para LAS OPERACIONES: "<<endl;
cin>>n1; cin>>n2;
cout<<"\n\t\t\t Resultados\n"<<endl;
a=n1;
b=n2;
}
void Operaciones::suma()
{
cout<<"\n\t lA SUMA DE "<<a<<" + "<<b<<" ES: "<<a+b<<"\n";
}
void Operaciones::resta()
{
cout<<"\n\t lA RESTA DE "<<a<<" - "<<b<<" ES: "<<a-b<<"\n";
}
void Operaciones::divicion()
{
cout<<"\n\t lA DIVISION DE "<<a<<" / "<<b<<" ES: "<<a/b<<"\n";
}
void Operaciones::multiplicacion()
{
cout<<"\n\t lA MULTIPLICACION DE "<<a<<" * "<<b<<" ES: "<<a*b<<"\n";
}
int main()
{
system("color f9");
Operaciones op;
op.set_a_b('a','b');
op.suma();
op.resta();
op.multiplicacion();
op.divicion();
return 0;
}
Clases de operadores
Veremos cómo definir una CLASE, funciones miembro crear OBJETOS de la clase, datos privados y públicos.
Código:
#include <stdlib.h>
#include <iostream>
using namespace std;
class Calendario{
private:
int dias;
char meses[15];
int semana;
int anio;
public:
void recibirDia(){
cout<<"\n\t Dia: "; cin>>dias;
}
void recibirMeses(){
cout<<"\t Mes: "; cin>>meses;
}
void recibirSemana(){
cout<<"\t Semana: "; cin>>semana;
}
void recibirAnio(){
cout<<"\t Anio: "; cin>>anio;
}
void dis(){
cout<<"\n\t Dia es "<<dias<<"\n";
}
void mess(){
cout<<"\t Mes es "<<meses<<"\n";
}
void seman(){
cout<<"\t Semana es "<<semana<<"\n";
}
void any(){
cout<<"\t Anio es "<<anio<<"\n";
}
};
int main(){
system("color f3");
cout<<"\n\t\t\t EJERCICIO 16 OBJETO CALENDARIO \n"<<endl;
Calendario calen;
calen.recibirDia();
calen.recibirMeses();
calen.recibirSemana();
calen.recibirAnio();
calen.dis();
calen.mess();
calen.seman();
calen.any();
return 0;
}
Objetos y Clases c++
1 | suma |
2 | resta |
3 | multiplicacion |
4 | division |
5 | fahrenheit |
6 | formula |
7 | formula 1000 |
8 | A mayor q B |
9 | A menor q B |
10 | mayor de 3 numeros |
11 | menor de 3 numeros |
12 | tecla Esc |
13 | Operador +,-,*,/. |
14 | Factorial |
15 | Promedio de 3 notas |
16 | Promedio de Notas (3) con for |
17 | Pi |
18 | fibonacci |
19 | de menor a mayor 3 numeros |
20 | Numero primo |
21 | año bisiesto |
22 | sumatoria (i+1) |
23 | sumatoria (i-1) |
24 | sumatoria (i2)+1 |
25 | calcular edad |
26 | Iva y total de un producto |
27 | Ingresa numero y devuelve en letras |
28 | Buscar frase o carácter |
29 | de mayúscula a minúscula |
30 | concatenar cadenas o caracteres |
31 | Posición de frase o carácter |
32 | Peso de personas |
33 | Ordenar vector metodo burbuja |
34 | Ordenar matriz metodo burbuja |
35 | Piramide de asteriscos |
36 | El ahorcado |
37 | Tres en raya |
38 | Mayor o menor de edad |
39 | Verificar si numero de cedula es correcto |
40 | Códigos de provincia, imprimir Guayaquil y Pichincha |
41 | Archivos (crear, ver, ingresar) txt. |
42 | Archivos (ingresar, buscar, eliminar) txt. |
43 | Alumno promedio (agregar, buscar, guardar, eliminar) |
44 | Estructura de una agenda |
45 | Salario mínimo y máximo |
46 | vector 6 intersección vector vector 6 |
47 | matriz 2x2 intersección matriz 2x2 |
48 | Vector de 5 sueldo, vector incremento 20% |
49 | Vector de 10 Imprimir numeros pares |
50 | Vector de 10 Imprimir numeros impares |
51 | Función Random (BUSCAMINAS) |
52 | Multiplicar matriz de 3x3 por matriz de 3x2 igual a matriz de 3x2 |
52 Ejercicios de Programación C/C++ (Carpeta)
En este programa vamos a crear un MENÚ en el cual se realizaran los siguientes pasos:
1.-Agregar Cédula, Nombre and Apellido.
2.- 2 Notas y calcular automáticamente el promedio .
3.Buscar por Cédula y mostrar todos los datos registrados.
4.-Eliminar por Cédula todos los datos del alumno.
Codigo:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h> /* setlocale */
#include <conio.h>
#define MAX 80
#define VALOR_CENTINELA -1
/* Estructuras */
struct alumno {
int cedula;
char nombre[MAX];
float nota1;
float nota2;
int promedio;
};
typedef struct alumno Estudiante;
/* Opciones del Menú */
void menuPrincipal();
void menuInsertar();
void menuBuscar();
void menuEliminar();
void menuMostrar();
Estudiante *obtenerProductos(int *n);
char existeEstudiante(int cedulaProducto, Estudiante *alumno);
char insertarEstudiante(Estudiante alumno);
char eliminarEstudiante(int cedulaEstudiante);
char eliminacionFisica();
char guardarReporte();
/* Función de lectura de cadenas */
int leecad(char *cad, int n);
char linea[MAX];
int main()
{
setlocale(LC_ALL, "spanish"); /* Permite imprimir caracteres con tilde */
menuPrincipal();
return 0;
}
void menuPrincipal()
{
char repite = 1;
int opcion = -1;
do {
system("cls");
printf("\n\t\t\t\tMENU PRINCIPAL\n");
printf("\n\t\t[1] AGREGAR\n");
printf("\t\t[2] Buscar\n");
printf("\t\t[3] Eliminar\n");
printf("\t\t[4] Mostrar listado de productos\n");
printf("\t\t[5] Salir\n");
printf("\n\t\tIngrese su opcion: [ ]\b\b");
/* Lectura segura de un entero */
leecad(linea, MAX);
sscanf(linea, "%d", &opcion);
switch (opcion) {
case 1:
menuInsertar();
break;
case 2:
menuBuscar();
break;
case 3:
menuEliminar();
break;
case 4:
menuMostrar();
break;
case 5:
repite = 0;
break;
}
} while (repite);
}
void menuInsertar()
{
Estudiante alumno;
int cedulaEstudiante = 0;
char repite = 1;
char respuesta[MAX];
do {
system("cls");
printf("\n\t\t\t==> REGISTRAR ALUMNO <==\n");
printf("\n\tCEDULA: ");
leecad(linea, MAX);
sscanf(linea, "%d", &cedulaEstudiante);
if (!existeEstudiante(cedulaEstudiante, &alumno)) {
alumno.cedula = cedulaEstudiante;
printf("\tNombres: ");
leecad(alumno.nombre, MAX);
printf("\tNota 1: ");
leecad(linea, MAX);
sscanf(linea, "%f", &alumno.nota1);
printf("\tNota 2: ");
leecad(linea, MAX);
sscanf(linea, "%f", &alumno.nota2);
alumno.promedio=(alumno.nota1+alumno.nota2)/2;
printf("\tPromedio: %d",alumno.promedio);
leecad(linea, MAX);
if (insertarEstudiante(alumno)) {
printf("\n\tEl ESTUDIANTE se Registro correctamente\n");
} else {
printf("\n\tOcurrió un error al registrar\n");
printf("\tInténtelo mas tarde\n");
}
} else {
printf("\n\tEl estudiante con cedula %d ya existe.\n", cedulaEstudiante);
printf("\tNo puede registrar dos veces con la misma cedula.\n");
}
printf("\n\tDesea registrar Otro Estudiante? [S/N]: ");
leecad(respuesta, MAX);
if (!(strcmp(respuesta, "S") == 0 || strcmp(respuesta, "s") == 0)) {
repite = 0;
}
} while (repite);
}
void menuBuscar()
{
Estudiante alumno;
int cedulaEstudiante;
char repite = 1;
char respuesta[MAX];
do {
system("cls");
printf("\n\t\t\t==> BUSCAR CEDULA DEL ESTUDIANTE <==\n");
printf("\n\tCEDULA: ");
leecad(linea, MAX);
sscanf(linea, "%d", &cedulaEstudiante);
if (existeEstudiante(cedulaEstudiante, &alumno)) {
printf ("\n\tESTUDINTE ENCONTRADO\n");
printf("\n\tCEDULA: %d\n", alumno.cedula);
printf("\tNombres: %s\n", alumno.nombre);
printf("\tNOTA 1: %.1f \n", alumno.nota1);
printf("\tNOTA 2: %.1f \n", alumno.nota2);
printf("\tPROMEDIO: %d\n", alumno.promedio);
} else {
printf("\n\tEl ESTUDIANTE con cedula %d no existe.\n", cedulaEstudiante);
}
printf("\n\tDesea seguir buscando otra cedula? [S/N]: ");
leecad(respuesta, MAX);
if (!(strcmp(respuesta, "S") == 0 || strcmp(respuesta, "s") == 0)) {
repite = 0;
}
} while (repite);
}
void menuEliminar()
{
Estudiante alumno;
int cedulaEstudiante;
char repite = 1;
char respuesta[MAX];
do {
system("cls");
printf("\n\t\t\t==> ELIMINAR Por CEDULA <==\n");
printf("\n\tCEDULA: ");
leecad(linea, MAX);
sscanf(linea, "%d", &cedulaEstudiante);
if (existeEstudiante(cedulaEstudiante, &alumno))
{
printf("\n\tCEDULA: %d\n", alumno.cedula);
printf("\tNombres: %s\n",alumno.nombre);
printf("\tNOTA 1: %.1f \n", alumno.nota1);
printf("\tNOTA 2: %.1f \n", alumno.nota2);
printf("\tPROMEDIO: %d\n", alumno.promedio);
printf("\n\tSeguro que desea eliminar el Alumno? [S/N]: ");
leecad(respuesta, MAX);
if (strcmp(respuesta, "S") == 0 || strcmp(respuesta, "s") == 0) {
if (eliminarEstudiante(cedulaEstudiante)) {
printf("\n\tEstudiante eliminado satisfactoriamente.\n");
} else {
printf("\n\tEl Estudiante no pudo ser eliminado\n");
}
}
} else {
printf("\n\tEl ESTUDIANTE con cedula %d no existe.\n", cedulaEstudiante);
}
printf("\n\tDesea eliminar otro estudiante? [S/N]: ");
leecad(respuesta, MAX);
if (!(strcmp(respuesta, "S") == 0 || strcmp(respuesta, "s") == 0)) {
repite = 0;
}
} while (repite);
}
void menuMostrar()
{
Estudiante *productos;
int numeroProductos;
int i;
char respuesta[MAX];
system("cls");
productos = obtenerProductos(&numeroProductos);
if (numeroProductos == 0) {
printf("\n\tEl archivo está vacío!!\n");
system("pause>nul");
} else {
printf("\n\t\t ==> ESTUDIANTES REGISTRADOS <==\n");
printf(" ------------------------------------------------------------------------------\n");
printf("%10s\t%-20s%15s%15s%10s\n", "CEDULA", "NOMBRES", "NOTA 1", "NOTA 2", "PROMEDIO");
printf(" ------------------------------------------------------------------------------\n");
for (i = 0; i < numeroProductos; i++) {
if (productos[i].cedula != VALOR_CENTINELA) {
printf("%10d \t%-20.20s%15.1f%15.1f%8d\n", productos[i].cedula, productos[i].nombre, productos[i].nota1, productos[i].nota2, productos[i].promedio);
}
}
printf(" ------------------------------------------------------------------------------\n");
printf("\n\tDesea guardar el registro? [S/N]: ");
leecad(respuesta, MAX);
if (strcmp(respuesta, "S") == 0 || strcmp(respuesta, "s") == 0) {
if (guardarReporte()) {
printf("\n\tEl registro fue guardado con éxito\n");
} else {
printf("\n\tOcurrió un error al guardar el registro\n");
}
system("pause>nul");
}
}
}
Estudiante *obtenerProductos(int *n)
{
FILE *archivo;
Estudiante alumno;
Estudiante *productos;
int i;
/* Abre el archivo en modo lectura */
archivo = fopen("productos.dat", "rb");
if (archivo == NULL) { /* Si no se pudo abrir el archivo, el valor de archivo es NULL */
*n = 0; /* No se pudo abrir. Se considera n */
productos = NULL;
} else {
fseek(archivo, 0, SEEK_END); /* Posiciona el cursor al final del archivo */
*n = ftell(archivo) / sizeof(Estudiante);
productos = (Estudiante *)malloc((*n) * sizeof(Estudiante));
/* Se recorre el archivo secuencialmente */
fseek(archivo, 0, SEEK_SET); /* Posiciona el cursor al principio del archivo */
fread(&alumno, sizeof(alumno), 1, archivo);
i = 0;
while (!feof(archivo)) {
productos[i++] = alumno;
fread(&alumno, sizeof(alumno), 1, archivo);
}
/* Cierra el archivo */
fclose(archivo);
}
return productos;
}
char existeEstudiante(int cedulaEstudiante, Estudiante *alumno){
FILE *archivo;
char existe;
/* Abre el archivo en modo lectura */
archivo = fopen("productos.dat", "rb");
if (archivo == NULL) { /* Si no se pudo abrir el archivo, el valor de archivo es NULL */
existe = 0;
} else {
existe = 0;
fread(&(*alumno), sizeof(*alumno), 1, archivo);
while (!feof(archivo)) {
if ((*alumno).cedula == cedulaEstudiante) {
existe = 1;
break;
}
fread(&(*alumno), sizeof(*alumno), 1, archivo);
}
/* Cierra el archivo */
fclose(archivo);
}
return existe;
}
char insertarEstudiante(Estudiante alumno)
{
FILE *archivo;
char insercion;
/* Abre el archivo para agregar datos al final */
archivo = fopen("productos.dat", "ab"); /* Añade datos al final. Si el archivo no existe, es creado */
if (archivo == NULL) { /* Si no se pudo abrir el archivo, el valor de archivo es NULL */
insercion = 0;
} else {
fwrite(&alumno, sizeof(alumno), 1, archivo);
insercion = 1;
/* Cierra el archivo */
fclose(archivo);
}
return insercion;
}
/* ELiminación lógica de un registro */
char eliminarEstudiante(int cedulaEstudiante)
{
FILE *archivo;
FILE *auxiliar;
Estudiante alumno;
char elimina;
/* Abre el archivo para leer */
archivo = fopen("productos.dat", "r+b"); /* Modo lectura/escritura. Si el archivo no existe, es creado */
if (archivo == NULL) { /* Si no se pudo abrir el archivo, el valor de archivo es NULL */
elimina = 0;
} else {
/* Se busca el registro que se quiere borrar. Cuando se encuentra, se sitúa en esa posición mediante la
función fseek y luego se modifica el campo clave de ese registro mediante algún valor centinela, eso se logra
con fwrite. Hasta allí se ha logrado una eliminación LÓGICA. Porque el registro sigue ocupando espacio en el archivo físico */
elimina = 0;
fread(&alumno, sizeof(alumno), 1, archivo);
while (!feof(archivo)) {
if (alumno.cedula == cedulaEstudiante) {
fseek(archivo, ftell(archivo) - sizeof(alumno), SEEK_SET);
alumno.cedula = VALOR_CENTINELA;
fwrite(&alumno, sizeof(alumno), 1, archivo);
elimina = 1;
break;
}
fread(&alumno, sizeof(alumno), 1, archivo);
}
/* Cierra el archivo */
fclose(archivo);
}
return elimina;
}
char guardarReporte()
{
FILE *archivo;
char guardado;
Estudiante *productos;
int numeroProductos;
int i;
productos = obtenerProductos(&numeroProductos);
if (numeroProductos == 0) {
guardado = 0;
} else {
/* Abre el archivo en modo texto para escritura */
archivo = fopen("reporte.txt", "w");
if (archivo == NULL) { /* Si no se pudo abrir el archivo, el valor de archivo es NULL */
guardado = 0;
} else {
fprintf(archivo, "\n\t\t ==> ESTUDIANTES REGISTRADOS <==\n");
fprintf(archivo, " ------------------------------------------------------------------------------\n");
fprintf(archivo, "%8s\t%-20s%15s%15s%10s\n", "CEDULA", "NOMBRES", "NOTA 1", "NOTA 2", "PROMEDIO");
fprintf(archivo, " ------------------------------------------------------------------------------\n");
for (i = 0; i < numeroProductos; i++) {
if (productos[i].cedula != VALOR_CENTINELA) {
fprintf(archivo, "%7d \t%-20.20s%15.1f%15.1f%8d\n", productos[i].cedula, productos[i].nombre, productos[i].nota1, productos[i].nota2, productos[i].promedio);
}
}
fprintf(archivo, " ------------------------------------------------------------------------------\n");
guardado = 1;
/* Cierra el archivo */
fclose(archivo);
}
}
return guardado;
}
int leecad(char *cad, int n)
{
int i, c;
/* 1 COMPROBACIÓN DE DATOS INICIALES EN EL BUFFER */
c = getchar();
if (c == EOF) {
cad[0] = '\0';
return 0;
}
if (c == '\n') {
i = 0;
} else {
cad[0] = c;
i = 1;
}
/* 2. LECTURA DE LA CADENA */
for (; i < n - 1 && (c = getchar()) != EOF && c != '\n'; i++) {
cad[i] = c;
}
cad[i] = '\0';
/*3. LIMPIEZA DEL BUFFER */
/* Finalmente limpiamos el buffer si es necesario */
if (c != '\n' && c != EOF) /* es un caracter */
while ((c = getchar()) != '\n' && c != EOF);
return 1;
}
1.-Agregar Cédula, Nombre and Apellido.
2.- 2 Notas y calcular automáticamente el promedio .
3.Buscar por Cédula y mostrar todos los datos registrados.
4.-Eliminar por Cédula todos los datos del alumno.
Codigo:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h> /* setlocale */
#include <conio.h>
#define MAX 80
#define VALOR_CENTINELA -1
/* Estructuras */
struct alumno {
int cedula;
char nombre[MAX];
float nota1;
float nota2;
int promedio;
};
typedef struct alumno Estudiante;
/* Opciones del Menú */
void menuPrincipal();
void menuInsertar();
void menuBuscar();
void menuEliminar();
void menuMostrar();
Estudiante *obtenerProductos(int *n);
char existeEstudiante(int cedulaProducto, Estudiante *alumno);
char insertarEstudiante(Estudiante alumno);
char eliminarEstudiante(int cedulaEstudiante);
char eliminacionFisica();
char guardarReporte();
/* Función de lectura de cadenas */
int leecad(char *cad, int n);
char linea[MAX];
int main()
{
setlocale(LC_ALL, "spanish"); /* Permite imprimir caracteres con tilde */
menuPrincipal();
return 0;
}
void menuPrincipal()
{
char repite = 1;
int opcion = -1;
do {
system("cls");
printf("\n\t\t\t\tMENU PRINCIPAL\n");
printf("\n\t\t[1] AGREGAR\n");
printf("\t\t[2] Buscar\n");
printf("\t\t[3] Eliminar\n");
printf("\t\t[4] Mostrar listado de productos\n");
printf("\t\t[5] Salir\n");
printf("\n\t\tIngrese su opcion: [ ]\b\b");
/* Lectura segura de un entero */
leecad(linea, MAX);
sscanf(linea, "%d", &opcion);
switch (opcion) {
case 1:
menuInsertar();
break;
case 2:
menuBuscar();
break;
case 3:
menuEliminar();
break;
case 4:
menuMostrar();
break;
case 5:
repite = 0;
break;
}
} while (repite);
}
void menuInsertar()
{
Estudiante alumno;
int cedulaEstudiante = 0;
char repite = 1;
char respuesta[MAX];
do {
system("cls");
printf("\n\t\t\t==> REGISTRAR ALUMNO <==\n");
printf("\n\tCEDULA: ");
leecad(linea, MAX);
sscanf(linea, "%d", &cedulaEstudiante);
if (!existeEstudiante(cedulaEstudiante, &alumno)) {
alumno.cedula = cedulaEstudiante;
printf("\tNombres: ");
leecad(alumno.nombre, MAX);
printf("\tNota 1: ");
leecad(linea, MAX);
sscanf(linea, "%f", &alumno.nota1);
printf("\tNota 2: ");
leecad(linea, MAX);
sscanf(linea, "%f", &alumno.nota2);
alumno.promedio=(alumno.nota1+alumno.nota2)/2;
printf("\tPromedio: %d",alumno.promedio);
leecad(linea, MAX);
if (insertarEstudiante(alumno)) {
printf("\n\tEl ESTUDIANTE se Registro correctamente\n");
} else {
printf("\n\tOcurrió un error al registrar\n");
printf("\tInténtelo mas tarde\n");
}
} else {
printf("\n\tEl estudiante con cedula %d ya existe.\n", cedulaEstudiante);
printf("\tNo puede registrar dos veces con la misma cedula.\n");
}
printf("\n\tDesea registrar Otro Estudiante? [S/N]: ");
leecad(respuesta, MAX);
if (!(strcmp(respuesta, "S") == 0 || strcmp(respuesta, "s") == 0)) {
repite = 0;
}
} while (repite);
}
void menuBuscar()
{
Estudiante alumno;
int cedulaEstudiante;
char repite = 1;
char respuesta[MAX];
do {
system("cls");
printf("\n\t\t\t==> BUSCAR CEDULA DEL ESTUDIANTE <==\n");
printf("\n\tCEDULA: ");
leecad(linea, MAX);
sscanf(linea, "%d", &cedulaEstudiante);
if (existeEstudiante(cedulaEstudiante, &alumno)) {
printf ("\n\tESTUDINTE ENCONTRADO\n");
printf("\n\tCEDULA: %d\n", alumno.cedula);
printf("\tNombres: %s\n", alumno.nombre);
printf("\tNOTA 1: %.1f \n", alumno.nota1);
printf("\tNOTA 2: %.1f \n", alumno.nota2);
printf("\tPROMEDIO: %d\n", alumno.promedio);
} else {
printf("\n\tEl ESTUDIANTE con cedula %d no existe.\n", cedulaEstudiante);
}
printf("\n\tDesea seguir buscando otra cedula? [S/N]: ");
leecad(respuesta, MAX);
if (!(strcmp(respuesta, "S") == 0 || strcmp(respuesta, "s") == 0)) {
repite = 0;
}
} while (repite);
}
void menuEliminar()
{
Estudiante alumno;
int cedulaEstudiante;
char repite = 1;
char respuesta[MAX];
do {
system("cls");
printf("\n\t\t\t==> ELIMINAR Por CEDULA <==\n");
printf("\n\tCEDULA: ");
leecad(linea, MAX);
sscanf(linea, "%d", &cedulaEstudiante);
if (existeEstudiante(cedulaEstudiante, &alumno))
{
printf("\n\tCEDULA: %d\n", alumno.cedula);
printf("\tNombres: %s\n",alumno.nombre);
printf("\tNOTA 1: %.1f \n", alumno.nota1);
printf("\tNOTA 2: %.1f \n", alumno.nota2);
printf("\tPROMEDIO: %d\n", alumno.promedio);
printf("\n\tSeguro que desea eliminar el Alumno? [S/N]: ");
leecad(respuesta, MAX);
if (strcmp(respuesta, "S") == 0 || strcmp(respuesta, "s") == 0) {
if (eliminarEstudiante(cedulaEstudiante)) {
printf("\n\tEstudiante eliminado satisfactoriamente.\n");
} else {
printf("\n\tEl Estudiante no pudo ser eliminado\n");
}
}
} else {
printf("\n\tEl ESTUDIANTE con cedula %d no existe.\n", cedulaEstudiante);
}
printf("\n\tDesea eliminar otro estudiante? [S/N]: ");
leecad(respuesta, MAX);
if (!(strcmp(respuesta, "S") == 0 || strcmp(respuesta, "s") == 0)) {
repite = 0;
}
} while (repite);
}
void menuMostrar()
{
Estudiante *productos;
int numeroProductos;
int i;
char respuesta[MAX];
system("cls");
productos = obtenerProductos(&numeroProductos);
if (numeroProductos == 0) {
printf("\n\tEl archivo está vacío!!\n");
system("pause>nul");
} else {
printf("\n\t\t ==> ESTUDIANTES REGISTRADOS <==\n");
printf(" ------------------------------------------------------------------------------\n");
printf("%10s\t%-20s%15s%15s%10s\n", "CEDULA", "NOMBRES", "NOTA 1", "NOTA 2", "PROMEDIO");
printf(" ------------------------------------------------------------------------------\n");
for (i = 0; i < numeroProductos; i++) {
if (productos[i].cedula != VALOR_CENTINELA) {
printf("%10d \t%-20.20s%15.1f%15.1f%8d\n", productos[i].cedula, productos[i].nombre, productos[i].nota1, productos[i].nota2, productos[i].promedio);
}
}
printf(" ------------------------------------------------------------------------------\n");
printf("\n\tDesea guardar el registro? [S/N]: ");
leecad(respuesta, MAX);
if (strcmp(respuesta, "S") == 0 || strcmp(respuesta, "s") == 0) {
if (guardarReporte()) {
printf("\n\tEl registro fue guardado con éxito\n");
} else {
printf("\n\tOcurrió un error al guardar el registro\n");
}
system("pause>nul");
}
}
}
Estudiante *obtenerProductos(int *n)
{
FILE *archivo;
Estudiante alumno;
Estudiante *productos;
int i;
/* Abre el archivo en modo lectura */
archivo = fopen("productos.dat", "rb");
if (archivo == NULL) { /* Si no se pudo abrir el archivo, el valor de archivo es NULL */
*n = 0; /* No se pudo abrir. Se considera n */
productos = NULL;
} else {
fseek(archivo, 0, SEEK_END); /* Posiciona el cursor al final del archivo */
*n = ftell(archivo) / sizeof(Estudiante);
productos = (Estudiante *)malloc((*n) * sizeof(Estudiante));
/* Se recorre el archivo secuencialmente */
fseek(archivo, 0, SEEK_SET); /* Posiciona el cursor al principio del archivo */
fread(&alumno, sizeof(alumno), 1, archivo);
i = 0;
while (!feof(archivo)) {
productos[i++] = alumno;
fread(&alumno, sizeof(alumno), 1, archivo);
}
/* Cierra el archivo */
fclose(archivo);
}
return productos;
}
char existeEstudiante(int cedulaEstudiante, Estudiante *alumno){
FILE *archivo;
char existe;
/* Abre el archivo en modo lectura */
archivo = fopen("productos.dat", "rb");
if (archivo == NULL) { /* Si no se pudo abrir el archivo, el valor de archivo es NULL */
existe = 0;
} else {
existe = 0;
fread(&(*alumno), sizeof(*alumno), 1, archivo);
while (!feof(archivo)) {
if ((*alumno).cedula == cedulaEstudiante) {
existe = 1;
break;
}
fread(&(*alumno), sizeof(*alumno), 1, archivo);
}
/* Cierra el archivo */
fclose(archivo);
}
return existe;
}
char insertarEstudiante(Estudiante alumno)
{
FILE *archivo;
char insercion;
/* Abre el archivo para agregar datos al final */
archivo = fopen("productos.dat", "ab"); /* Añade datos al final. Si el archivo no existe, es creado */
if (archivo == NULL) { /* Si no se pudo abrir el archivo, el valor de archivo es NULL */
insercion = 0;
} else {
fwrite(&alumno, sizeof(alumno), 1, archivo);
insercion = 1;
/* Cierra el archivo */
fclose(archivo);
}
return insercion;
}
/* ELiminación lógica de un registro */
char eliminarEstudiante(int cedulaEstudiante)
{
FILE *archivo;
FILE *auxiliar;
Estudiante alumno;
char elimina;
/* Abre el archivo para leer */
archivo = fopen("productos.dat", "r+b"); /* Modo lectura/escritura. Si el archivo no existe, es creado */
if (archivo == NULL) { /* Si no se pudo abrir el archivo, el valor de archivo es NULL */
elimina = 0;
} else {
/* Se busca el registro que se quiere borrar. Cuando se encuentra, se sitúa en esa posición mediante la
función fseek y luego se modifica el campo clave de ese registro mediante algún valor centinela, eso se logra
con fwrite. Hasta allí se ha logrado una eliminación LÓGICA. Porque el registro sigue ocupando espacio en el archivo físico */
elimina = 0;
fread(&alumno, sizeof(alumno), 1, archivo);
while (!feof(archivo)) {
if (alumno.cedula == cedulaEstudiante) {
fseek(archivo, ftell(archivo) - sizeof(alumno), SEEK_SET);
alumno.cedula = VALOR_CENTINELA;
fwrite(&alumno, sizeof(alumno), 1, archivo);
elimina = 1;
break;
}
fread(&alumno, sizeof(alumno), 1, archivo);
}
/* Cierra el archivo */
fclose(archivo);
}
return elimina;
}
char guardarReporte()
{
FILE *archivo;
char guardado;
Estudiante *productos;
int numeroProductos;
int i;
productos = obtenerProductos(&numeroProductos);
if (numeroProductos == 0) {
guardado = 0;
} else {
/* Abre el archivo en modo texto para escritura */
archivo = fopen("reporte.txt", "w");
if (archivo == NULL) { /* Si no se pudo abrir el archivo, el valor de archivo es NULL */
guardado = 0;
} else {
fprintf(archivo, "\n\t\t ==> ESTUDIANTES REGISTRADOS <==\n");
fprintf(archivo, " ------------------------------------------------------------------------------\n");
fprintf(archivo, "%8s\t%-20s%15s%15s%10s\n", "CEDULA", "NOMBRES", "NOTA 1", "NOTA 2", "PROMEDIO");
fprintf(archivo, " ------------------------------------------------------------------------------\n");
for (i = 0; i < numeroProductos; i++) {
if (productos[i].cedula != VALOR_CENTINELA) {
fprintf(archivo, "%7d \t%-20.20s%15.1f%15.1f%8d\n", productos[i].cedula, productos[i].nombre, productos[i].nota1, productos[i].nota2, productos[i].promedio);
}
}
fprintf(archivo, " ------------------------------------------------------------------------------\n");
guardado = 1;
/* Cierra el archivo */
fclose(archivo);
}
}
return guardado;
}
int leecad(char *cad, int n)
{
int i, c;
/* 1 COMPROBACIÓN DE DATOS INICIALES EN EL BUFFER */
c = getchar();
if (c == EOF) {
cad[0] = '\0';
return 0;
}
if (c == '\n') {
i = 0;
} else {
cad[0] = c;
i = 1;
}
/* 2. LECTURA DE LA CADENA */
for (; i < n - 1 && (c = getchar()) != EOF && c != '\n'; i++) {
cad[i] = c;
}
cad[i] = '\0';
/*3. LIMPIEZA DEL BUFFER */
/* Finalmente limpiamos el buffer si es necesario */
if (c != '\n' && c != EOF) /* es un caracter */
while ((c = getchar()) != '\n' && c != EOF);
return 1;
}
Menu ingresar datos del alumno y notas calcular automáticamente promedio
Dev-C++ es un Entorno Integrado de Desarrollo para el lenguaje de programación C-C++ que usa Mingw de GCC. Es un software de libre distribución sujeto a los términos de la Licencia Pública General de GNU. Algunas de las características de Dev-C++ son:
- Soporta compiladores basados en GCC, por ejemplo Mingw.
- Tiene integrado un depurador basado en GDB.
- Mantiene una lista con las clases utilizadas durante la edición de un programa.
- Mantiene una lista de las funciones definidas en la implementación del programa.
- Tiene un manejador de proyectos.
- Soporta la actualización del software y bibliotecas a través de Internet.
IDE'S COMPILADOR >> DOWNLOAD HERE
COMPILADOR C / C++ 5.5.3
Parte # 1
Programa en la cual registramos a varios estudiantes.
Registramos
1.-Ingresamos la Cédula del Estudiante.
1.- Full names (El nombre y apellido del Estudiante).
2.- El paralelo y curso del Estudiante.
3.-2 Notas (Podemos agregar mas notas si se nos pide mas que ingresemos).
4.-Calcular automáticamente el promedio.
Código:
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#define bool int
#define true 1
#define false 0
FILE *archivo, *temporal;
void AGREGAR_PERSONA(){
int cedula, registro;
char nombre[30], apellido[20], curso[5], paralelo[20], resp;
float nota_1, nota_2, promed;
bool no_encontrado;
do{
if((archivo = fopen("estudiante.txt","r")) == NULL)
{
cout<<"\n No se Encuentra el Archivo!";
cout<<"\n\n Pulse una tecla para continuar...";
getch();
}else{
clrscr();
no_encontrado = true;
cout<<"\n\t\t\t-->MENU PARA ALUMNOS<--\n"<<endl;
cout<<"\n Introduzca la Cedula: "; cin>> registro;
while ((!feof(archivo)) && (no_encontrado))
{
fscanf(archivo,"%d %s %s %s %s", &cedula, &nombre, &apellido, &curso, ¶lelo);
if(registro == cedula)
{
no_encontrado = false;
}
}
fclose(archivo);
if(no_encontrado)
{
archivo = fopen("estudiante.txt","a");
cedula = registro;
cout<<" Nombres: "; cin>> nombre; cin>> apellido;
cout<<" Curso: "; cin>>curso; cin>>paralelo;
cout<<" Nota 1: ";cin>>nota_1;
cout<<" Nota 2: ";cin>>nota_2;
promed=(nota_1+nota_2)/2;
cout<<" Promedio: "<<promed;
fprintf(archivo,"%d %s %s %s %s\n", cedula, nombre, apellido, curso, paralelo);
}else{
cout<<"\n Alumno ya esta Registrado.";
}
cout<<"\n\n Desea Registrar Otro Alumno S/N: "; resp = getch();
fclose(archivo);
}
}while((resp == 's') || (resp == 'S'));
}
void MENU()
{
cout<<"\n\t\t\t-->MENU PARA ALUMNOS<--\n"<<endl;
cout<<" [1] Agregar Estudiante\n";
cout<<" [2] Salir\n";
}
void main (void)
{
char op;
bool salir = false;
do{
clrscr();
if ((archivo = fopen("estudiante.txt","r")) == NULL)
{
archivo = fopen("estudiante.txt","w");
fclose(archivo);
cout<<"\n\n El Archivo ya se ha Creado con Exito El Archivo .txt\n\n";
MENU();
cout<<"\n Seleccione una Opcion: "; op = getch();
}else{
MENU();
cout<<"\n Seleccione una Opcion: "; op = getch();
}
switch (op)
{
case '1':
AGREGAR_PERSONA();
break;
case '2':
salir = true;
break;
}
}while(salir == false);
}