Portafolios de Programación

En este espacio se podrán ver las tareas en el curso de programación de la sección 114/s5. Además de algunas investigaciones.

Se pretende agregar prácticas de laboratorio y algunos algorítmos simples que se incluyen en el temario de fundamentos de programación.

Abajo se muestra la tarea, investigación o ejercicio que se hizo por última vez en el curso.

Celina O. O.

Libreria menus.h del proyecto

#include

void principal()
{
printf("\n\t __ ");
printf("\n\t .'..'. ");
printf("\n\t .'. __ .'. ");
printf("\n\t / `------` \ ");
printf("\n\t __________.---. _ / \\.--.// \ _ .---.__________ ");
printf("\n\t __..........|.--------.`.---| |. / .'\\ //'. \ .| |---.'.--------.|..........__ ");
printf("\n\t /_ .--||\\\\\\\\\\ `.-| | ) | / \ | ( | |-.' //////////||--. _\ ");
printf("\n\t '''''''''''''.\\\\\\_..--. `|_|' | / .''''. \ | `|_|' .--.._//////.''''''''''''' ");
printf("\n\t '._.-' '. '. | | / .''. \ | | .' .' `-._.` ");
printf("\n\t '. '. \| | | | | |/ .' .' ");
printf("\n\t '. './\\ \ '..' / //\.' .' ");
printf("\n\t '. \ `----' / .' ");
printf("\n\t '. '..____..' .' ");
printf("\n\t '-..______..-' LGB ");
printf("\n\t M O D U L A T O R C O N T R O L 3 . 0 ");
printf("\n\n\n\n\t De un enter para continuar");
}


void menu(){
printf("\n\t O--------------------------------O");
printf("\n\t | |");
printf("\n\t | |");
printf("\n\t | M E N U P R I N C I P A L |");
printf("\n\t | |");
printf("\n\t | |");
printf("\n\t O--------------------------------O\n");
printf("\n\t 1. Registrar alumnos\n");
printf("\n\t 2. Busqueda\n");
printf("\n\t 3. Mostrar registros\n");
printf("\n\t 4. Salir\n");
printf("\n\n\n\t\t\t Escriba 5 para ver la información del autor");
}

void subm_registro()
{
printf("\n\t O--------------------------------O");
printf("\n\t | |");
printf("\n\t | |");
printf("\n\t | M E N U R E G I S T R O |");
printf("\n\t | |");
printf("\n\t | |");
printf("\n\t O--------------------------------O\n");
printf("\n\t 1. Empezar registro\n");
printf("\n\t 2. Mostrar ultimos registros\n");
printf("\n\t 3. Salir\n");
}

void subm_registro2(){
printf("\n\t1. Registrar\n");
printf("\n\t2. Dar de baja\n");
printf("\n\t3. Modificar nombre\n");
printf("\n\t4. Modificar matricula\n");
printf("\n\t5. Salir\n");
}

void subm_buscar()
{
printf("\n\t O--------------------------------O");
printf("\n\t | |");
printf("\n\t | |");
printf("\n\t | M E N U B U S Q U E D A |");
printf("\n\t | |");
printf("\n\t | |");
printf("\n\t O--------------------------------O\n");
printf("\n\t 1. Busqueda por nombre\n");
printf("\n\t 2. Busqueda por matricula\n");
printf("\n\t 3. Salir\n");
}

void subm_mostrar()
{
printf("\n\t O--------------------------------O");
printf("\n\t | |");
printf("\n\t | |");
printf("\n\t | M E N U M O S T R A R |");
printf("\n\t | |");
printf("\n\t | |");
printf("\n\t O--------------------------------O\n");
printf("\n\t 1. Mostrar lista ordenada por nombre\n");
printf("\n\t 2. Mostrar lista ordenada por matricula\n");
printf("\n\t 3. Mostrar lista ordenada por fecha\n");
printf("\n\t 4. Salir");
}


void creditos()
{
printf("\t\n ______________________________________________________________");
printf("\t\n /\ e-mail: snake_nooby@hotmail.com \.");
printf("\t\n \_| dragon_night_11@hotmail.com, campos-man@hotmail.com |");
printf("\t\n | javscdal10@hotmail.com |");
printf("\t\n | ....................................... |");
printf("\t\n | http://celina-programacion.blogspot.com |");
printf("\t\n | __________________________________________________________|___");
printf("\t\n \_/_____________________________________________________________/");
printf("\n\n\n\n\n\n Dibujos en http://www.ugr.es/~peruano/ascii.html, http://www.chris.com/ascii/");
}

Libreria milib.h del proyecto

#include
#include
#include
char nombra[20];
/*Estructura estandar*/
struct modulo{
char nombre[20];
char hora_e[9];
char hora_s[9];
char activ[100];
int maquina;
int matricula;
}usuario[45],p,aux;

/*funcion para obtener la fecha*/

void fecha(char *fech)
{
time_t tiempo = time(0);
struct tm *tlocal = localtime(&tiempo);
strftime(fech,10,"%d-%m-%y",tlocal);
return;
}/*Fin funcion fecha*/

/*funcion para obtener el nombre del archivo deacuerdo a la fecha
del dia*/

void nombre_ar(char *nom){
char da[5]=".dat";
fecha(nom);
strcat(nom,da);
return;
} /*Fin funcion nombre_ar*/

/*funcion para validar
void validar(int dato) en prograso jajaja{
*/


/*funcion para obtener la hora*/
void hora(char *hora)
{
time_t tiempo = time(0);
struct tm *tlocal = localtime(&tiempo);
strftime(hora,7,"%H:%M",tlocal);
return;
}/*Fin funcion hora*/

/*funcion para ingresar los datos de la estructura*/
void ingresar()
{
struct modulo *pus=usuario;
int i,e;
int pos;
char valid[20];
char cas[10],opc='s';
printf("\t**------------------------------------------**\n");
printf("\t** Ingrese los datos para cada alumno **\n ");
printf("\t**------------------------------------------**");
i=0;
do
{ setbuf(stdin,NULL);
printf("\n\tNumero de equipo:\n\t");
scanf("%s",&valid);
if(!(pos=(validar(valid))))
continue;

pos--;
if((pos>45)(pos<=0)){ printf("\n\tNo esxiste ese numero de equipo"); continue; }/*Fin if uno*/ if (((pus+pos)->maquina!=0)){
printf("\n\tNo es posible asignar un equipo que ya ha sido ocupado");
continue;
}/*Fin if dos*/
(pus+pos)->maquina=pos;
printf("\tNombre:\n\t");
scanf("%*c%[^\n]",&(pus+pos)->nombre);
printf("\tMatricula:\n\t");
scanf("%*c%[^\n]",&valid);
if(!(((pus+(pos))->matricula)=(validar(valid)))) {
(pus+pos)->maquina=0;
continue;}
printf("\tActividades:\n\t");//(pus+pos)->maquina=0;
scanf("%*c%[^\n]",&(pus+(pos))->activ);
hora((pus+(pos))->hora_e);
i++;
printf("\tIngresarà mas datos(s/n)?:\n\t");
setbuf(stdin,NULL);
scanf("%c",&opc);
}while(opc!='n');
return;
}/*Fin funcion ingresar*/

