Vous êtes sur la page 1sur 28

UniversidadAutnomaMetropolitana

CarlosAlbertoOrtaCruzmatricula208365480
EstructuradeDatos4600009
GrupoDC02T
Tareas

Tarea1
/***************************Programaquecalculaelpromedio************************/
#include<stdio.h>
#include<conio.h>
inta;
charb;
floatsuma,mult,cant;
inti;
main()
{
do{
suma=0;
clrscr();
printf("CuantasCalificacionesvasapromediar:%a");
scanf("%d",&a);
lista:
/*Pideyguardalascalificaciones*/
for(i=0;i<a;i++){
printf("\ncalificacion:%d");
scanf("%f",&cant);
/*Comparasiescalificacin*/

if((cant<0)||(cant>10)){

printf("\ncalificacionnovalidaingresedenuevo\n");

gotolista;

}else{
suma=suma+cant;

}
}
mult=suma*10;
printf("Elpromedioes:%f",mult/a);
printf("\n\nDeseacontinuar1)si2)no%d");
scanf("%d",&b);
}while(b!=2);
getchar();
return(0);
}

Tarea2
/**********************ProgramaqueImprimecuatropirmides***********************/

#include<stdio.h>
#include<conio.h>
main(){
clrscr();
intcomando=0;
inti,j;
menu:
printf("Eligelaopcion:%s");
printf("\n\n1.CasoA");
printf("\n2.CasoB");
printf("\n3.CasoC");
printf("\n4.CasoD");
printf("\n5.Salir\n");
scanf("%d",&comando);
#defineA1
#defineB2
#defineC3
#defineD4
while(comando!=5){
switch(comando){
caseA:
clrscr();
for(i=0;i<10;i++)
{printf("*");
for(j=0;j<i;j++)
{printf("*");
}printf("\n");
}
getchar();
getchar();
clrscr();
gotomenu;
break;
caseB:
clrscr();
for(i=0;i<10;i++)
{printf("*");
for(j=9;j>i;j)
{printf("*");
}printf("\n");
}
getchar();
getchar();
clrscr();

gotomenu;
break;
caseC:
clrscr();
for(i=0;i<10;i++)
{printf("");
for(j=0;j<10;j++)
{if(i>j){
printf("");
}else{
printf("*");
}
}printf("\n");
}
getchar();
getchar();
clrscr();
gotomenu;
break;
caseD:
clrscr();
for(i=0;i<12;i++)
{printf("");
for(j=11;j>0;j)
{if(i>j){
printf("*");
}else{
printf("");
}
}printf("\n");
}
getchar();
getchar();
clrscr();
gotomenu;
break;
default:
clrscr();
printf("casonovalido\n");
break;
}
}
getchar();
return(0);
}

Tarea3
/***************************Programaquecalculaelfactorial*************************/

#include<stdio.h>
#include<conio.h>
intopc,afac,resp;
inti;
intfac(intvalor);
main(){
menu:
clrscr();
printf("Menu\n\n");
printf("1.SolucionenmaneraIterativa\n");
printf("2.SolucionenmaneraRecursiva\n");
printf("3.Salir\n");
scanf("%d",&opc);
/*opciondeiteratividad*/
if(opc==1){
printf("Numerodefactorial\n");
scanf("%d",&afac);
if(afac>=0){
if((afac==0)||(afac==1)){
printf("\nElfactoriales=1\n");
getchar();
getchar();
gotomenu;
}else{
resp=1;
for(i=2;i<=afac;i++){
resp=resp*i;
}
printf("\nElfactoriales=%d",resp);
getchar();
getchar();
gotomenu;
}
}else{
printf("valorinvalido");
getchar();
getchar();
gotomenu;
}
/*opcionderecursividad*/
}elseif(opc==2){
{
intvalor;
printf("Numerodefactorial\n");

scanf("%d",&valor);
if(valor>=0){
fac(valor);
printf("Elfactoriales%d",fac(valor));
getchar();
getchar();
gotomenu;
}else{
printf("valorinvalido");
getchar();
getchar();
gotomenu;
}
}
}else{
printf("Adios");
getchar();
}
getchar();
return(0);
}
/***Funciones****/
intfac(intvalor){
intfactorial=1;
if(valor==0)
{
factorial=1;
return(factorial);
}
elseif(valor>0)
{
/*multiplicaelvalorporelvalormenosunohastallegarauno*/
factorial=valor*fac(valor1);
return(factorial);
}}