/*funcion para imprimir con formatos los datos de la estructura*/
void imprimir(){
int e;
struct modulo *pus;
pus=usuario;
system("clear");
setbuf(stdout,NULL);
printf("\n\t_______ESTADO ACTUAL:_______________________________________________\n");
for(e=0;e<45;e++){>maquina!=0){
printf("\t%-10d",((pus+e)->maquina)+1);
printf("%-10s\t",(pus+e)->nombre);
printf("%-10d\t",(pus+e)->matricula);
printf("%-10s\t",(pus+e)->hora_e);
printf("%-10s\t",(pus+e)->activ);
printf("%-10s\n",(pus+e)->hora_s);
printf("\t----------------------------------------------------------------------\n");
}/*Fin if*/
}/*Fin for*/
return;
}/*fin funcion imprimir*/

/*funcion para dar de baja los datos de la estructura
y quitarlos de la lita de datos que se mostraran ah, tambien
para guardar los datos en un archivo*/

void baja(){
setbuf(stdout,NULL);
FILE *archivo;
int opc,flag=0;;
struct modulo *pus;
pus=usuario;
while(flag==0){
printf("\tEscriba el numero del equipo del usuario que retirara:\n\t");
scanf("%d",&opc);
opc--;
if(((pus+opc)->maquina)==0){
printf("\tNo existe un usuario con ese numero de equipo\n");
continue;
}
else {
flag=1;
}
hora((pus+(opc))->hora_s);
}
if ((archivo=fopen(nombra,"a+"))==NULL)
printf("\nError no se pudo abrir el archivo");
else{
fprintf(archivo,"%d\t",((pus+opc)->maquina+1));
fprintf(archivo,"%s\t",(pus+opc)->nombre);
fprintf(archivo,"%d\t",(pus+opc)->matricula);
fprintf(archivo,"%s\t",(pus+opc)->hora_e);
fprintf(archivo,"%s\t",(pus+opc)->activ);
fprintf(archivo,"%s\n",(pus+opc)->hora_s);
fclose(archivo);
}
(pus+opc)->maquina=0;
return;
}/*Fin funcion baja*/

/*funcion para imprimirel contenido de
un archivo*/

void imprimirar (struct modulo *temp,int el){
int j=0;
for(j=0;j < i="0,j," fichero =" fopen("> ", nombre );
if( fichero )
printf( "existe (ABIERTO)\n" );
else
{
printf( "Error (NO ABIERTO)\n" );
return 0;
}
while(!feof(fichero)){
fscanf(fichero,"%d",&temp[i].maquina);
fscanf(fichero,"%*c%[^\t]",&temp[i].nombre);
fscanf(fichero,"%d",&temp[i].matricula);
fscanf(fichero,"%s",&temp[i].hora_e);
fscanf(fichero,"%*c%[^\t]",&temp[i].activ);
fgets(temp[i].hora_s,15,fichero);
i++;
}
el=i;
printf ("El fichero contiene la informacion de %d registros:\n",i-1);
if( !fclose(fichero) ){

return i;
}
else
{
printf( "\nError: fichero NO CERRADO\n" );
return 0;
}
}//<-esta es la llave jajaja /*Funcion para modificar los datos de la estructura estandar * en caso de algun erro solo por nombre*/ void modificar_n(){ int opc,flag=0; printf("\n\tEliga equipo que modificara:\n\t"); scanf("%d",&opc); opc--; while(flag==0){ if((usuario[opc].maquina)==0){ printf("\n\tEse equipo no esta ocupado"); continue; } else{ printf("\n\tEscriba el nombre correcto\n\t"); scanf("%*c%[^\n]",&usuario[opc].nombre); flag=1; } } return; } /*funcion para modificar los datos solo por matricula*/ void modificar_m(){ int opc,flag=0; printf("\n\tEliga equipo que modificara:\n\t"); scanf("%d",&opc); opc--; while(flag==0){ if((usuario[opc].maquina)==0){ printf("\n\tEse equipo no esta ocupado"); continue; } else{ printf("\n\tEscriba el la matricula correcta\n\t"); scanf("%d",&usuario[opc].matricula); flag=1; } } return; } /*funcion para ordenar los datos de un archivo por fecha*/ void ordena_mat(struct modulo *ap, int k) { int m,i,j,w; FILE *orden; struct modulo temp; char nombre[20]; char a[10]=".m"; fecha(nombre); strcat(nombre,a); if((orden=fopen(nombre, "w"))==NULL){ printf("Error de escritura"); } else{ for(i=0;i < j="0;j<(k-1);j++)" maquina="(ap+i)-">maquina;
(ap+i)->maquina=(ap+j)->maquina;
(ap+j)->maquina=temp.maquina;

strcpy(temp.nombre,(ap+i)->nombre);
strcpy((ap+i)->nombre,(ap+j)->nombre);
strcpy((ap+j)->nombre,temp.nombre);

temp.matricula=(ap+i)->matricula;
(ap+i)->matricula=(ap+j)->matricula;
(ap+j)->matricula=temp.matricula;

strcpy(temp.hora_e,(ap+i)->hora_e);
strcpy((ap+i)->hora_e,(ap+j)->hora_e);
strcpy((ap+j)->hora_e,temp.hora_e);

strcpy(temp.activ,(ap+i)->activ);
strcpy((ap+i)->activ,(ap+j)->activ);
strcpy((ap+j)->activ,temp.activ);
strcpy(temp.hora_s,(ap+i)->hora_s);
strcpy((ap+i)->hora_s,(ap+j)->hora_s);
strcpy((ap+j)->hora_s,temp.hora_s);

}
}

}
for(j=0; jmaquina);
fprintf(orden,"%s\t",(ap+j)->nombre);
fprintf(orden,"%d\t",ap[j].matricula);
fprintf(orden,"%s\t",(ap+j)->hora_e);
fprintf(orden,"%s\t",(ap+j)->activ);
fprintf(orden,"%s\n",(ap+j)->hora_s);
}
}fclose(orden);
}

/*funcion para ordenar los datos por nombre*/
void ordena_nom(struct modulo *ap, int k)
{
int m,i,j,w;
FILE *orden;
struct modulo temp;
char nombre[20];
char a[10]=".n";
fecha(nombre);
strcat(nombre,a);
if((orden=fopen(nombre, "w"))==NULL){
printf("Error de escritura");
}
else{
for(i=0;i<(k);i++) { for(j=0;j<((k)-1);j++) { if(strcmp((ap+i)->nombre,(ap+j)->nombre)<0) maquina="(ap+i)-">maquina;
(ap+i)->maquina=(ap+j)->maquina;
(ap+j)->maquina=temp.maquina;

strcpy(temp.nombre,(ap+i)->nombre);
strcpy((ap+i)->nombre,(ap+j)->nombre);
strcpy((ap+j)->nombre,temp.nombre);

temp.matricula=(ap+i)->matricula;
(ap+i)->matricula=(ap+j)->matricula;
(ap+j)->matricula=temp.matricula;
strcpy(temp.hora_e,(ap+i)->hora_e);
strcpy((ap+i)->hora_e,(ap+j)->hora_e);
strcpy((ap+j)->hora_e,temp.hora_e);

strcpy(temp.activ,(ap+i)->activ);
strcpy((ap+i)->activ,(ap+j)->activ);
strcpy((ap+j)->activ,temp.activ);

strcpy(temp.hora_s,(ap+i)->hora_s);
strcpy((ap+i)->hora_s,(ap+j)->hora_s);
strcpy((ap+j)->hora_s,temp.hora_s);
}
}
}
for(j=0; j<(k); j++){ fprintf(orden,"%d\t",(ap+j)->maquina);
fprintf(orden,"%s\t",(ap+j)->nombre);
fprintf(orden,"%d\t",ap[j].matricula);
fprintf(orden,"%s\t",(ap+j)->hora_e);
fprintf(orden,"%s\t",(ap+j)->activ);
fprintf(orden,"%s\n",(ap+j)->hora_s);
}
fclose(orden);
}
}

/*funcionpara buscar por nombre los datos de el archivo*/

void busca_nombre(){
int i=0, j, numl,flag=0;
char fecha[15];
char nombre[30];
struct modulo *temp;//<- aqui esta la estructura jajaja, ah ok :P
FILE *fichero;
temp=&p;
temp=malloc(200*sizeof(struct modulo));
printf("Escribe la fecha del archivo en el que desea buscar\n");
printf("\nEjemplo: dd-mm-aa.dat, no olvide la extensión\n");
scanf("%*c%[^\n]", &fecha);
printf("Escribe el nombre que deseas buscar: \n");
scanf("%*c%[^\n]",&nombre);
if((fichero=fopen(fecha,"r")==NULL)){
printf("No se puede leer el archivo\n");
}
else{
numl=(leerar(fecha,temp));
for (i=0;i < numl-1;i++){
if(strcmp(temp[i].nombre, nombre)==0){
printf("%-8d",temp[i].maquina);
printf("%-10s",temp[i].nombre);
printf("%-13d",temp[i].matricula);
printf("%-15s",temp[i].hora_e);
printf("%s",temp[i].activ);
printf("%-8s",temp[i].hora_s);
flag=1;
}
}/*Fin while*/
if (flag==0)
printf("\nNo se encontro el dato");
}/*Fin else*/

printf("\nEnter para regresar al menu anterior\n");
getchar();
getchar();
return;
free(temp);
fclose(fichero);
}/*Fin de la funcion*/

void busca_matricula(){
int i=0, j, numl,flag=0;
char fecha[15];
int mat;
struct modulo *temp;//<- aqui esta la estructura jajaja, ah ok :P
FILE *fichero;
temp=&p;
temp=malloc(200*sizeof(struct modulo));
printf("Escribe la fecha del archivo en el que desea buscar\n");
printf("\nEjemplo: dd-mm-aa.dat, no olvide la extensión\n");
scanf("%*c%[^\n]", &fecha);
printf("Escribe la matricula que deseas buscar: \n");
scanf("%d",&mat);
if((fichero=fopen(fecha,"r")==NULL)){
printf("No se puede leer el archivo\n");
}
else{
numl=(leerar(fecha,temp));
for (i=0;i < numl-1;i++){
if(temp[i].matricula==mat){
printf("%-8d",temp[i].maquina);
printf("%-10s",temp[i].nombre);
printf("%-13d",temp[i].matricula);
printf("%-15s",temp[i].hora_e);
printf("%s",temp[i].activ);
printf("%-8s",temp[i].hora_s);
flag=1;
}
}/*Fin while*/
if (flag==0)
printf("\nNo se encontro el dato");
}/*Fin else*/
printf("\nEnter para regresar al menu anterior\n");
getchar();
getchar();
return;
free(temp);
fclose(fichero);
}/*Fin de la funcion*/

int validar(char *numPtr)
{
int numero,i,j,flag=1;
i=strlen(numPtr);
for(j=0;j < i;j++){
if(!(isdigit(numPtr[j]))){
printf("\n\tEn este campo solo se admiten numeros");
flag=0;
break;
}
}
if (flag==1){
numero=atoi(numPtr);
return numero;
}
else
return 0;
}

Cuerpo del Proyecto

#include
#include
#include
#include "menus.h"
#include "milib.h"


int main(){
char *fec[15];
nombre_ar(nombra);
int num_l;
int i, j;
char op1[10],op2[10],op3[10];
int opc1, opc2, opc3;
FILE *buscar;
char busca[20];
for(i=0;i<45;i++){
usuario[i].maquina=0;
strcpy(usuario[i].hora_s,"---");
}
struct modulo *temp;
temp=&p;
temp=malloc(200*sizeof(struct modulo));
do{
printf("%s",nombra);
system("clear");
menu();
scanf("%d", &opc1);
switch(opc1){
system("clear");
case 1:{
do{
system("clear");
setbuf(stdin,NULL);
subm_registro();
scanf("%d",&opc2);
switch(opc2){
case 1:{
do{
//ya quedo
system("clear");
imprimir();
subm_registro2();
scanf("%d", &opc3);
switch(opc3){
case 1:{
ingresar();
break;
}
case 2:{
baja();
break;
}
case 3:{
modificar_n();
break;
}
case 4:{
modificar_m();
break;
}
case 5: break;
default: {
printf("\t\nNo existe esa opción");
break;
}
}
}while(opc3!=5);/*Fin while del "do" case1*/
break;
}/*Fin case uno*/
case 2: {
system("clear");
num_l=(leerar(nombra,temp));
imprimirar(temp,num_l);
printf("\n\tEnter para continuar");
getchar();
getchar();
/*Funcion para mostrar ultimos registros*/
break;
}
case 3: break;
default:{
printf("\n\tNo existen esas opciones");
break;
}//fin del default
}/* Fin del switch registro*/
}while(opc2!=3);/*Fin while del menu registro*/
break;
}//fin del gran case 1 "registrar alumnos"
case 2:{
do{
system("clear");
subm_buscar();
scanf("%d",&opc2);
switch(opc2){
case 1:{
busca_nombre();
continue;
}
case 2:{
busca_matricula();
break;
}
case 3:{
system("clear");
setbuf(stdin,NULL);
printf("\nEscribe la fecha que deseas buscar recuerde la extencion (.dat .m .n)");
scanf("%s",&busca);
printf("\nNota: se mostrara el contenido del archivo con extensión .dat");
if(buscar=(fopen(busca,"r")==NULL)){
printf("No existe ese archivo");}
else
printf("El archivo %s existe en la carpeta actual",busca);
fclose(buscar);
getchar();
getchar();
break;
}
case 4: break;
default:{
printf("\n\tNo existen esos menus:");
break;
}
}//switch buscar
}while(opc2!=4);//menu busqueda
break;
}/*Fin case 2 "busqueda"*/
case 3:{
do{
system("clear");
subm_mostrar();
scanf("%d",&opc2);
switch(opc2){
case 1: {
system("clear");
num_l=(leerar(nombra,temp));
ordena_nom(temp,num_l);
imprimirar(temp,num_l);
getchar();
getchar();
break;
}
case 2: {
system("clear");
num_l=(leerar(nombra,temp));
ordena_mat(temp,num_l);
imprimirar(temp,num_l);
getchar();
getchar();
break;
}
case 3: {
system("clear");
system("find ./home/pro/mipro *.dat");
getchar();
getchar();
break;
}
case 4: break;
default: {
printf("\t\nNo existe esa opción");
break;
}
} /*Fin switch*/
}while(opc2!=4);
}/*Fin case 3 "mostrar registros"*/
case 4: break;
default:{
printf("\n\tNo existe esa opción");
break;
}
break;
}
}while(opc1!=4);
}/*Fin main*/