Tarea4
/*************************Programaquecalculalapotencia*************************/
#include<stdio.h>
#include<conio.h>
intpotencia(intbase,intexponente);
main(){
menu:
clrscr();
intopc;
printf("\n\nMenu:\n\n");
printf("\n1.Opcionsolucioniterativa");
printf("\n2.Opcionsolucionrecursiva");
printf("\n3.Salir\n");
printf("Opcion");
scanf("%d",&opc);
if(opc==1){
intx,n;
intpot=1;
printf("\nDamelabase:%d");
scanf("%d",&x);
printf("Dameelexponente:%d");
scanf("%d",&n);
if((x<0)||(n<0)){
printf("Nosepuederealizarlaoperacion");
}else{
inti=1;
for(i;i<=n;i++){
pot=pot*x;
}
printf("potenciaes=%d",pot);
}
getchar();
getchar();
gotomenu;
return(0);
}elseif(opc==2){
intbase,exponente,n;
printf("\nDamelabase:%d");
scanf("%d",&base);
printf("Dameelexponente:%d");
scanf("%d",&exponente);
if((base<0)||(exponente<0)){
printf("Noesposiblerealizarlaoperacion");
}else{
potencia(base,exponente);
printf("Lapotenciaes:%d",potencia(base,exponente));
getchar();
getchar();

gotomenu;
return(0);
}
}elseif(opc==3){
printf("adios");
getchar();
getchar();
return(0);
}
}
/*funcion*/
intpotencia(intbase,intexponente)
{
{
if(exponente==0)
return(1);
else
return(base*potencia(base,exponente1));
}}

Tarea5
/*************************Programaqueconvierteenbinario*************************/
#include<stdio.h>
#include<conio.h>
intopc;
intbinario(intnumero);
main(){
menu:
clrscr();
printf("\n\nMenuConversionBinaria\n\n");
printf("\n1.SolucionIterativa");
printf("\n2.SolucionRecursiva");
printf("\n3.Salir");
printf("\nopcion");
scanf("%d",&opc);
if(opc==1){
intnum,bin;
printf("\nIngreseelnumeroaconvertir:");
scanf("%d",&num);
if(num<0){+
printf("numeronovalido");
}elseif(num==1){
printf("1");
}else{
/*Mientraselnumeroseamayorde1sedivideentredoseimprimeelresultado*/
while(num>1){
bin=num%2;
num/=2;
printf("%d",bin);
}
printf("1");
}
getchar();
getchar();
gotomenu;
return(0);
}elseif(opc==2){
intnumero;
printf("\nDamenumeroaconvertir:");
scanf("%d",&numero);
if(numero<0){
printf("novalido");
}else{
binario(numero);
}
getchar();
getchar();
gotomenu;

return(0);
}else{
clrscr();
gotoxy(10,10);
printf("++++Gracias+++");
getchar();
}
getchar();
return(0);
}
/*****funcin*****/
intbinario(intnumero)
{
intres;
if(numero==1){
printf("1");
return(1);
}else{
res=numero%2;
numero/=2;
printf("%d",res);
binario(numero);
return(numero);
}}

Tarea6
/**********************Programaqueinvierteelordendeunnumero*******************/
#include<stdio.h>
#include<conio.h>
intinverso(intnumero);
intopc;
main(){
menu:
clrscr();
printf("\n\nMENU\n\n");
printf("\n1.Solucioniterativa");
printf("\n2.Solucionrecursiva");
printf("\n3.Salir");
printf("\nopcion:");
scanf("%d",&opc);
if(opc==1){
{
longintnum,res;
printf("DameelNumero");
scanf("%d",&num);
if(num<10){
printf("Inverso=%d",num);
}else{
while(num>10){
res=num%10;
num/=10;
printf("%d",res);
}
printf("%d",num);
}
getchar();
getchar();
gotomenu;
return(0);
}
}elseif(opc==2){
{
intnumero;
printf("Dameelnumero");
scanf("%d",&numero);
inverso(numero);
getchar();
getchar();
gotomenu;
return(0);
}
}else{
printf("Adios");

getchar();
}
getchar();
return(0);
}
/****************************funciones***************/
intinverso(intnumero){
intres;
if(numero<10){
printf("%d",numero);
return(numero);
}else{
/*Sielnmeroesmayora10sedivideentreeimprimeelresiduo*/
res=numero%10;
numero=numero/10;
printf("%d",res);
inverso(numero);
return(res);
}}