Código 24: Apuntadores a matriz

Hacer un programa que llene una matriz para 20 estudiantes cn tres columnas, cada columna deberá representar una calificación; posteriormente enviar la matriz a una función que calculará el promedio para cada estudiantey serán enviados a un vecrot el cuál será devuelto por la función.

#include

void suma(int x[][3], int *prom)
{
int m, n, suma[2]={0,0};

for(m=0; m<2; m++)
for(n=0; n<3; n++)
prom[m]=prom[m]+x[m][n];
return;

}

int main()
{
int alumnos[2][3], j, i, *ap, *prom;
int promedio[2]={0,0};
ap=alumnos[3];
prom=promedio;
for(i=0; i<2; i++){
printf("\n\nAlumno %d: \n", i+1);
for (j=0; j<3; j++){
printf("Calificacion %d: ", j+1);
scanf("%d", &alumnos[i][j]);
}
puts("\n");
}

suma(alumnos,prom);

for(i=0; i<2; i++)
printf("El promedio es del alumno %d: %d\n", i+1, promedio[i]/3);
puts("\n");
}

Código 23: Apuntadores a estructura

Un señor tiene una tienda de abarrotes y dentro de ella cuenta con una máquina que vende chocolares, la información que se requiere manejar es la siguiente:
--> tipo de chocolate, costo por pieza, cantidad vendida y costo total de la venta.
El señor x desea que al final del día el programa le indique qué tipo de chocolate fue el más vendido y el costo de la venta.

#include
#define n 2
#include "mismenus.h"


struct carac
{
char nombre[30];
int id; /*ID del producto*/
int cantv;
int cantc; /*Guarda el numero de chocolates existentes*/
int costo;
}choco[n];

int main()
{

setbuf(stdin,NULL);
int opc, i, opc2;
int a, vent;
struct carac *ap;

do
{
menu();
scanf("%d", &opc);
switch(opc)
{

case 0: {
do
{
menuadmin();
scanf("%d", &opc2);
switch (opc2)
case 1:
{
printf("Escribe los datos de %d chocolates", n);
for (i=0; i < n; i++){
printf("\nNombre: \n");
scanf("%*c%[^\n]", &choco[i].nombre);
printf("Cuantos hay: \n");
scanf("%d", &choco[i].cantc);
printf("¿De a como?\n");
scanf("%d", &choco[i].costo);
}
}
}
while(opc2!=3);
break;
}
case 1: {
for (i=0; i < n; i++){
if(choco[i].cantc==0)
printf("\nNo hay chocolates, vuelve más tarde\n");
else{
choco[i].id=i;
printf("\nID del producto: %d", choco[i].id);
printf("\n%s\n", choco[i].nombre);
printf("%d\n", choco[i].cantc);
printf("%d\n\n", choco[i].costo);
}/*Fin else*/
}/*Fin for*/
printf("\n\nId del producto que quieres comprar: ");
scanf("%d", &a);
vent=comprar(ap, &a, 2);
printf("Quedan %d chocolates", choco[i].cantc);
printf("%d",vent);
break;
}

}/*Fin del SWITCH*/

}while(opc!=2);

} /*Fin del main*/





/*Libreria mismenus.h*/
void menu(void)
{
printf("\n Choco Machine \n\n");
printf("\n1.Mostrar y comprar chocolates");
printf("\n2.Salir");
printf("\n\n\nEscribe 0 si eres el administrador\n");
return;
}

void menuadmin(void)
{
printf("\n1.Llenar maquina");
printf("\n2.Reporte de ventas");
printf("\n3.Salir");
return;
}

int comprar(struct carac *ap, int *a, int n)
{
int i, venta;
for (i=0; iif (ap->id[i]==*a)
ap->cant[i]=(ap->cant[i])-1;
else
printf("No existe el ID");
}
venta=venta+1;
return(venta);
}

Código 22: Apuntadores a vector

Programa que llena un vector de numeros reales o flotantes, este es enviado a una función que lo invierte e imprime.


#include
/*Programa que invierte un vector*/
int n;

void funcion(int *ap){

int i,j=n,v;
for(i = 0; i < (n/2); i++)
{
j--;
v=*(ap+i); /*Aritmetica de apuntadores*/
*(ap+i)=*(ap+j); /*Asigna el contenido del apuntador en la */
*(ap+j)=v; /*posicion i al contenido del apuntador en la*/
/*posición j*/
}

printf("\nEl vector invertido queda así: ");
for(i=0; i < n; i++)
printf (" %d ", ap[i]);
puts("\n");
return;
}

int main()
{

printf("¿Cuantos numeros deseas evaluar?\n");
scanf("%d", &n);

int vec[n], i, *ap;
printf("Escribe %d numeros\n", n);

for(i = 0; i < n; i++)
scanf("%d", &vec[i]);

ap = vec;
funcion(ap);

}

Código 21: Apuntadores a vector

Programa que a través de una función dice si un numero es positivo, negativo o neutro.

#include
int a;

void valor(int a){
if(a>0)
printf("El valor %d es positivo", a);
if(a==0)
printf("El valor de %d es neutro", a);
if(a<0)
printf("El valor de %d es negativo", a);
}

int main(){
int a;
int i, n;
int vec[n];
printf("¿Cuántos numeros deseas evaluar?\n");
scanf("%d", &n);

for(i = 0; i < n; i++){
printf("Introduce el %d numero: ", i+1);
scanf("%d", vec[i]);
}

for(i = 0; i < n; i++){
a=vec[i];
valor(a);
}

}

Código 20: Apuntadores a vector

Hacer un programa que llene un vector con 20 numeros enteros, posteriormente deberá ser enviado a una función y esta deberá encontrar el numero mayor y el menor de todo el vector.

#include
int buscar(int *x, int *M, int tam)
{
int *M=0, m=0;
int k;
M=*x;
m=*x;
for (k=0; k < tam; k++){
if(*M < *x+k)
*M = *x;
else
m = * x:
return (m);
x+k;
}

int main(){
int num[20]; i, M, *p;
int m, p=num;
printf("Dame 20 numeros: ");
for(i=0; i<20; i++){
scanf("%d", &num[i]);
m=buscar(p, &M, 20);
printf("El mayor es %d", M);
printf("El menor es %d", m);
return 0;
}

Código 19: Apuntadores

/*Programa que llena un vector con caracteres, después verifica si hay caracteres diferentes de digitos,si los hay los cambia por 1*/

#include
#include

char digito(char carac)
{
if (!isdigit(carac))
carac='1';
return carac;
}


int main ()
{
int i;
char carac[50];
printf ("Dame 50 caracteres:\n");
for (i=0;i<10;i++){
scanf ("%c", &carac[i]);
fflush (stdin);
}
printf ("\n\n El vector queda asi:\n");
for (i=0;i<10;i++){
carac[i]=digito(carac[i]);
printf ("%c\n", carac[i]);
fflush (stdin);}
}

Código 18: Funciones

Hacer un programa que lleve a cabo las siguientes operciones de dos numeros de tipo entero:
Sumar 2 numeros
Restar 2 numeros
Multiplicar 2 numeros
Dividir 2 numeros
Posteriormente mostrarle al usuario un menú en el que podrá elegir la operación que desea realizar.

/*Calculadora*/



#include

int suma(int a,int b)

{int res;

res=a+b;

return(res);} /*Suma*/



int resta(int a,int b)

{int res;

res=a-b;

return(res);} /*Resta*/



int multiplica(int a,int b)

{int res;

res=a*b;

return(res);} /*Multiplicacion*/



int divide(int a,int b)

{int res;

res=a/b;

return(res);} /*División*/



int main()

{

int opc,res,a,b;

char r;

do
/*Menu de opciones para calcular 2 numeros*/

{

printf ("Dame dos numeros:\n");

scanf("%d", &a);

scanf("%d", &b);

printf(" Elija la operacion que desea realizar\n\n");

printf(" 1.Suma\n");

printf(" 2.Resta\n");

printf(" 3.Multiplicacion\n");

printf(" 4.Division\n\n");

scanf("%d",&opc);



switch(opc)

{

case 1: res=suma(a,b);

printf("El resultado de la suma es: %d\n\n",res);break;

case 2: res=resta(a,b);

printf("El resultado de la resta es: %d\n\n",res);break;

case 3: res=multiplica(a,b);

printf("El resultado de la mult. es: %d\n\n",res);break;

case 4: if (b=!0) res=divide(a,b);

printf("El resultado de la div. es %d\n\n",res);break;

default:printf("No ha elegido la opción correcta\n\n"); break;

}



printf("\nDesea calcular otra operacion?s/n");

scanf("%c",&r);

scanf("%c",&r);

printf("\n\n\n\n");



}while(r=='s');



}

Código 17: Ofrendas

Programa que almacena los datos de varias ofrendas y al final imprime cuál fue la que gastó mas.


#include
#include

struct ofrenda
{
char tipo[40];
char lugar[40];
int niveles;
int costo;
}of[20];

int main()
{
int i, num=0;
int vec[num], may=0, ii=0;

printf ("\n¿Cuántas ofrendas deseas evaluar?");
scanf("%d",&num);
num--;

for (i=0; i<=num; i++)
{
printf("\n Ofrenda %d", i+1);
printf("\n\t¿Que tipo de ofrenda es?(Tradicional/Libre)");
gets(of[i].tipo);
gets(of[i].tipo);
printf("\t¿De dónde es la ofrenda?");
gets(of[i].lugar);
printf("\t¿Cuántos niveles tenía la ofrenda?");
scanf("%d", &of[i].niveles);
printf("\t¿Cuánto costó la ofrenda?");
scanf("%d", &of[i].costo);
}

/* Esta parte no se ejecutará en el programa, pero si se deja
de comentar, mostraría los datos que se han introducido*/
/*
for (i=0; i<=num; i++)
{
printf("\n Tipo de Ofrenda %d: %s", i+1,of[i].tipo);
printf("\n Lugar de procedencia: %s", of[i].lugar);
printf("\n Niveles: %d", of[i].niveles);
printf("\n Costo: %d \n", of[i].costo);
}
*/

/*Aquí se hace la comparación de la ofrenda que costó más cara*/

for (i=0; i<=num; i++)
{
vec[i]=of[i].costo;
if(vec[i]>may)
{
may=vec[i];
ii=i+1;
}
}

printf("\n\n La ofrenda No.%d es la mas cara, con %d pesos \n", ii, may);
printf("\n\n F e l i c i d a d e s\n\n\n");



}/*Fin del programa principal*/

Código 16: Suma de matrices

#include
#define max 100

void suma(int M[max][max], int N[max][max], int S[max][max], int f, int c);

int main ()
{

int M[max][max], N[max][max], S[max][max], i, j, f1, f2, c1, c2;

printf("\nDame el numero de filas de la matriz 1: ");
scanf("%d", &f1);
printf("\nDame el numero de columnas de la matriz 1: ");
scanf("%d", &c1);

if((f1>0)&&(c1>0))
{
for(i=0; i < f1; i++)
for(j=0; j < c1; j++)
{
printf("Dame un valor: ");
scanf("%d", &M[i][j]);
}
}

else
{
printf("\nNo puede haber filas o columnas negativas\n");
getchar();
}
puts("\n");

printf("\nDame el numero de filas de la matriz 2: ");
scanf("%d", &f2);
printf("\nDame el numero de columnas de la matriz 2: ");
scanf("%d", &c2);

if((f2>0)&&(c2>0))
{
for(i=0; i < f2; i++)
for(j=0; j < c2; j++)
{
printf("Dame un valor: ");
scanf("%d", &N[i][j]);
}
}

else
{
printf("\nNo puede haber filas o columnas negativas\n");
getchar();
}
puts("\n");

if((f1!=f2)&&(c1!=c2))
{
printf("\nError, no se pueden sumar, numero de filas y columas no coinciden\n");
getchar();
}

Código 15: Invertir cadena

Programa que lee una cadena y posteriormente la invierte

#include
#include

main()
{

char cad1[30], cad2[30];
int i, n, compara;
printf("\n Dame una cadena: ");
gets(cad1);
n=strlen(cad1);
strcpy(cad1,cad2);

for(i=n; i<=0; i--)
cad2[i]=cad1[i]+cad2[i];
printf("%c", cad2[i]);
puts("\n");
}

Código 14: Arreglos bidimensionales

Programa que resuelve el siguiente problema: Se desea almacenar las calificaciones para 4 estudiantes, posteriormente se calculará el promedio de cada estudiante y se guardará en un vector, del cual se sacará un promedio general.


#include

main()
{
int E[4][3], S[4], fil, col;
float suma=0.0, prom=0.0, P[4];


for (fil=0; fil<4; fil++){
printf("Alumno %d \n", fil+1);
for (col=0; col<3; col++)
{
printf("Calificacion %d :",col+1);
scanf("%d", &E[fil][col]);
S[fil]=S[fil]+E[fil][col];
}
P[fil]=S[fil]/3;
}


for (fil=0; fil<4; fil++){
for (col=0; col<3; col++)
printf("| %d |",E[fil][col]);
printf("%.2f\n",P[fil]);
suma=suma+P[fil];
}

prom=suma/fil;
printf("\n El promedio general es: %.2f\n",prom);

}

Código 13: Numeros Primos

Programa que dada la magnitud de numeros que se evaluarán, al final dice, qué numeros de la lista son primos y cuáles no lo son.

#include
#include

main()
{
int numero1,numero2,numero,j,cont;

printf("Intrduzca un numero del que empieza\n");
scanf("%d",&numero1);
printf("Intrduzca un numero del que termina\n");
scanf("%d",&numero2);
for(numero=numero1;numero<=numero2;numero++)
{
j=1;
cont=0;

while((j<=numero))
{
if((numero%j)==0)
{
cont=cont+1;
}
j=j+1;
}
if(cont==2)
printf("\nEl numero %d es primo\n",numero);
else
{
printf("\nEl numero %d NO es primo\n",numero);
}

}

Código 12: Sumatoria del factorial

Programa que hace una sumatoria con casa elemento del cálculo del factorial

#include
#define max 100

int i, n, s, c, f[max];

int main ()
{
printf("\nDame n:");
scanf("%d", &n);

for(i=0; i < n; i++)
{
for(c=1, f[i]=1; c < i+2; c++)
f[i]=c;
s+=f[i];
}
printf("\nFactoriales\n");
for(i=0; i < n; i++)
printf("%d\t", f[i]);
printf("\nLa sumatoria es: %d\n\n", s);
getchar();
}

Código 11: Factorial de un numero

Programa que calcula el factorial de un numero

#include
main(){
int n1, r, i;
r=1;
printf("\n Dame un numero");
scanf("%d", &n1);
for(i=n1; i>=1; i--)
r=r*i;
printf("\n El factorial es: %d", r);
}

Código 10: Arreglos Unidimensionales

#include
int negativos (int b)
{
if (b<0)
b=b*-1;
return b;

}
int main ()
{
int i, a, vec[50];
printf ("Introduce enteros a evaluar:\n");
scanf ("%d", &i);

printf ("\nAhora introduce los enteros:\n");
for (a=0; a < i; a++)
scanf ("%d", &vec[a]);

printf ("El vector en forma positiva es: \n");
for (a=0; a < i; a++)
{
vec[a]=negativos(vec[a]);
printf ("%d\n", vec[a]);
}

}

Código 9: Arreglos Unidimensionales

Programa que compara si dos vectores son iguales o si son diferentes

#include
main(){
int vec1[20], vec2[20], i , j, k , c=0;
printf("\nIngresa 20 numeros");
for(i=0; i<20; i++)
scanf("%d", &vec1[i]);
for(j=0; j<20; j++)
scanf("%d", &vec2[i]);
for(j=0; j<20; j++){
if (vec1[k]=vec2[K])
c=c+1;
if (c=20)
printf("Los vectores son iguales"),
else
printf("Los vectores son distintos");
}
}

Código 8: Arreglos Unidimensionales

Programa que llena un vector con enteros hasta dar con un 0 o hasta rebasar el tamaño del vector, y posteriormente contar cuántos son positivos.

#include
main()
{
int num[100], pos, numero, contpos, k;
pos=0;
printf("Dame un numero entero");
do{
printf("Dame otro numero \n");
scanf("%d", &numero);
if(numero!=0){
num[pos]=numero;
pos=pos+1;
}
}while((numero!=0) || (pos<=100));

for(k=0; k if(num[k]>0)
contpos=contpos+1;
}
printf("Los numeros positivos del vector son:\t%d",contpos);
}/*Fin del main*/

Código 7: SWITCH

Programa que realiza conversiones de horas a lo que el usuario escoja en el menú de opciones: minutos, segundos, centésimas de segundo o milésimas de segundo.

#include

int main ()
{

int op;


do
{
printf("\n\nMenu de conversiones horas a:\n\n");
printf("1: Minutos\n");
printf("2: Segundos\n");
printf("3: Centesimas de Segundo\n");
printf("4: Milesimas de Segundo\n");
printf("5: Salir\n\n");
printf("Escoge una opcion: ");
scanf("%d", &op);

switch (op)

{

case 1:
{
float h, r;
system("cls");
printf("\nDame el numero de horas: ");
scanf("%f", &h);
r=h*60;
printf("\n\nEsto es igual a: %.2f minutos\n\n", r);
getchar();
getchar();
break;
}

case 2:
{
float h, r;
printf("\nDame el numero de horas: ");
scanf("%f", &h);
r=h*3600;
printf("\n\nEsto es igual a: %.2f segundos\n\n", r);
getchar();
getchar();
break;
}

case 3:
{
float h, r;
printf("\nDame el numero de horas: ");
scanf("%f", &h);
r=h*360000;
printf("\n\nEsto es igual a: %.2f centesimas de segundo\n\n", r);
getchar();
getchar();
break;
}

case 4:
{
float h, r;
printf("\nDame el numero de horas: ");
scanf("%f", &h);
r=h*3600000;
printf("\n\nEsto es igual a: %.2f milesimas de segundo\n\n", r);
getchar();
getchar();
break;
}

case 5:
{
puts("\nSalir\n");
getchar();
getchar();
break;
}

default:
{
puts("\n\nOpcion Invalida\n\n");
getchar();
break;
}
}
}
while(op!=5);
puts("\n");
getchar();
}

Código 6: IF

Programa que hace una división entre dos numeros, considerando la posibilidad de que el divisor sea diferente de 0.

#include

float a, b, c;

int main ()
{
printf("\nDame dividendo: ");
scanf("%f", &a);
printf("\nDame divisor: ");
scanf("%f", &b);

if (b!=0)
{
c=a/b;
printf("\nEl resultado de la division es: %.2f\n\n", c);
}

else
{
printf("\nError, no se puede dividir entre 0");
}


}

Código 5: IF

Programa que calcula el sueldo de un empleado, si las horas trabajadas son iguales a 50 entonces se le paga un sueldo normal, sino, las horas extras se le pagaran al doble.

#include

int p, h, s;

int main ()
{

printf("\nDame el sueldo por hora: ");
scanf("%d", &p);
printf("\nDame el numero de horas trabajadas: ");
scanf("%d", &h);

if (h<=50)
{
s=p*h;
}

else
{
s=(50*p)+(((h-50)*p)*2);
}

printf("\nTu sueldo es de: %d\n\n", s);

}

Código 4: For

#include
main()
{
int sumcalif, i;
float ca, prom;
sumcalif=0;
prom=0;
for(i=0; i<=40; i++)
{
printf("Introduce tu calificación\n");
scanf("%f", &ca);
sumcalif=sumcalif+ca;
prom=sumcalif/i;
}
printf("El promedio es: %f", prom);
}

Código 3: For

Programa que lee los cinco primeros enteros positivos

#include

main()
{
int veces, suma;
suma=0;
for (suma=5, suma<=5; suma--)
{
suma=suma+calif;
printf("%d", suma);
}/*Fin for*/
}/*Fin main*/

Código 2: While

Programa que calcula el sueldo de varios empleados considerando su sueldo por hora y las horas que ha trabajado.

#include

int p, h, s, mas;

int main ()
{

mas=1;

while(mas<=5)
{

printf("\nDame el sueldo por hora: ");
scanf("%d", &p);
printf("\nDame el numero de horas trabajadas: ");
scanf("%d", &h);
s=0;

if (h<=50)
{
s=p*h;
}

else
{
s=(50*p)+(((h-50)*p)*2);
}

mas=mas+1;

printf("\nTu sueldo es de: %d\n\n", s);

}

}

Código 1: While

Programa que lee las calificaciones e imprime cuál fue mayor, menor y el promedio.

#include

float p, c, m, n, s=0, i=0;

int main ()

{

printf("\nDame las calificaciones:\n");
scanf("%f", &c);
n=c;

while(c>=0)
{

if (c<=n)
n=c;

s+=c;
i++;

if (c>=m)
m=c;

scanf("%f", &c);
}

if(s==0)
printf("\nNo hay calificaciones\n");

else
{
p=s/i;
printf("\nEl promedio de las calificaciones es: %.2f", p);
}

printf("\nLa calificacion mayor es: %.2f", m);
printf("\nLa calificacion menor es: %.2f\n", n);
getchar();
}

Pseudocódigo 12

El gobierno del estado de México desea reforestar un bosque que mide determinado numero de hectáreas. Si la superficie del terreno excede a un millón de metros cuadrados, entonces decidirá sembrar de la siguiente manera:
Porcentaje Tipo de árbol
70% Pino
20% Oyamel
10% Cedro
Si la superficie del terreno es menor o igual a un millón de metros cuadrados, entonces deberá sembrar de la siguiente manera:
50% Pino
30% Oyamel
20% Cedro


INICIO
Escribir "escriba la superficie a reforestar"
Leer sup
Si sup>1000000000 entonces
Escribir "Porcentaje Tipo de árbol"
Escribir "20% Oyamel"
Escribir "70% Pino"
Escribir "10% Cedro"
FinSi
Si sup<1000000000 entonces
Escribir "Porcentaje Tipo de árbol"
Escribir "50% Oyamel"
Escribir "30% Pino"
Escribir "20% Cedro"
FinSi
FIN

Pseudocódigo 11

Un hombre desea saber cuanto dinero se genera por concepto de interés sobre la cantidad que tiene en inversión en el banco. Él decidirá reinvertir los intereses siempre y cuando estos excedan $7000 pesos, y e ese caso desa saber cuando dinero tendrá finalmente en su cuenta.

INICIO
Escribir "saldo"
leer saldo
Escribir "porcentaje de interés"
leer int
saldop<-(saldo*int)/100
saldot<- saldop+saldo
si saldot > 7000 entonces
escribe "Te sugerimos seguir invirtiendo"
escribe "Tu saldo es de: ", saldot
sino
escribe "Incrementa tu inversión"
FinSi
FIN

Pseudocódigo 10

Un maestro desea saber qué porcentaje de hombres y qué porcentaje de mujeres hay en un grupo de estudiantes.

INICIO
Escribir "Numero de mujeres"
Leer mujeres
Escribir "Numero de hombres"
Leer hombres
suma<-mujeres+hombres
pm<-(mujeres*100)/suma
ph<-(hombres*100)/suma
Escribir "Porcentaje de hombres", ph
Escribir "Porcentaje de mujeres", pm
FIN

Tarea 14: Funciones declaradas en string.h

String.h es el archivo de cabecera de C que contiene la definición de macros, constantes, funciones y tipos de utilidad para trabajar con cadenas de caracteres y algunas operaciones de manipulación de memoria (el nombre string puede ser algo inapropiado).

Las funciones declaradas en string.h se han hecho muy populares, por lo que están garantizadas para cualquier plataforma que soporte C. Sin embargo, existen algunos problemas de seguridad con estas funciones, como el desbordamiento de buffer (buffer overflow), que hacen que algunos programadores prefieran opciones más seguras frente a la portabilidad que estas funciones ofrecen. Además, las funciones para cadenas de caracteres sólo trabajan con conjuntos de caracteres ASCII o extensiones ASCII compatibles.

Nombres Descripción
memcpy copia n bytes entre dos áreas de memoria que no deben solaparse
memmove copia n bytes entre dos áreas de memoria; al contrario que memcpy las areas deben solaparse
memchr busca un valor a partir de una dirección de memoria dada y devuelve un puntero a la primera ocurrencia del valor buscado o NULL si no se encuentra
memcmp compara los n primeros caracteres de dos areas de memoria
memset sobre escribe un área de memoria con un patrón de bytes dado
strcat añade una cadena al final de otra
strncat añade los n primeros caracteres de una cadena al final de otra
strchr localiza un carácter en una cadena, buscando desde el principio
strrchr localiza un carácter en una cadena, buscando desde el final
strcmp compara dos cadenas numéricamente ('a'!='A')
strncmp compara los n primeros caracteres de dos cadenas numéricamente ('a'!='A')
strcoll compara dos cadenas según la colación actual ('a'=='A')
strcpy copia una cadena en otra
strncpy copia los n primeros caracteres de una cadena en otra
strerror devuelve la cadena con el mensaje de error correspondiente al número de error dado
strlen devuelve la longitud de una cadena
strspn devuelve la posición del primer carácter de una cadena que no coincide con ninguno de los caracteres de otra cadena dada
strcspn devuelve la posición del primer carácter que coincide con alguno de los caracteres de otra cadena dada
strpbrk encuentra la primera ocurrencia de alguno de los caracteres de una cadena dada en otra
strstr busca una cadena dentro de otra
strtok parte una cadena en una secuencia de tokens
strxfrm transforma una cadena en su forma de colación (??)

Fuente: http://es.wikipedia.org/wiki/String.h

Tarea 13: Funciones declaradas en stdio.h

Stdio.h, que significa "standard input-output header" (cabecera estandar E/S), es la librería estándar del lenguaje de programación C el archivo de cabecera que contiene las definiciones de macros, las constantes, las declaraciones de funciones y la definición de tipos usados por varias operaciones estándar de entrada y salida. Por motivos de compatibilidad, el lenguaje de programación C++ (derivado de C) también tiene su propia implementación de estas funciones, que son declaradas con el archivo de cabecera cstdio.

Fuente: http://es.wikipedia.org/wiki/Cstdio

Pseudocódigo 9

Hacer un programa que llene un vector con 30 caracteres, posteriormente deberá contar cuantas vocales hay.


INICIO
v<- 0

dimension n[20]

escribir "escriba una letra del alfabeto"

para b<- 1 hasta 5 Hacer


leer n[b]

FinPara

para b<-1 hasta 5 Hacer
si n[b]='a' entonces

v<- v+1

Sino
si n[b]='o' entonces

v<- v+1

Sino
si n[b]='e' entonces

v<- v+1

sino

si n[b]='i' entonces

v<- v+1

sino

si n[b]='u' entonces

v<- v+1
FinSi

FinSi

FinSi

FinSi
FinSi

FinPara

Escribir "El total de vocales que escribio es:",v
FIN

Pseudocódigo 8

En una tienda de descuento se efectua una promoción en la cual se hace un descuento sobre el valor de la compra total según el color de la bolita que el cliente saque al pagar en caja. Si la bolita es de color blanco no tiene descuento, si es verde se le descuenta un 10%, si es amarilla un 25%, si es azul un 50% y si es roja un 100%. Determinar la cantidad final que el cliente debe pagar por su compra.

INICIO
descuento<- 0;
escribir "escriba el monto total a pagar:";

leer total;

escribir "escriba el color de la bolita de oferta segun las siguientes opciones (debe ingresar solo el numero de la opcion):";

Escribir "1: blanco";

Escribir "2: verde";

Escribir "3: amarillo";

Escribir "4: azul";

Escribir "5: rojo";

leer color;

Segun color Hacer

1:
escribir "no hay descuento el mionto a pagar es:",total;
2:

descuento<- total-(total*0.1);
Escribir "hay un descuento del 10% el monto a pagar es de: ",descuento;
3:
descuento<- total-(total*0.25);

Escribir "hay un descuento del 25% el monto a pagar es de: ",descuento;

4:

descuento<- total-(total*0.50);

Escribir "hay un descuento del 50% el monto a pagar es de: ",descuento;
5:

escribir "hay un descuento del 100% por lo que no hay cobro";

De Otro Modo:
Escribir "color incorrecto";
FinSegun
FIN

Pseudocódigo 7

Llenar un vector de 20 numeros enteros y posteriormente copiar el vector de manera inversa en un segundo vector.

INICIO
Para i<1 hasta 20 hacer
escribir "Anote su numero"
leer normal[i]
FinPara
Para j<20 hasta 2 hacer
inverso[j]<-normal[i]
i<-i+1
FinPara
Para j<-1 hasta 20 hacer
escribir inverso[j]
FinPara
FIN

Pseudocódigo 6

Llenar un vector con 50 numeros enteros y posteriormente encontrar el numero mayor y menor del arreglo.

INICIO
dimension num[50]
Para i<-1 hasta 5 hacer
escribir "Dame el numero", i
leer num[i]
mayor<-num[i]
menor<-num[i]
FinPara

para i<-1 hasta 5 hacer
si num[i]>mayor entonces
mayor<-num[i]
FinSi
si num[i]< menor entonces
menor<-num[i]
FinSi

Escribir "El numero mayor: ", mayor
Escribir "El numero menor: ", menor
FIN

Pseudocódigo 5

Escriba un programa que calcule el sueldo de un empleado con las siguientes condiciones:
a) Si el empleado trabajo 40 horas entonces su pago mensual sera el sueldo base mas un 15% del sueldo base.
b) Si el empleado trabajo menos de 4 horas entonces su pago mensual será solo el sueldo base
c) Si el empleado tuvo 5 faltas entonces a su pago se le descontará el 5%
d) Si el cempleado tuvo menos de 5 faltas entonces a su pago se le descontará un 3% de su sueldo base
e) Si el empleado tuvo mas de 5 faltas se le despide.