Tarea7
/********************Programaquehacelamultiplicacinrusa*****************/
#include<stdio.h>
#include<conio.h>
intmultrusa(intn1,intn2);
intopc;
main(){
menu:
clrscr();
printf("\n\nMENUMULTIPLICACIONRUSA\n\n");
printf("\n1.SolucionIterativa");
printf("\n2.SolucionRecursiva");
printf("\n3.Salir");
printf("\nopcion");
scanf("%d",&opc);
if(opc==1){
inta,b;
intres;
intaux=0;
printf("\nPrimernumero:");
scanf("%d",&a);
printf("\nSegundonumero:");
scanf("%d",&b);
if((a<0)||(b<0)){
printf("Numerosnovalidos");
}else{
while(a!=0){
res=a%2;
if(res!=0){
aux=aux+b;
}
a=a/2;
b=b*2;
}
printf("\nRespuesta=%d",aux);
}
getchar();
getchar();
gotomenu;
return(0);
}elseif(opc==2){
intn1,n2;
printf("\nPrimernumero:");
scanf("%d",&n1);
printf("\nSegundonumero:");
scanf("%d",&n2);
if((n1<0)||(n2<0)){
printf("\nNumerosnovalidos");

}else{
multrusa(n1,n2);
printf("\nResultadoes:%d",multrusa(n1,n2));
}
getchar();
getchar();
gotomenu;
return(0);
}else{
clrscr();
gotoxy(10,10);
printf("++++ADIOS+++");
getchar();
}
getchar();
return(0);
}
intmultrusa(intn1,intn2){
if(n1==1){
return(n2);
}
/*comparaelvalordemodulodedosdelvalor1paraversiesiguala0*/
if(n1%2!=0){
n1=n1/2;
return(n2+multrusa(n1,n2*2));
}
else{
n1=n1/2;
n2=n2*2;
return(multrusa(n1,n2));
}
}

Tarea8
/**************************ProgramaquecalculaenMCD*************************/
#include<stdio.h>
#include<conio2.h>
intmcd(inta,intb);
intopc;
main(){
menu:
clrscr();
printf("\n\nMenuMaximoComunDivisor\n\n");
printf("\n1.SolucionIterativa");
printf("\n2.SolucionRecursiva");
printf("\n3.Salir");
printf("\nopcion");
scanf("%d",&opc);
if(opc==1){
inta,b,r;
printf("\nPrimernumero:");
scanf("%d",&a);
printf("\nSegundonumero:");
scanf("%d",&b);
if((a<0)||(b<0)){
printf("Nosepuederealisar!!!");
}else{
r=1;
while(r!=0){
r=a%b;
a=b;
b=r;
}
printf("ElMCDes:%d",a);
}
getchar();
getchar();
gotomenu;
return(0);
}elseif(opc==2){
inta,b;
printf("\nPrimernumero:");
scanf("%d",&a);
printf("\nSegundonumero:");
scanf("%d",&b);
if((a<0)||(b<0)){
printf("Nosepuederealisar!!!");
}else{
intmcd(inta,intb);
printf("\nElMCDes=%d",mcd(a,b));
}

getchar();
getchar();
gotomenu;
return(0);
}else{
clrscr();
gotoxy(10,10);
printf("++++ADIOS+++");
getchar();
}
getchar();
return(0);
}

intmcd(inta,intb){
//buscaqueelvalordebseacerosiloesaeselmaximocumundivisor
if(b==0)
returna;
else
returnmcd(b,a%b);
//regresalosvaloresdea=byresiduodea/bcomob
}

Tarea9
/************************************TorresdeHani**************************/
#include<stdio.h>
#include<conio2.h>
#include<stdlib.h>