INICIO
Dimension total (6);
veces<- 0;
repeticion<- 0;
Mientras veces<5 Hacer
veses<- veces+1;
escribir "Escriba los datos del empleado: ",veces;
escribir "Escriba el salario base:";
leer sueldo;
escribir "escriba el total de horas que laboro:";
leer horas;
escribir "escriba el numero de faltas que tenido:"
leer faltas;
Si faltas>5 Entonces
escribir "Esta despedido!";
total[veces]<- 0;
Sino
Si faltas=5 Entonces
descuento<- sueldo-(sueldo*.05);
Sino
descuento<- sueldo-(sueldo*.03);
FinSi
Si (horas>= 40) Entonces
aumento<- descuento+(descuento*.15);
total[veces]<- aumento;
escribir "su sueldo es de: ",sueldo;
escribir "debido a que tubo ",faltas," faltas tendra un descuento y su sueldo sera de: ",descuento;
escribir "gracias a que ha tenido mas de 40 horas laborando tendra un aumento y su sueldo es:--",aumento,"$--";
sino
total[veces]<- descuento;
escribir "su sueldo es de: ",sueldo;
escribir "debido a que tubo ",faltas," faltas tendra un descuento y su sueldo sera de: ",descuento;
FinSi
FinSi
FinMientras
Mientras repeticion<5 Hacer
repeticion<- repeticion+1;
escribir "el salario del empleado ",repeticion," es: ",total[repeticion],"$";
FinMientras
FIN

Pseudocódigo 4

Escriba un programa que pida al usuario 5 numeros, los almacene en un arreglo y posteriormente los copie en otro arreglo que se imprimirá al final


INICIO
Dimension arreglo[20]

Dimension sustituir[20]

i<- 0

sus<- 5;

escribir 'Escriba 5 numeros'

para a<- 1 hasta 5 hacer

leer arreglo[a]

FinPara
Repetir
i<- i+1

arreglo[i]<- sustituir[sus]

sus<- sus-1

hasta que i >=5

escribir "El arreglo queda así: "

para b<- 1 hasta 5 hacer

escribir arreglo [b]

FinPara
FIN

Pseudocódigo 3

Escriba un algorítmo que divide dos numeros, considerando la división entre cero.

INICIO
Escribir "Escriba dos numeros"
Escribir "Escriba el divisor"
leer a;
Escribir "Escriba el dividendo"
leer b;
Si a=0 Entonces
Escribir "No es p�sible dividir por 0";
Sino
f<- a/b;
escribir "el resultado es:"
escribir f;
FinSi
FIN

Pseudocódigo 2

Escriba un algorítmo que lea cinco números que se le pedirán al usuario

INICIO
escribir "Escriba 5 numeros";

Leer a,b,c,d,e;

f<- a-3;