voidhanoi(intdiscos,intorigen,intaux,intdes);
main(){
clrscr();
charorigen='A';
charaux='B';
chardes='C';
intdiscos;

printf("\nNmerodediscos:");

scanf("%d",&discos);

printf("\n\nLosmovimientosarealizarson:\n");

hanoi(discos,origen,aux,des);

getchar();

getchar();

getchar();
}
voidhanoi(intdiscos,intorigen,intaux,intdes){

//aquicomparasielvaloresiguala1siloescambiaeldiscodeorigenadestino
if(discos==1){

printf("%c>%c",origen,des);

else{
//llamaalafunciondisminuyendodiscomenosunoycambiaeldiscodeorigenadestino
//aouxiliarparamoveaAuxiliarejem:disco1detorredeorigenadestino.

hanoi(discos1,origen,des,aux);

printf("\n%c>%c\n",origen,des);

//denuevollamaafuncionparacambiardeposisiondeauxiliaradestino
//ejem:discodedestinoaauxiliar

hanoi(discos1,aux,origen,des);

}}

Tarea10
/******************************Programaquehacelapila************************/

#include<stdio.h>
#include<conio2.h>
#include<stdlib.h>
#definemax5
voidimprimir(intpila[]);
voidvaciar(intpila[]);
voidllenar(intpila[]);
main(){
inttope;
intpila[max];
tope=max;
intopc;
inta,m;
intj=0;
for(j=0;j<tope;j++)
{
pila[j]=0;
}
do{
getchar();
clrscr();
gotoxy(10,3);printf("Menu:\n");
gotoxy(10,4);printf("1.Insertar\n");
gotoxy(10,5);printf("2.Eliminar\n");
gotoxy(10,6);printf("3.Vaciar\n");
gotoxy(10,7);printf("4.Llena\n");
gotoxy(10,8);printf("5.Salir\n");
gotoxy(10,9);printf("opcion:");
imprimir(pila);
scanf("%d",&opc);
imprimir(pila);
switch(opc){

case1:
if(pila[tope1]==0)
{
gotoxy(12,13);printf("ingresedato:");
scanf("%d",&a);
//imprimeenlaposicindeltope1colocndoloalfinaldelapilayrestaelvalordeltope

pila[tope1]=a;
tope;
imprimir(pila);
}
else{
gotoxy(12,14);
printf("PILALLENA\n\n");
getchar();
}
break;
case2:
if(tope<=4){
//eltopevale0yseaumentasuvalorparquetopeocupelaposicinqueseelimino
pila[tope]=0;
tope++;
imprimir(pila);
}else{
gotoxy(12,14);
printf("NOHAYDATOSENPILA");
getchar();
}
break;
case3:
vaciar(pila);
imprimir(pila);
getchar();
break;
case4:
llenar(pila);
imprimir(pila);
getchar();
break;
case5:
exit(0);
break;
}
}while(opc!=6);
system("PAUSE");

return0;
}
/**************************************************/
voidimprimir(intpila[]){

inti=0,y=5;
for(i;i<5;i++){
gotoxy(30,y);
printf("[%d]%d\n\n",i,pila[i]);
y++;
}
}
voidvaciar(intpila[]){
intm=0;
do{
if(pila[m]==0){
m++;
if(m<5){
gotoxy(12,18);
printf("Pilavacia");
}
}else{
gotoxy(12,18);
printf("Pilanovacia");
m=5;
}
}while(m<5);
}
voidllenar(intpila[]){
intm=0;
do{
if(pila[m]>0){
if(m<5){
gotoxy(12,18);
printf("PilaLlena");
}
m++;
}else{
gotoxy(12,18);
printf("PilanoLlenaingresedatos[%d]vacia",m);
m=5;
}
}while(m<5);
}

Tarea11
/******************************Programaquehacelacola************************/

#include<stdio.h>
#include<conio2.h>
#include<stdlib.h>
#definemax5
voidimprimir(intcola[]);
voidllenar(intcola[]);
voidvaciar(intcola[]);
main(){
intpuntero;
intcola[max];
puntero=0;
intopc;
inta;
intj=0;
for(j=0;j<max;j++)
{
cola[j]=0;
}
do{
clrscr();
gotoxy(10,3);printf("Menu:\n");
gotoxy(10,4);printf("1.Insertar\n");
gotoxy(10,5);printf("2.Eliminar\n");
gotoxy(10,6);printf("3.Vaciar\n");
gotoxy(10,7);printf("4.Llena\n");
gotoxy(10,8);printf("5.Salir\n");
imprimir(cola);
gotoxy(10,9);printf("opcion:");
scanf("%d",&opc);
switch(opc){
case1:
if(puntero<=4)
{
gotoxy(12,13);printf("Ingresedato:");
scanf("%d",&a);
//vaguardandoconformevaentrandoyelpunterovaincrementando
cola[puntero]=a;
puntero++;
imprimir(cola);

}
else{
gotoxy(12,14);
printf("COLALLENA\n\n");
getchar();
}
getchar();
break;
case2:
if(puntero>=0){
intx;
cola[0]=0;
//elvalorinicialpasaasaliryconelforrecorrolosvaloresalaizquierda
for(x=0;x<5;x++)
{
cola[x]=cola[x+1];
}
imprimir(cola);
puntero;
imprimir(cola);
}else{
gotoxy(12,14);
printf("NOHAYDATOSENCOLA");
getchar();
}
getchar();
break;
case3:
vaciar(cola);
imprimir(cola);
getchar();
getchar();
break;
case4:
llenar(cola);
imprimir(cola);
getchar();
getchar();
break;
case5:
exit(0);
break;

}/*cierredelswitch*/
}while(opc!=6);
system("PAUSE");

return0;
}
/**********funciones*************/
voidimprimir(intcola[]){
inti=0;
gotoxy(10,12);
for(i;i<5;i++){
printf("[%d]%d\t",i,cola[i]);
}}
voidllenar(intcola[]){
intm=0;
do{
if(cola[m]>0){
if(m<5){
gotoxy(12,18);
printf("colaLlena");
}
m++;
}else{
gotoxy(12,18);
printf("colanoLlenaingresedatos[%d]vacia",m);
m=5;
}
}while(m<5);
}
voidvaciar(intcola[]){
intm=0;
do{
if(cola[m]==0){
m++;
if(m<5){
gotoxy(12,18);
printf("Colavacia");}
}else{
gotoxy(12,18);
printf("Colanovacia");
m=5;
}
}while(m<5);}

Tarea12
/**********************************Programalista********************************/

#include<stdio.h>
#include<conio2.h>
#include<stdlib.h>
#definemax5
voidimprimir(intlista[]);
main(){
intpuntero;
intlista[max];
puntero=0;
intopc;
inta,b;
intm=0;
intj=0;
for(j=0;j<max;j++)
{
lista[j]=0;
}
do{
gotoxy(10,3);printf("Menu:\n");
gotoxy(10,5);printf("1.InsertarInicio\n");
gotoxy(10,6);printf("2.InsertarFinal\n");
gotoxy(10,7);printf("3.EliminarInicio\n");
gotoxy(10,8);printf("4.EliminarFinal\n");
gotoxy(10,9);printf("5.InsertarCasilla\n");
gotoxy(10,10);printf("6.DespacharCasilla\n");
gotoxy(10,11);printf("7.Llena\n");
gotoxy(10,12);printf("8.Vacia\n");
gotoxy(10,13);printf("9.Salir\n");
imprimir(lista);
gotoxy(10,14);printf("opcion:");
scanf("%d",&opc);
switch(opc){
case1:
if(puntero<=5){
gotoxy(12,17);printf("Ingresedato:");
scanf("%d",&a);
intx;
//recorrealaderechalosvaloresydespueslosguardaalprincipio
for(x=4;x>0;x)

{
if(puntero>0){
lista[x]=lista[x1];}
}
lista[0]=a;
puntero++;
imprimir(lista);
}else{
gotoxy(12,18);
printf("LISTALLENA");
}
break;
case2:
if(puntero<=4)
{
gotoxy(12,17);printf("Ingresedato:");
scanf("%d",&a);
lista[puntero]=a;
puntero++;
imprimir(lista);
}
else{
gotoxy(12,18);
printf("LISTALLENA\n\n");
}
break;
case3:
if(puntero>=0){
intx;
//eliminalaprimeraposicion
lista[0]=0;
//recorrelosvaloresalaizquierda
for(x=0;x<5;x++)
{
lista[x]=lista[x+1];
}
imprimir(lista);
puntero;
imprimir(lista);
}else{
gotoxy(12,18);
printf("NOHAYDATOSENLISTA");

}
break;
case4://despacharfinal
if(puntero>=0){
puntero;
//eliminalaultimacasilladondeelpunteroeste
lista[puntero]=0;
imprimir(lista);
}else{
gotoxy(12,18);
printf("NOHAYDATOSENLISTA");
}
break;
case5:
//insertarcasilla
//comparasiahyespaciosdis`ponibles
if(puntero<=4)
{
gotoxy(12,17);
printf("CasillaaGuardar");
scanf("%d",&b);
//comparasihayvaloresanterioresadondeseinserta
if(lista[b1]>0){
//recorrelosvaloresaladerechaparapoderinsertar
intf;
for(f=4;f>b;f){
lista[f]=lista[f1];
}
gotoxy(12,18);
printf("Ingresedato:");
scanf("%d",&a);
lista[b]=a;
puntero=puntero+1;
imprimir(lista);

}else{
gotoxy(12,18);
printf("Nosepuedeinsertaraqui!!");
}
}else{
gotoxy(12,18);
printf("LISTALLENA\n\n");

}
break;
case6:
//despacharcasilla
if(puntero>=0){
gotoxy(12,17);
printf("casillaaeliminar");
scanf("%d",&b);
lista[b]=0;
//recorrelosvaloreshacialacasillaeliminada
intx=b;
for(x=b;x<5;x++)
{
lista[x]=lista[x+1];
}
puntero;
imprimir(lista);
}else{
gotoxy(12,18);
printf("NOHAYDATOSENLISTA");
}
break;
case7:
//llena
do{
if(lista[m]>0){
if(m<5){
gotoxy(12,18);
printf("ListaLlena");
}
m++;
}else{
gotoxy(12,18);
printf("ListanoLlenaingresedatos[%d]vacia",m);
m=5;
}
}while(m<5);
break;
case8:
//vacia
do{
if(lista[m]==0){

m++;
if(m<5){
gotoxy(12,18);
printf("Listavacia");
}
}else{
gotoxy(12,18);
printf("Listanovacia");
m=5;
}
}while(m<5);
break;
case9:
exit(0);
break;
}/*cierredelswitch*/
}while(opc!=10);
system("PAUSE");

return0;
}//finmain
/****funciones********************************************************/
voidimprimir(intlista[]){
inti=0;
gotoxy(10,15);
for(i;i<5;i++){
printf("[%d]%d\t",i,lista[i]);
}}

Tarea13
/**********************Programafuncionamientodepunteros************************/
#include<stdio.h>
main(){
inta,b,c,d;
int*aptr,*bptr,*cptr;
a=10;b=20;c=30;
aptr=NULL;bptr=NULL;cptr=NULL;
aptr=&a;bptr=&b;cptr=&c;
//asignovaloresapunteros
printf("elvalordeaes%d\n",a);
printf("elvalordebes%d\n",b);
printf("elvalordeces%d\n",c);

printf("\nladirecciondeaes%p\n",&a);
printf("ladirecciondebes%p\n",&b);
printf("ladirecciondeces%p\n",&c);

printf("\nelvalordeaptres%d\n",*aptr);
printf("elvalordebptres%d\n",*bptr);
printf("elvalordecptres%d\n",*cptr);

printf("\nladirecciondeaptres%p\n",aptr);
printf("ladirecciondebptres%p\n",bptr);
printf("ladirecciondecptres%p\n",cptr);
//reasignalosvaloresdelospunterosdea,b,c
aptr=cptr;cptr=&b;bptr=&a;

printf("\nelvalordeaptres%d\n",*aptr);
printf("elvalordebptres%d\n",*bptr);
printf("elvalordecptres%d\n",*cptr);
/cambiaelvalorquecontienenlasvariablesalasquedireccionanlospunteros
*aptr=300;*bptr=100;*cptr=200;

printf("\nelvalordeaes%d\n",a);
printf("elvalordebes%d\n",b);
printf("elvalordeces%d\n",c);

getchar();
return(0);
}//finmain

Vous aimerez peut-être aussi