g<- b-3;

h<- c-3;

i<- d-3;

j<- e-3;

Escribir "Los numeros que escribió fueron: "

Escribir f,g,h,i,j;
FIN

Pseudocódigo 1

Hacer un algorítmo para resolver el siguiente problema, leer 10 calificaciones, calcular el promedio, encontrar la calificación mayor y la calificación menor. Utiliza las tres estructuras iterativas.

INICIO
sum_c<-0

Escribir "Introduce la calificacion"
Leer cal
calM<-cal
calme<-cal
Para ncal<-9 hasta 19
sum_c<-sum_c+cal
Escribir "Introduce la calificacion"
Leer cal
Si ( cal > calM ) entonces
calM<-cal
sino
Si ( cal < calme ) entonces
calme<-cal
Fin_si
Fin_si
Fin_para
promedio<-suma/cal
Escribir "El promedio es: ", promedio
Escribir "La calificacion mayor es: ", calM
Escribir "La calificacion menor es: ", calme
FIN

Tarea 12: Codigos de Formato

Son códigos que se asocian con los tipos de datos contenidos en las variables:

Código

Formato

%d

Un entero

%i

Un entero

%c

Una caracter

%s

Una cadena

%f

Un real

%ld

Entero largo

%u

Decimal sin signo

%lf

Doble posición

%h

Entero corto

%o

Octal

%x

Hexadecimal

%e

Notación Científica

%p

Puntero

%%

Imprime Porcentaje

Tarea 11: Secuencias de Escape en C


Carácter de Escape

Explicación

\n

Simula un Enter. Se utiliza para dejar una línea de por medio

\t

Tabulador horizontal. Mueve el cursor al próximo tabulador

\v

Tabulador vertical.

\a

Hace sonar la alarma del sistema

\\

Imprime un carácter de diagonal invertida

\?

Imprime el carácter del signo de interrogación

\"

Imprime una doble comilla

Ejemplos:

1) printf("Manuel \n Antonio \n Ortez\n\n);

2) int x=15;

printf("El Valor de la variable es %d\n\n", x);

3) float x=8.5689, pi=3.1416;

printf("El valor de x es %.2f\t\n",x);

printf("\t Y el valor de pi es %.2f\n\n", pi);


Fuente: http://www.monografias.com/trabajos33/programacion-lenguaje-c/programacion-lenguaje-c.shtml


Tarea 10: Funciones getchar() y putchar()

Getchar

Devuelve un valor Char que representa el carácter que se encuentra en el índice especificado de la cadena suministrada.


Putchar

La función putchar retorna el carácter escrito. Esta función es equivalente a putc.

A continuación un ejemplo con ambas funciones:
int main()
{
char c; /* variable para almacenar los caracteres introducidos por el usuario */
char enunciado[ 80 ]; /* crea un arreglo de caracteres */
int i = 0; /* inicializa el contador i */

/* indica al usuario que introduzca una línea de texto */
puts( "Introduzca una linea de texto:" );

/* utiliza getchar para leer cada caracter */
while ( ( c = getchar() ) != 'n') {
enunciado[ i++ ] = c;
} /* fin de while */

enunciado[ i ] = '�'; /* termina la cadena */

/* utiliza puts para desplegar el enunciado */
puts( "nLa linea introducida es :" );
puts( enunciado );

return 0; /* indica terminación exitosa */

} /* fin de main */