<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1501330941728261169</id><updated>2011-11-19T05:57:43.037Z</updated><category term='TurboPascal'/><category term='BD'/><category term='MPII'/><category term='JAVA'/><category term='C'/><category term='ADA'/><category term='Visio'/><category term='UML'/><category term='Metodos de Ordenacion'/><category term='Prolog'/><category term='Scheme'/><category term='MPI'/><category term='LP'/><category term='Algebra y Calculo Relacional'/><category term='Analisis Numerico'/><category term='Trabajos Asigs. Empresas'/><title type='text'>Línea a Línea</title><subtitle type='html'>Recopilación de prácticas, trabajos en diferentes lenguajes de programación, que he ido haciendo en la carrera de Informática. (Prolog, Scheme, Java, C, C++, ADA, ...). 

Ingeniería Técnica de Informática de Gestión por la Universidad de las Palmas de Gran Canaria.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default?start-index=101&amp;max-results=100'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>144</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-965911634807524852</id><published>2008-03-01T19:06:00.001Z</published><updated>2008-03-01T19:06:41.525Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los números de los proyectos a los cuales suministra partes por lo menos un proveedor situado en una ciudad distinta.</title><content type='html'>Select Distinct J.J #&lt;br /&gt;From SPJ , S, J&lt;br /&gt;Where SPJ.S# = S.S#&lt;br /&gt;And SPJ.J# = J.J#&lt;br /&gt;And S.ciudad&lt;&gt; J.ciudad;&lt;br /&gt;&lt;br /&gt;Algebra: ((( J rename ciudad as jciudad) join SPJ join (s rename ciudad as sciudad)) where jciudad&lt;&gt;sciaudad) [j#]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-965911634807524852?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/965911634807524852/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=965911634807524852' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/965911634807524852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/965911634807524852'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-nmeros-de-los-proyectos-los_01.html' title='Obtener los números de los proyectos a los cuales suministra partes por lo menos un proveedor situado en una ciudad distinta.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-6473276642305925358</id><published>2008-03-01T19:05:00.002Z</published><updated>2008-03-01T19:06:10.640Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los números de partes suministradas a un proyecto por un proveedor situado en la misma ciudad que el proyecto</title><content type='html'>Select Distinct P #&lt;br /&gt;From SPJ , S, J&lt;br /&gt;Where SPJ.S# = S.S#&lt;br /&gt;And SPJ.J# = J.J#&lt;br /&gt;And S.ciudad= J.ciudad;&lt;br /&gt;Algebra: (J Join SPJ Join S) [P#]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-6473276642305925358?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/6473276642305925358/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=6473276642305925358' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6473276642305925358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6473276642305925358'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-nmeros-de-partes.html' title='Obtener los números de partes suministradas a un proyecto por un proveedor situado en la misma ciudad que el proyecto'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-2151247517104823891</id><published>2008-03-01T19:05:00.001Z</published><updated>2008-03-01T19:05:38.629Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los números de las partes suministradas a todos los proyectos de Londres.</title><content type='html'>Selec P#&lt;br /&gt;From SPJ SPJX&lt;br /&gt;Where not exists (select *&lt;br /&gt;From J&lt;br /&gt;Where ciudad=’Londres’&lt;br /&gt;And not exists (select *&lt;br /&gt;From SPJ SPJY&lt;br /&gt;Where SPJY.P# = SPJX.P#&lt;br /&gt;And SPJY.J = J.J#));&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-2151247517104823891?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/2151247517104823891/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=2151247517104823891' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2151247517104823891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2151247517104823891'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-nmeros-de-las-partes.html' title='Obtener los números de las partes suministradas a todos los proyectos de Londres.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-1387256372581385325</id><published>2008-03-01T19:04:00.002Z</published><updated>2008-03-01T19:05:09.874Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los números de los proyectos  a los cuales no suministra ninguna parte roja ninguno de los proveedores de Londres.</title><content type='html'>Select J#&lt;br /&gt;From J&lt;br /&gt;Where not exists (select *&lt;br /&gt;From SPJ&lt;br /&gt;Where J# = J.J#&lt;br /&gt;And P# in (select P#&lt;br /&gt;From P&lt;br /&gt;Where color =’rojo’)&lt;br /&gt;And S# in (select S#&lt;br /&gt;From S&lt;br /&gt;Where ciudad =’Londres’));&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-1387256372581385325?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/1387256372581385325/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=1387256372581385325' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1387256372581385325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1387256372581385325'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-nmeros-de-los-proyectos-los.html' title='Obtener los números de los proyectos  a los cuales no suministra ninguna parte roja ninguno de los proveedores de Londres.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-610166595766812234</id><published>2008-03-01T19:04:00.001Z</published><updated>2008-03-01T19:04:41.133Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los códigos de los proyectos a los cuales suministren partes todos y cada uno de los proveedores que suministren alguna parte roja.</title><content type='html'>Select Distinct J#&lt;br /&gt;from SPJ, SPJX &lt;br /&gt;where not exists (select *&lt;br /&gt;from SPJ SPJY&lt;br /&gt;where exists (select * &lt;br /&gt;from SPJ SPJA&lt;br /&gt;where SPJA.S# = SPJY.S#&lt;br /&gt;and SPJA.P# in (select P#&lt;br /&gt;from P&lt;br /&gt;where color = ‘Rojo’)&lt;br /&gt;and not exists (select *&lt;br /&gt;from SPJ SPJB&lt;br /&gt;where SPJB.S# = SPJY.S#&lt;br /&gt;and SPJB.J# = SPJX.J#)));&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-610166595766812234?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/610166595766812234/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=610166595766812234' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/610166595766812234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/610166595766812234'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-cdigos-de-los-proyectos-los_7005.html' title='Obtener los códigos de los proyectos a los cuales suministren partes todos y cada uno de los proveedores que suministren alguna parte roja.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-4878878481418624937</id><published>2008-03-01T19:03:00.000Z</published><updated>2008-03-01T19:04:03.804Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los números de los proveedores que suministren por lo menos una de las partes suministradas por al menos uno de los proveedores que suministra</title><content type='html'>Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Select Distinct S#&lt;br /&gt;From SPJ&lt;br /&gt;Where P# in (select P#&lt;br /&gt;From SPJ&lt;br /&gt;Where S# in (Select S#&lt;br /&gt;From SPJ&lt;br /&gt;Where P# in (Select P#&lt;br /&gt;From P&lt;br /&gt;Where COLOR = ‘Rojo’)));&lt;br /&gt;&lt;br /&gt;Algebra: ((( SPJ Join (P where Color = “Rojo” ) [P#]) [S#] join SPJ) [P#] join SPJ) [S#]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-4878878481418624937?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/4878878481418624937/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=4878878481418624937' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4878878481418624937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4878878481418624937'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-nmeros-de-los-proveedores.html' title='Obtener los números de los proveedores que suministren por lo menos una de las partes suministradas por al menos uno de los proveedores que suministra'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-8428111369742973966</id><published>2008-03-01T19:02:00.002Z</published><updated>2008-03-01T19:03:15.915Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Consigue los nombres de los suministradores que no venden a la parte p2.</title><content type='html'>Select Snombre&lt;br /&gt;From S&lt;br /&gt;Where not exists  (Select *&lt;br /&gt;From SPJ&lt;br /&gt;Where S# = S.S#)&lt;br /&gt;And P# = “P2”);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-8428111369742973966?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/8428111369742973966/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=8428111369742973966' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8428111369742973966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8428111369742973966'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/consigue-los-nombres-de-los.html' title='Consigue los nombres de los suministradores que no venden a la parte p2.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-5283610336666784306</id><published>2008-03-01T19:02:00.001Z</published><updated>2008-03-01T19:02:37.560Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los códigos de los proveedores que venden al menos todas las partes vendidas por el proveedor S2.</title><content type='html'>Select distintc S#&lt;br /&gt;From SPJ SPJX&lt;br /&gt;Where not exists (Select *&lt;br /&gt;From SPJ SPJY&lt;br /&gt;Where S# = ‘S2’&lt;br /&gt;And not exists (Select *&lt;br /&gt;From SPJ&lt;br /&gt;Where S# = SPJX.S#&lt;br /&gt;And P# = SPJY.P#));&lt;br /&gt;&lt;br /&gt;Algebra:  SPJ [S#, P#, J#] divideby (SPJ where S# = ‘S2’) [P#]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-5283610336666784306?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/5283610336666784306/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=5283610336666784306' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/5283610336666784306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/5283610336666784306'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-cdigos-de-los-proveedores_5842.html' title='Obtener los códigos de los proveedores que venden al menos todas las partes vendidas por el proveedor S2.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-2799880015669645402</id><published>2008-03-01T19:01:00.002Z</published><updated>2008-03-01T19:02:09.155Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Dame todos los nombres de los suministradores que venden todas las partes.</title><content type='html'>Select Snombre&lt;br /&gt;From S&lt;br /&gt;Where not exists (Select *&lt;br /&gt;From P&lt;br /&gt;Where not exists (Select *&lt;br /&gt;From SPJ&lt;br /&gt;Where S# = S.S#&lt;br /&gt;And P# = P.P#));&lt;br /&gt;&lt;br /&gt;Algebra: (SPJ[S#,P#] divided by P[P#] joins S)[Snombre]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-2799880015669645402?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/2799880015669645402/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=2799880015669645402' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2799880015669645402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2799880015669645402'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/dame-todos-los-nombres-de-los.html' title='Dame todos los nombres de los suministradores que venden todas las partes.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-3461141258548407264</id><published>2008-03-01T19:01:00.001Z</published><updated>2008-03-01T19:01:42.289Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los códigos de parte y el número de ventas de aquellas partes que presentes el mayor número de ventas.</title><content type='html'>Select P#, count (*)&lt;br /&gt;Fro SPJ&lt;br /&gt;Group By P#&lt;br /&gt;Having count (*) &gt;= all (Select count(*)&lt;br /&gt;From SPJ&lt;br /&gt;Group By P#);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-3461141258548407264?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/3461141258548407264/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=3461141258548407264' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3461141258548407264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3461141258548407264'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-cdigos-de-parte-y-el-nmero.html' title='Obtener los códigos de parte y el número de ventas de aquellas partes que presentes el mayor número de ventas.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-7202042873884487975</id><published>2008-03-01T19:00:00.002Z</published><updated>2008-03-01T19:01:12.611Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener el código y la cantidad total suministrada de aquellas partes que han sido vendidas a todos los proyectos</title><content type='html'>Select P#, sum(cantidad)&lt;br /&gt;From SPJ A&lt;br /&gt;Where not exists ( Select *&lt;br /&gt;From J&lt;br /&gt;Where not exists (Select *&lt;br /&gt;From SPJ&lt;br /&gt;Where P# = A.P#&lt;br /&gt;And J# = J.J#));&lt;br /&gt;Group by P#;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-7202042873884487975?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/7202042873884487975/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=7202042873884487975' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7202042873884487975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7202042873884487975'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-el-cdigo-y-la-cantidad-total.html' title='Obtener el código y la cantidad total suministrada de aquellas partes que han sido vendidas a todos los proyectos'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-3349946116048496677</id><published>2008-03-01T19:00:00.001Z</published><updated>2008-03-01T19:00:39.734Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>¿Cuántas partes han sido vendidas a todos los proveedores residentes en la ciudad en que se fabrica la parte?</title><content type='html'>Select count (*)&lt;br /&gt;From P&lt;br /&gt;Where not exists (Select *&lt;br /&gt;From S&lt;br /&gt;Where Ciudad =P.Ciudad&lt;br /&gt;And not exists (Select *&lt;br /&gt;From SPJ&lt;br /&gt;Where P#=P.P#&lt;br /&gt;And S#=S.S#));&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-3349946116048496677?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/3349946116048496677/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=3349946116048496677' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3349946116048496677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3349946116048496677'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/cuntas-partes-han-sido-vendidas-todos.html' title='¿Cuántas partes han sido vendidas a todos los proveedores residentes en la ciudad en que se fabrica la parte?'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-73171806643472053</id><published>2008-03-01T18:59:00.000Z</published><updated>2008-03-01T19:00:03.105Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los códigos de los proveedores que no venden partes de Londres a ningún proyecto de Londres</title><content type='html'>Select S#&lt;br /&gt;From S&lt;br /&gt;Where not exists (Select *&lt;br /&gt;From SPJ&lt;br /&gt;Where S# = S.S#&lt;br /&gt;And P# in (select P#&lt;br /&gt;From P&lt;br /&gt;Where ciudad=”Londres”)&lt;br /&gt;And J in (select J#&lt;br /&gt;From J&lt;br /&gt;Where ciudad = “Londres”));&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-73171806643472053?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/73171806643472053/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=73171806643472053' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/73171806643472053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/73171806643472053'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-cdigos-de-los-proveedores_01.html' title='Obtener los códigos de los proveedores que no venden partes de Londres a ningún proyecto de Londres'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-853814948277402336</id><published>2008-03-01T18:58:00.002Z</published><updated>2008-03-01T18:59:25.652Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Indique los códigos de los proveedores que venden a un único proyecto.</title><content type='html'>Select distinct S#&lt;br /&gt;From SPJ X&lt;br /&gt;Where S# not in (select S#&lt;br /&gt;From S&lt;br /&gt;Where X.J#&lt;&gt;J#);&lt;br /&gt;&lt;br /&gt;Algebra: SPJ[S#] minus&lt;br /&gt;((SPJ[S#, J#] Join ((SPJ rename J# as Jnum)(S#, Jnum)) where J#&lt;&gt; Jnum) [S#])&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-853814948277402336?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/853814948277402336/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=853814948277402336' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/853814948277402336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/853814948277402336'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/indique-los-cdigos-de-los-proveedores.html' title='Indique los códigos de los proveedores que venden a un único proyecto.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-423355257213025286</id><published>2008-03-01T18:58:00.001Z</published><updated>2008-03-01T18:58:42.884Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Indique los códigos de las partes que vende el proveedor “S1”, pero no las vende en exclusiva.</title><content type='html'>Select J#&lt;br /&gt;From J&lt;br /&gt;Where J# in (select J#&lt;br /&gt;From SPJ&lt;br /&gt;Where S# = ‘S1’);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-423355257213025286?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/423355257213025286/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=423355257213025286' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/423355257213025286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/423355257213025286'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/indique-los-cdigos-de-las-partes-que_01.html' title='Indique los códigos de las partes que vende el proveedor “S1”, pero no las vende en exclusiva.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-721774837753444435</id><published>2008-03-01T18:57:00.002Z</published><updated>2008-03-01T18:58:05.093Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los códigos de los proyectos de los proveedores que venden todas las partes usadas en el proyecto “J1” y solo las partes usadas por el proyect</title><content type='html'>Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;select S#&lt;br /&gt;From S&lt;br /&gt;Where not exists (Select P#&lt;br /&gt;From P&lt;br /&gt;Where exists (select *&lt;br /&gt;From SPJ&lt;br /&gt;Where P# = P.P# and J# = “J1”)&lt;br /&gt;And not exists (select *&lt;br /&gt;From SPJ&lt;br /&gt;Where P# = P.P# and S# = S# = S.S#))&lt;br /&gt;And not exists (Select P#&lt;br /&gt;From P&lt;br /&gt;Where exists (select *&lt;br /&gt;From SPJ&lt;br /&gt;Where P# = P.P# and S# = S.S#)&lt;br /&gt;And not exists (select *&lt;br /&gt;From SPJ&lt;br /&gt;Where P# = P.P# and J# = “J1”));&lt;br /&gt;&lt;br /&gt;Algebra: (SPJ where J#&lt;&gt; ‘j1’) [P#] P[P#] minus (SPJ where J# =’j1’) [P#]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-721774837753444435?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/721774837753444435/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=721774837753444435' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/721774837753444435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/721774837753444435'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-cdigos-de-los-proyectos-de.html' title='Obtener los códigos de los proyectos de los proveedores que venden todas las partes usadas en el proyecto “J1” y solo las partes usadas por el proyect'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-8039270286370774729</id><published>2008-03-01T18:57:00.001Z</published><updated>2008-03-01T18:57:21.942Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener las ciudades donde hay proyectos que usan todas las partes vendidas en exclusiva por el proveedor “S1”</title><content type='html'>Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Select distinct Ciudad&lt;br /&gt;From J&lt;br /&gt;Where not exists (select P#&lt;br /&gt;From SPJ A&lt;br /&gt;Where not exixts (select *&lt;br /&gt;From SPJ&lt;br /&gt;Where P# = A.P#&lt;br /&gt;And S#&lt;&gt;”S1”)&lt;br /&gt;And not exists (select *&lt;br /&gt;From SPJ&lt;br /&gt;Where P# = A.P#&lt;br /&gt;And J# = J.J#));&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-8039270286370774729?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/8039270286370774729/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=8039270286370774729' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8039270286370774729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8039270286370774729'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-las-ciudades-donde-hay.html' title='Obtener las ciudades donde hay proyectos que usan todas las partes vendidas en exclusiva por el proveedor “S1”'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-1847455292151956848</id><published>2008-03-01T18:56:00.001Z</published><updated>2008-03-01T18:56:49.217Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Indique los códigos de las partes que se usan solamente en el proyecto “J1”.</title><content type='html'>Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;Select distinct P#&lt;br /&gt;From SPJ&lt;br /&gt;Where not exists (Select *&lt;br /&gt;From SPJ&lt;br /&gt;Where P# = A.P#&lt;br /&gt;And J#&lt;&gt;”J1”);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-1847455292151956848?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/1847455292151956848/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=1847455292151956848' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1847455292151956848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1847455292151956848'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/indique-los-cdigos-de-las-partes-que-se.html' title='Indique los códigos de las partes que se usan solamente en el proyecto “J1”.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-2032036379666562022</id><published>2008-03-01T18:54:00.005Z</published><updated>2008-03-01T18:56:08.408Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Indique las ciudades donde residen suministradores que venden todas las partes.</title><content type='html'>Select Distinct Ciudad&lt;br /&gt;From S&lt;br /&gt;Where not exists (select *&lt;br /&gt;From P&lt;br /&gt;Where not exists (select *&lt;br /&gt;From SPJ&lt;br /&gt;Where P.P# = P#&lt;br /&gt;And S.S# = S#));&lt;br /&gt;&lt;br /&gt;((SPJ[S#,P#] divide by P[#]) join S) [ciudad]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-2032036379666562022?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/2032036379666562022/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=2032036379666562022' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2032036379666562022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2032036379666562022'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/indique-las-ciudades-donde-residen.html' title='Indique las ciudades donde residen suministradores que venden todas las partes.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-5142400123756337796</id><published>2008-03-01T18:54:00.003Z</published><updated>2008-03-01T18:54:52.887Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los códigos de los proyectos para los cuales ‘S1’ es el único suministrador.</title><content type='html'>Select Distinct J#&lt;br /&gt;from SPJ, SPJX&lt;br /&gt;where not exists (select *&lt;br /&gt;from SPJ SPJY&lt;br /&gt;where SPJY.J## = SPJX.J#&lt;br /&gt;and SPJY.S#&lt;&gt;”S1”);&lt;br /&gt;&lt;br /&gt;Algebra: (SPJ where S# = ‘S1’) [J#] minus (SPJ where S# &lt;&gt;‘S1’) [J#]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-5142400123756337796?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/5142400123756337796/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=5142400123756337796' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/5142400123756337796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/5142400123756337796'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-cdigos-de-los-proyectos_6058.html' title='Obtener los códigos de los proyectos para los cuales ‘S1’ es el único suministrador.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-675708760773158208</id><published>2008-03-01T18:54:00.001Z</published><updated>2008-03-01T18:54:20.806Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Indique los códigos de las partes vendidas en exclusiva por el proveedor “S3”</title><content type='html'>Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Select Distinct P#&lt;br /&gt;from SPJ, SPJX&lt;br /&gt;where not exists (select *&lt;br /&gt;from SPJ SPJY&lt;br /&gt;where P# = SPJX.P#&lt;br /&gt;and S#&lt;&gt;”S3”);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-675708760773158208?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/675708760773158208/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=675708760773158208' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/675708760773158208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/675708760773158208'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/indique-los-cdigos-de-las-partes.html' title='Indique los códigos de las partes vendidas en exclusiva por el proveedor “S3”'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-6748070172738176120</id><published>2008-03-01T18:53:00.001Z</published><updated>2008-03-01T18:53:50.054Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los códigos de los proyectos tales que al menos cierta cantidad de cada parte utilizada por ellos le sea suministrada por el proveedor S1.</title><content type='html'>Select Distinct J#&lt;br /&gt;from SPJ, SPJX&lt;br /&gt;where not exists (select *&lt;br /&gt;from SPJ SPJY&lt;br /&gt;where exists(select *&lt;br /&gt;from SPJ SPJA&lt;br /&gt;where SPJA.P# = SPJY.P#&lt;br /&gt;and SPJ.J# = SPJX.J#)&lt;br /&gt;and not exists (select *&lt;br /&gt;from SPJ SPJB&lt;br /&gt;where SPJB.S# = ‘S1’&lt;br /&gt;and SPJB.P#.= SPJY.P#&lt;br /&gt;and SPJB.J# = SPJX.J#));&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-6748070172738176120?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/6748070172738176120/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=6748070172738176120' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6748070172738176120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6748070172738176120'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-cdigos-de-los-proyectos_7189.html' title='Obtener los códigos de los proyectos tales que al menos cierta cantidad de cada parte utilizada por ellos le sea suministrada por el proveedor S1.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-6793217508010571989</id><published>2008-03-01T18:52:00.002Z</published><updated>2008-03-01T18:53:15.824Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los códigos de los proyectos a los cuales el proveedor S1 suministres todos los tipos de parte suministrados por él.</title><content type='html'>Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;Select Distinct J#&lt;br /&gt;from SPJ, SPJX&lt;br /&gt;where not exists (select P#&lt;br /&gt;from SPJ SPJY&lt;br /&gt;where exists(select *&lt;br /&gt;from SPJ SPJA&lt;br /&gt;where SPJA.S# = ‘S1’&lt;br /&gt;and SPJ.P# = SPJY.P#)&lt;br /&gt;and not exists (select *&lt;br /&gt;from SPJ SPJB&lt;br /&gt;where SPJB.S# = ‘S1’&lt;br /&gt;and SPJB.P#.= SPJY.P#&lt;br /&gt;and SPJB.J# = SPJX.J#));&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-6793217508010571989?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/6793217508010571989/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=6793217508010571989' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6793217508010571989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6793217508010571989'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-cdigos-de-los-proyectos-los_01.html' title='Obtener los códigos de los proyectos a los cuales el proveedor S1 suministres todos los tipos de parte suministrados por él.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-2427208036591359711</id><published>2008-03-01T18:52:00.001Z</published><updated>2008-03-01T18:52:41.795Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los códigos de los proyectos que utilicen solo partes suministradas por el proveedor S1.</title><content type='html'>Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Select Distinct J#&lt;br /&gt;from SPJ, SPJX&lt;br /&gt;where not exists (select P#&lt;br /&gt;from SPJ SPJY&lt;br /&gt;where SPJY.J# = SPJX.J#&lt;br /&gt;and not exists (select *&lt;br /&gt;from SPJ SPJZ&lt;br /&gt;where SPJZ.P# = SPJY.P#&lt;br /&gt;and SPJZ.S#.= ‘S1’));&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-2427208036591359711?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/2427208036591359711/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=2427208036591359711' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2427208036591359711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2427208036591359711'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-cdigos-de-los-proyectos-que.html' title='Obtener los códigos de los proyectos que utilicen solo partes suministradas por el proveedor S1.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-8615345243517403440</id><published>2008-03-01T18:51:00.002Z</published><updated>2008-03-01T18:52:12.280Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los códigos de los proyectos a los cuales se vendan por lo menos todas las partes suministradas por el proveedor S1.</title><content type='html'>Select Distinct J#&lt;br /&gt;from SPJ, SPJX&lt;br /&gt;where not exists (select P#&lt;br /&gt;from SPJ SPJY&lt;br /&gt;where SPJY.S# = ‘s1’#&lt;br /&gt;and not exists (select *&lt;br /&gt;from SPJ SPJZ&lt;br /&gt;where SPJZ.P# = SPJY.P#&lt;br /&gt;and SPJ.J# = SPJX.J#));&lt;br /&gt;&lt;br /&gt;Algegra: SPJ [J#, P#] divideby (spj where S# = ‘S1’) [P#]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-8615345243517403440?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/8615345243517403440/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=8615345243517403440' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8615345243517403440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8615345243517403440'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-cdigos-de-los-proyectos-los.html' title='Obtener los códigos de los proyectos a los cuales se vendan por lo menos todas las partes suministradas por el proveedor S1.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-4837098295536705453</id><published>2008-03-01T18:51:00.001Z</published><updated>2008-03-01T18:51:34.815Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los códigos de los proyectos donde se utilice al menos una de las partes suministradas por el suministrador ‘S1’.</title><content type='html'>Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;Select distinct J#&lt;br /&gt;From SPJ&lt;br /&gt;Where P# in (select P#&lt;br /&gt;From SPJ&lt;br /&gt;Where S# = ‘S1’);&lt;br /&gt;Algebra: (SPJ Join (SPJ where s# = ‘S1’) [P#]) [J#]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-4837098295536705453?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/4837098295536705453/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=4837098295536705453' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4837098295536705453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4837098295536705453'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-cdigos-de-los-proyectos_01.html' title='Obtener los códigos de los proyectos donde se utilice al menos una de las partes suministradas por el suministrador ‘S1’.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-5551015462452910446</id><published>2008-03-01T18:50:00.000Z</published><updated>2008-03-01T18:51:00.711Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los códigos de los suministradores que suministran la misma parte a todos los proyectos.</title><content type='html'>Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Select Distinct S#&lt;br /&gt;From SPJ SPJX&lt;br /&gt;Where exists (select P#&lt;br /&gt;From SPJ SPJY&lt;br /&gt;Where not exists(&lt;br /&gt;Select J#&lt;br /&gt;From J&lt;br /&gt;Where not exists (Select *&lt;br /&gt;From SPJ SPJZ&lt;br /&gt;Where SPJZ.S# = SPJX.S#&lt;br /&gt;And SPJZ.P# = SPJY.P#&lt;br /&gt;And SPJZ.J# = J.J#)));&lt;br /&gt;Algebra: (SPJ [S#, P#, J#] Divide by  J[J#]) [S#]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-5551015462452910446?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/5551015462452910446/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=5551015462452910446' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/5551015462452910446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/5551015462452910446'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-cdigos-de-los.html' title='Obtener los códigos de los suministradores que suministran la misma parte a todos los proyectos.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-317039429599845450</id><published>2008-03-01T18:49:00.002Z</published><updated>2008-03-01T18:50:11.972Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Indique los códigos de los suministradores que venden todas las partes a todos los proyectos.</title><content type='html'>Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;Select S#&lt;br /&gt;From S&lt;br /&gt;Where not exists (select *&lt;br /&gt;From J, P&lt;br /&gt;Where not exists (select *&lt;br /&gt;From SPJ&lt;br /&gt;Where s.s# = s#&lt;br /&gt;And p.p# = p#&lt;br /&gt;And j.j# = SPJ.J#));&lt;br /&gt;Algebra: SPJ[s#,p#,j#] divibedy (p[p#] times j[j#]) [s#]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-317039429599845450?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/317039429599845450/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=317039429599845450' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/317039429599845450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/317039429599845450'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/indique-los-cdigos-de-los.html' title='Indique los códigos de los suministradores que venden todas las partes a todos los proyectos.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-6724201529157455946</id><published>2008-03-01T18:49:00.001Z</published><updated>2008-03-01T18:49:33.629Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los códigos de los proveedores de Londres que han vendido la misma parte a más de 3 proyectos distintos.</title><content type='html'>Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;Select distinct S#&lt;br /&gt;From SPJ&lt;br /&gt;Where S# in (Select S#&lt;br /&gt;From S&lt;br /&gt;Where ciudad = “Londres”)&lt;br /&gt;Group by S#, P#&lt;br /&gt;Having count (*) &gt;3&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-6724201529157455946?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/6724201529157455946/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=6724201529157455946' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6724201529157455946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6724201529157455946'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-cdigos-de-los-proveedores.html' title='Obtener los códigos de los proveedores de Londres que han vendido la misma parte a más de 3 proyectos distintos.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-3863813157392217056</id><published>2008-03-01T18:48:00.000Z</published><updated>2008-03-01T18:49:01.051Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Seleccionar los códigos de los suministradores que han realizado ventas a algún proyecto que totalizan una cantidad superior a la mitad del total de l</title><content type='html'>Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;Select distinct s#&lt;br /&gt;From SPJ as A&lt;br /&gt;Group By S#, J#&lt;br /&gt;Having sum (cantidad) &gt; (select sum (cantidad)/2&lt;br /&gt;From SPJ&lt;br /&gt;Where J# = A.J#);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-3863813157392217056?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/3863813157392217056/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=3863813157392217056' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3863813157392217056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3863813157392217056'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/seleccionar-los-cdigos-de-los.html' title='Seleccionar los códigos de los suministradores que han realizado ventas a algún proyecto que totalizan una cantidad superior a la mitad del total de l'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-5998255885774378574</id><published>2008-03-01T18:47:00.002Z</published><updated>2008-03-01T18:48:20.073Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Indique las ciudades en las que se fabrican partes no vendidas o bien residen proveedores que no venden nada.-</title><content type='html'>Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;select ciudad&lt;br /&gt;from p&lt;br /&gt;where not exists (select *&lt;br /&gt;from spj&lt;br /&gt;where p# = p.p#);&lt;br /&gt;union&lt;br /&gt;select ciudad&lt;br /&gt;from s&lt;br /&gt;where not exists (select *&lt;br /&gt;from spj&lt;br /&gt;where s# = s.s#);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-5998255885774378574?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/5998255885774378574/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=5998255885774378574' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/5998255885774378574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/5998255885774378574'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/indique-las-ciudades-en-las-que-se.html' title='Indique las ciudades en las que se fabrican partes no vendidas o bien residen proveedores que no venden nada.-'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-6440501749777375505</id><published>2008-03-01T18:47:00.001Z</published><updated>2008-03-01T18:47:46.392Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Indique las ciudades en las que residen proveedores que venden, al menos, todas las partes fabricadas en la ciudad en la que vive el proveedor.</title><content type='html'>Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;Select distint ciudad&lt;br /&gt;From S&lt;br /&gt;Where not exists (Select *&lt;br /&gt;From P&lt;br /&gt;Where Ciudad =S.Ciudad&lt;br /&gt;And not exists (Select *&lt;br /&gt;From SPJ&lt;br /&gt;Where SN=S.SN&lt;br /&gt;And PN=P.PN));&lt;br /&gt;(SPJ [S#, P#] divide by (P join S) [ciudad]) join [ciudad]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-6440501749777375505?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/6440501749777375505/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=6440501749777375505' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6440501749777375505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6440501749777375505'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/indique-las-ciudades-en-las-que-residen.html' title='Indique las ciudades en las que residen proveedores que venden, al menos, todas las partes fabricadas en la ciudad en la que vive el proveedor.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-4700017689762727178</id><published>2008-03-01T18:46:00.000Z</published><updated>2008-03-01T18:47:06.942Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Indique los códigos de las partes usadas en todos los proyectos.</title><content type='html'>Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;Select pn&lt;br /&gt;From p&lt;br /&gt;Where not exists (Select *&lt;br /&gt;From j&lt;br /&gt;Where not exists (select *&lt;br /&gt;From spj&lt;br /&gt;Where pn= p.pn&lt;br /&gt;And jn=j.jn));&lt;br /&gt;((SPJ [J#, P#] divide by J[J#] join S) [P#]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-4700017689762727178?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/4700017689762727178/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=4700017689762727178' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4700017689762727178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4700017689762727178'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/indique-los-cdigos-de-las-partes-usadas.html' title='Indique los códigos de las partes usadas en todos los proyectos.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-1552885784184332201</id><published>2008-03-01T18:45:00.002Z</published><updated>2008-03-01T18:46:39.503Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Obtener los códigos de los proyectos para los cuales ‘S1’ es el único proveedor de partes rojas.</title><content type='html'>Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;Select J#&lt;br /&gt;From J&lt;br /&gt;Where not exists (Select *&lt;br /&gt;From SPJ&lt;br /&gt;Where J# = J.J#&lt;br /&gt;And S#&lt;&gt;”S1”&lt;br /&gt;And P# in (Select P#&lt;br /&gt;From P#&lt;br /&gt;Where COLOR=”ROJO”));&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-1552885784184332201?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/1552885784184332201/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=1552885784184332201' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1552885784184332201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1552885784184332201'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/obtener-los-cdigos-de-los-proyectos.html' title='Obtener los códigos de los proyectos para los cuales ‘S1’ es el único proveedor de partes rojas.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-4266206074148422532</id><published>2008-03-01T18:45:00.001Z</published><updated>2008-03-01T18:45:44.315Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Indique los códigos de las partes que han sido vendidas por algún proveedor en una cantidad total mayor de 300.</title><content type='html'>Ejercicios de Algebra  y Calculo Relacional.&lt;br /&gt;Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;Select Distinct P#&lt;br /&gt;From SPJ&lt;br /&gt;Group by P#, S#&lt;br /&gt;Having sum (cantidad) &gt;300;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-4266206074148422532?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/4266206074148422532/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=4266206074148422532' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4266206074148422532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4266206074148422532'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/indique-los-cdigos-de-las-partes-que.html' title='Indique los códigos de las partes que han sido vendidas por algún proveedor en una cantidad total mayor de 300.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-3230768579905332655</id><published>2008-03-01T18:44:00.000Z</published><updated>2008-03-01T18:45:01.094Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>los códigos de los proyectos que solo usan partes fabricadas en telde.</title><content type='html'>Ejercicios de Algebra  y Calculo Relacional.&lt;br /&gt;Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;Select Distinct J#&lt;br /&gt;From SPJ A&lt;br /&gt;Where not exists (select *&lt;br /&gt;From SPJ&lt;br /&gt;Where J#=A.J#&lt;br /&gt;And P# in (select P#&lt;br /&gt;from P&lt;br /&gt;where ciudad &lt;&gt; ‘Telde’)); no usan =&lt;br /&gt;SPJ [J#] minus ((SPJ join P) where ciudad &lt;&gt; ‘Telde’) [J#]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-3230768579905332655?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/3230768579905332655/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=3230768579905332655' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3230768579905332655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3230768579905332655'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/los-cdigos-de-los-proyectos-que-solo.html' title='los códigos de los proyectos que solo usan partes fabricadas en telde.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-8220808671443967421</id><published>2008-03-01T18:37:00.001Z</published><updated>2008-03-01T18:44:00.779Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='BD'/><category scheme='http://www.blogger.com/atom/ns#' term='Algebra y Calculo Relacional'/><title type='text'>Indicar los códigos de los proveedores que solo venden partes fabricadas en su ciudad</title><content type='html'>Ejercicios de Algebra  y Calculo Relacional.&lt;br /&gt;Siempre Trabajando sobre esta Base de Datos:&lt;br /&gt;S(S#, Snombre, Situación, Ciudad)&lt;br /&gt;P(P#, Pnombre, Color, Peso, Ciudad)&lt;br /&gt;J(J#, Jnombre, ciudad)&lt;br /&gt;SPJ(S#,P#,J#, Cantidad)&lt;br /&gt;&lt;br /&gt;Select sn&lt;br /&gt;From s&lt;br /&gt;Where not exists (select *&lt;br /&gt;      From spj, p&lt;br /&gt;      Where spj.pn=p.pn&lt;br /&gt;      And sn=s.sn&lt;br /&gt;      And ciudad&lt;&gt;s.ciudad);&lt;br /&gt;&lt;br /&gt;(s[sn]) minus&lt;br /&gt;((((((s rename ciudad as sciudad)[sn,sciudad]) join (spj[sn,pn])) join (p[pn,ciudad])) where sciudad &lt;&gt;ciudad[sn])&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-8220808671443967421?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/8220808671443967421/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=8220808671443967421' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8220808671443967421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8220808671443967421'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/03/indicar-los-cdigos-de-los-proveedores.html' title='Indicar los códigos de los proveedores que solo venden partes fabricadas en su ciudad'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-7064084981552406998</id><published>2008-02-02T18:30:00.000Z</published><updated>2008-02-02T18:42:32.642Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trabajos Asigs. Empresas'/><title type='text'>Trabajo Final: Asignatura Dirección Estratégica de Empresas. Analizar la Empresa 3M</title><content type='html'>Trabajo Final de la Asignatura Dirección Estratégica de Empresas, impartida en la &lt;a href="http://www.ulpgc.es"&gt;Universidad de las Palmas de Gran Canaria&lt;/a&gt;. En mi caso, en la carrera de &lt;a href="www.eui.ulpgc.es"&gt;Informática de Gestión&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;El trabajo consta de:&lt;br /&gt;&lt;br /&gt;1.- Misión y Objetivos&lt;br /&gt;2.- Análisis Externo (Dimensión Socio-Cultural, Dimensión Económica, Dimensión Política-Legal, Dimensión Tecnológica)&lt;br /&gt;3.- Análisis de Entorno Específico (Análisis de la Estructura de la Industria)&lt;br /&gt;4.- Análisis Interno : Recursos (Recursos Tangibles, Recursos Intangibles, Recursos Humanos), Capacidades (Administración y Dirección, Investigación y Desarrollo, Marketing, Recursos Humanos). Análisis DAFO.&lt;br /&gt;5.- Estratégias Competitivas de 3M.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?id=d6gk7gn_1gvtgcs89"&gt;Trabajo Final de Administración y Dirección de Empresas&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-7064084981552406998?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/7064084981552406998/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=7064084981552406998' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7064084981552406998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7064084981552406998'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/02/trabajo-final-asignatura-direccin.html' title='Trabajo Final: Asignatura Dirección Estratégica de Empresas. Analizar la Empresa 3M'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-702594550442194039</id><published>2008-02-02T18:17:00.000Z</published><updated>2008-02-02T18:29:52.061Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='UML'/><category scheme='http://www.blogger.com/atom/ns#' term='Visio'/><title type='text'>Especificación Final de un Software.- Trabajo de Ingenieria del Software II, Universidad de las Palmas de Gran Canaria</title><content type='html'>En la siguiente dirección podréis ver el trabajo de la asignatura Ingeniería del Software 2, impartida la carrera de &lt;a href="http://www.dis.ulpgc.es"&gt;ingenieria técnica de informática de Gestión&lt;/a&gt;, en la &lt;a href="http://www.ulpgc.es"&gt;Universidad de las Palmas de Gran Canaria&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;El trabajo consta de:&lt;br /&gt;&lt;br /&gt;1.- Especificación Inicial de un Producto Software.&lt;br /&gt;2.- Modelar El Comportamiento del Software.&lt;br /&gt;3.- Analizar las Intenciones de los Usuarios.&lt;br /&gt;4.- Modelo de Casos de Uso (Diagrama de Casos de Usos, UML).&lt;br /&gt;5.- Modelo Conceptual del Software (Diagrama de Clases, UML).&lt;br /&gt;6.- Especificación de los Requisitos del Software.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?id=d6gk7gn_15rz9tfmvt"&gt;Trabajo Final de Ingeniería del Software 2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Si no lo pueden ver, me lo pueden perdir a mi correo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-702594550442194039?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/702594550442194039/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=702594550442194039' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/702594550442194039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/702594550442194039'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/02/especificacin-final-de-un-software.html' title='Especificación Final de un Software.- Trabajo de Ingenieria del Software II, Universidad de las Palmas de Gran Canaria'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-6663953176436862377</id><published>2008-01-31T19:57:00.000Z</published><updated>2008-02-07T19:02:02.701Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADA'/><category scheme='http://www.blogger.com/atom/ns#' term='MPI'/><title type='text'>Suma de dos vectores en lenguaje ADA</title><content type='html'>La suma de dos vectores (V1, V2) de igual tamaño, es un nuevo vector, V3, del mismo tamaño que V1 y V2, tal que, cada elemento de V3 es la suma de los que ocupan las posiciones correspondientes (primera, segunda, tercera,...; independientemente de los índices que designen dichas posiciones) de V1 y V2.&lt;br /&gt;&lt;br /&gt;Implemente una función de tipo Vector_1, llamada Suma_Vectores, con dos parámetros de tipo Vector_1. El resultado será la suma de los dos parámetros de la función. Dado que dos vectores sólo se pueden sumar cuando tienen el mismo número de elementos, la función lanzará una excepción Constraint_Error con el mensaje "Vectores incompatibles" cuando el tamaño de los parámetros de entrada sea distinto. El rango del índice del resultado deberá empezar siempre en 1, independientemente de cuáles fueran los rangos de índices de los parámetros de la función.&lt;br /&gt;&lt;br /&gt;with Arrays; use Arrays;&lt;br /&gt;function Suma_Vectores (V1, V2 : Vector_1) return Vector_1 is&lt;br /&gt;   suma : Vector_1 (1 .. V1'Length);&lt;br /&gt;begin&lt;br /&gt;   if V1'Length = V2'Length then&lt;br /&gt;      for I in 1 .. V1'Length loop&lt;br /&gt;         suma (I) := V1 (V1'First + I - 1) + V2 (V2'First + I - 1);&lt;br /&gt;      end loop;&lt;br /&gt;   else&lt;br /&gt;      raise Constraint_Error with "Vectores incompatibles";&lt;br /&gt;   end if;&lt;br /&gt;   return suma;&lt;br /&gt;end Suma_Vectores;&lt;br /&gt;&lt;br /&gt;package Arrays is&lt;br /&gt; type Vector_1 is array (Integer range &lt;&gt;) of Integer;&lt;br /&gt; type Vector_2 is array (Positive range &lt;&gt;) of Integer;&lt;br /&gt; type Matriz_1 is array (Integer range &lt;&gt;, Integer range &lt;&gt;) of Integer;&lt;br /&gt;end Arrays;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-6663953176436862377?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/6663953176436862377/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=6663953176436862377' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6663953176436862377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6663953176436862377'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/suma-de-dos-vectores-en-lenguaje-ada.html' title='Suma de dos vectores en lenguaje ADA'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-1210398049682305859</id><published>2008-01-31T19:55:00.000Z</published><updated>2008-02-07T19:02:02.702Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADA'/><category scheme='http://www.blogger.com/atom/ns#' term='MPI'/><title type='text'>Fila de mayor peso en una matriz en lenguaje ADA</title><content type='html'>Se define el peso de una fila de una matriz de enteros como la suma de todos sus elementos.&lt;br /&gt;&lt;br /&gt;Implemente una función de tipo Integer, llamada Fila_Mayor_Peso, con un parámetro de tipo Matriz_1. La función devolverá el índice de la fila de mayor peso de la matriz pasada como parámetro. Si hay varias filas con el mismo peso se devolverá el índice menor.&lt;br /&gt;&lt;br /&gt;with Arrays; use Arrays;&lt;br /&gt;function Fila_Mayor_Peso (Matriz : Matriz_1) return Integer is&lt;br /&gt;   Fila_Maxima        : Integer;&lt;br /&gt;   Indice_Fila_Maxima : Integer;&lt;br /&gt;   aux                : Integer := Integer'First;&lt;br /&gt;begin&lt;br /&gt;   for I in Matriz'Range (1) loop&lt;br /&gt;      Fila_Maxima :=1;&lt;br /&gt;      for J in Matriz'Range (2) loop&lt;br /&gt;         Fila_Maxima := Fila_Maxima + Matriz (I, J);&lt;br /&gt;      end loop;&lt;br /&gt;&lt;br /&gt;      if Fila_Maxima &gt; aux then&lt;br /&gt;         Indice_Fila_Maxima := I;&lt;br /&gt;         aux                := Fila_Maxima;&lt;br /&gt;      end if;&lt;br /&gt;   end loop;&lt;br /&gt;   return Indice_Fila_Maxima;&lt;br /&gt;end Fila_Mayor_Peso;&lt;br /&gt;&lt;br /&gt;package Arrays is&lt;br /&gt; type Vector_1 is array (Integer range &lt;&gt;) of Integer;&lt;br /&gt; type Vector_2 is array (Positive range &lt;&gt;) of Integer;&lt;br /&gt; type Matriz_1 is array (Integer range &lt;&gt;, Integer range &lt;&gt;) of Integer;&lt;br /&gt;end Arrays;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-1210398049682305859?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/1210398049682305859/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=1210398049682305859' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1210398049682305859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1210398049682305859'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/fila-de-mayor-peso-en-una-matriz-en.html' title='Fila de mayor peso en una matriz en lenguaje ADA'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-2775479473531668461</id><published>2008-01-31T19:54:00.001Z</published><updated>2008-02-07T19:02:02.703Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADA'/><category scheme='http://www.blogger.com/atom/ns#' term='MPI'/><title type='text'>Apareciones de un elemento en un vector en lenguaje ADA</title><content type='html'>Implemente una función de tipo Natural, llamada Apariciones, con dos parámetros: el primero de tipo Vector_1 y el segundo de tipo  Integer. La función debe devolver el número de veces que el valor representado por el segundo parámetro aparece en el array representado por el primero.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;with Arrays; use Arrays;&lt;br /&gt;function Apariciones (Vector : Vector_1; Valor : Integer) return Natural is&lt;br /&gt;   contador : Natural := 0;&lt;br /&gt;begin&lt;br /&gt;   for i in Vector'Range loop&lt;br /&gt;      if Vector (i) = Valor then&lt;br /&gt;         contador := contador + 1;&lt;br /&gt;      end if;&lt;br /&gt;   end loop;&lt;br /&gt;   return contador;&lt;br /&gt;end Apariciones;&lt;br /&gt;&lt;br /&gt;package Arrays is&lt;br /&gt; type Vector_1 is array (Integer range &lt;&gt;) of Integer;&lt;br /&gt; type Vector_2 is array (Positive range &lt;&gt;) of Integer;&lt;br /&gt; type Matriz_1 is array (Integer range &lt;&gt;, Integer range &lt;&gt;) of Integer;&lt;br /&gt;end Arrays;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-2775479473531668461?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/2775479473531668461/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=2775479473531668461' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2775479473531668461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2775479473531668461'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/apareciones-de-un-elemento-en-un-vector.html' title='Apareciones de un elemento en un vector en lenguaje ADA'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-1140271957155567146</id><published>2008-01-31T19:51:00.000Z</published><updated>2008-02-07T19:02:02.705Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADA'/><category scheme='http://www.blogger.com/atom/ns#' term='MPI'/><title type='text'>Número de positivos en un vector en lenguaje ADA</title><content type='html'>Implemente una función de tipo Natural, llamada Positivos, con un parámetro de tipo Vector_1, que devuelva el número de valores positivos contenidos en el array representado por dicho parámetro.&lt;br /&gt;&lt;br /&gt;with Arrays; use Arrays;&lt;br /&gt;function positivos (Vector : Vector_1) return Natural is&lt;br /&gt;   contador : Natural := 0;&lt;br /&gt;begin&lt;br /&gt;   for I in Vector'Range loop&lt;br /&gt;      if Vector (I) &gt; 0 then&lt;br /&gt;         contador := contador + 1;&lt;br /&gt;      end if;&lt;br /&gt;   end loop;&lt;br /&gt;   return contador;&lt;br /&gt;end positivos;&lt;br /&gt;&lt;br /&gt;package Arrays is&lt;br /&gt; type Vector_1 is array (Integer range &lt;&gt;) of Integer;&lt;br /&gt; type Vector_2 is array (Positive range &lt;&gt;) of Integer;&lt;br /&gt; type Matriz_1 is array (Integer range &lt;&gt;, Integer range &lt;&gt;) of Integer;&lt;br /&gt;end Arrays;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-1140271957155567146?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/1140271957155567146/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=1140271957155567146' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1140271957155567146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1140271957155567146'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/nmero-de-positivos-en-un-vector-en.html' title='Número de positivos en un vector en lenguaje ADA'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-2234782649627603061</id><published>2008-01-31T19:39:00.001Z</published><updated>2008-02-07T19:02:02.705Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADA'/><category scheme='http://www.blogger.com/atom/ns#' term='MPI'/><title type='text'>Practica en Lenguaje ADA: Implementa el préstamo Francés y Americano. También una cola FIFO, para las existencias en almacén.</title><content type='html'>with unchecked_deallocation,Text_Io,ada.integer_text_io,Ada.Float_Text_IO;&lt;br /&gt;use  Text_Io,ada.integer_text_io,Ada.Float_Text_IO;&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;procedure trabadministracion is&lt;br /&gt;   type nodo_lista;&lt;br /&gt;     type pnodo_lista is access nodo_lista;&lt;br /&gt;     type nodo_lista is record --lista doblemente encadenada&lt;br /&gt;          cantidad:integer;&lt;br /&gt;   precio:float;&lt;br /&gt;          siguiente:pnodo_lista;&lt;br /&gt;          anterior:pnodo_lista;&lt;br /&gt;     end record;&lt;br /&gt;     principio,final:pnodo_lista;--punteros al nodo ultimo y primero&lt;br /&gt;  ---variables de los prestamos--&lt;br /&gt;  cantidad,cant,opcion:integer;&lt;br /&gt;  aux,precio:float;&lt;br /&gt;  ---variables del lifo--&lt;br /&gt;     n,cont,s:integer;&lt;br /&gt;     g,anual,interes,i,c,f,a:float;&lt;br /&gt; &lt;br /&gt;    procedure Liberar_pnodo is new Unchecked_Deallocation(nodo_lista,Pnodo_lista);&lt;br /&gt; --libera nodos del tipo pnodo_lista&lt;br /&gt; &lt;br /&gt;    &lt;br /&gt;    procedure insertarfinal(cantidad: in integer;Precio: in float;principio,final: in out pnodo_lista) is&lt;br /&gt; --inserta un nuevo nodo al final de la lista&lt;br /&gt;  recorrer:pnodo_lista;&lt;br /&gt; begin&lt;br /&gt;  recorrer:=final;&lt;br /&gt;  if principio=null then  --en caso de lista vacia&lt;br /&gt;   principio:=new nodo_lista;&lt;br /&gt;   principio.cantidad:=cantidad;&lt;br /&gt;   principio.precio:=precio;&lt;br /&gt;   final:=principio;&lt;br /&gt;  else   --si la lista no esta vacia&lt;br /&gt;   final:=new nodo_lista;&lt;br /&gt;   final.cantidad:=cantidad;&lt;br /&gt;   final.precio:=precio;&lt;br /&gt;   recorrer.siguiente:=final;&lt;br /&gt;   final.anterior:=recorrer;&lt;br /&gt;  end if;  &lt;br /&gt; end insertarfinal;&lt;br /&gt;&lt;br /&gt; procedure extraer(cant: in out integer;final: in out pnodo_lista)is&lt;br /&gt; aux,aux2:pnodo_lista;&lt;br /&gt; Cant_total:integer:=0 ;&lt;br /&gt;    begin&lt;br /&gt;  aux2:=final;&lt;br /&gt;        while aux2/=null loop&lt;br /&gt;            cant_total:=cant_total+aux2.cantidad;&lt;br /&gt;            aux2:=aux2.anterior;&lt;br /&gt;        end loop;       &lt;br /&gt;        if cant&gt;cant_total then&lt;br /&gt;            new_line;&lt;br /&gt;            put_line("La Cantidad Es Superior A La Actual");&lt;br /&gt;        else&lt;br /&gt;         if cant=final.cantidad then&lt;br /&gt;   aux:=final.anterior;&lt;br /&gt;            if principio/=final then &lt;br /&gt;            aux.siguiente:=null;&lt;br /&gt;            else&lt;br /&gt;             principio:=aux;&lt;br /&gt;            end if;&lt;br /&gt;   liberar_pnodo(final);&lt;br /&gt;            final:=aux;&lt;br /&gt;   &lt;br /&gt;            else&lt;br /&gt;    if cant&gt;final.cantidad then&lt;br /&gt;     cant:=cant-final.cantidad;&lt;br /&gt;     aux:=final.anterior;&lt;br /&gt;     liberar_pnodo(final);&lt;br /&gt;     aux.siguiente:=null;&lt;br /&gt;                    final:=aux;&lt;br /&gt;     extraer(cant,final);&lt;br /&gt;    else&lt;br /&gt;     final.cantidad:=final.cantidad-cant;&lt;br /&gt;    end if;&lt;br /&gt;            end if;&lt;br /&gt;         end if;&lt;br /&gt; end extraer;&lt;br /&gt;&lt;br /&gt; procedure verpantalla(principio,final:pnodo_lista) is&lt;br /&gt; --visualiza en pantalla la lista&lt;br /&gt;  recorrer:pnodo_lista;&lt;br /&gt; begin&lt;br /&gt;  recorrer:=principio;&lt;br /&gt;  if not(recorrer=null) then  --si la lista no esta vacia&lt;br /&gt;   --recorre toda la lista y pone el campo info en pantalla&lt;br /&gt;   while not(recorrer=null) loop&lt;br /&gt;    put("cantidad:");put(recorrer.cantidad);&lt;br /&gt;    put("precio:");put(recorrer.precio,fore=&gt;5,aft=&gt;2,exp=&gt;0); --te pasa de la notacion cientifica a float&lt;br /&gt;    new_line;&lt;br /&gt;    recorrer:=recorrer.siguiente;  &lt;br /&gt;            end loop;&lt;br /&gt;&lt;br /&gt;            &lt;br /&gt;        else  --si la lista esta vacia llama la excepcion&lt;br /&gt;            new_line;&lt;br /&gt;   put_line("No Hay Existencias");&lt;br /&gt;  end if;&lt;br /&gt; end verpantalla;&lt;br /&gt;&lt;br /&gt; function anualidad(c,i:float;n:integer)return float is&lt;br /&gt;  f,a,i2:float;&lt;br /&gt;   begin&lt;br /&gt;                     i2:=i/100.0;&lt;br /&gt;      f:=1.0+i2;&lt;br /&gt;      f:=f**(-n);&lt;br /&gt;      f:=1.0-f;&lt;br /&gt;      f:=f/i2;&lt;br /&gt;      a:=c/f;&lt;br /&gt;                     return (a);&lt;br /&gt;                 end anualidad; &lt;br /&gt;   &lt;br /&gt; function cinteres(c,i,a:float;n,s:integer)return float is&lt;br /&gt;  f,i2,cinteres:float;&lt;br /&gt;  s2,n2:integer;&lt;br /&gt;   begin&lt;br /&gt;             s2:=s-1;&lt;br /&gt;          n2:=n-s2;&lt;br /&gt;    i2:=i/100.0;&lt;br /&gt;    f:=1.0+i2;&lt;br /&gt;    f:=f**(-n2);&lt;br /&gt;    f:=1.0-f;&lt;br /&gt;    f:=f/i2;&lt;br /&gt;    cinteres:=f*(anualidad(c,i,n))*i2;&lt;br /&gt;    &lt;br /&gt;             return cinteres ;&lt;br /&gt;         end cinteres; &lt;br /&gt;   &lt;br /&gt;  function camortizacion(c,i,a:float;n,s:integer)return float is&lt;br /&gt;   f,i2,i3,cinteres,a2,a3:float;&lt;br /&gt;   s2,n2:integer;&lt;br /&gt;    begin&lt;br /&gt;   i2:=i/100.0;&lt;br /&gt;   i3:=c*i2;                           &lt;br /&gt;   a2:=(anualidad(c,i,n))-i3;&lt;br /&gt;   s2:=s-1;&lt;br /&gt;            a3:=(1.0+i2)**s2;&lt;br /&gt;   a3:=a2*a3;&lt;br /&gt;             &lt;br /&gt;             return a3 ;&lt;br /&gt;         end camortizacion;    &lt;br /&gt;&lt;br /&gt;  function saldo(c,i,a:float;n,s:integer)return float is&lt;br /&gt;   f,i2,a2:float;&lt;br /&gt;   s2:integer;&lt;br /&gt;    begin&lt;br /&gt;   s2:=n-s;&lt;br /&gt;   i2:=i/100.0;&lt;br /&gt;    f:=1.0+i2;&lt;br /&gt;   f:=f**(-s2);&lt;br /&gt;   f:=1.0-f;&lt;br /&gt;   f:=f/i2;&lt;br /&gt;   a2:=(anualidad(c,i,n))*f;&lt;br /&gt;   return a2 ;&lt;br /&gt;         end saldo;    &lt;br /&gt;begin&lt;br /&gt;    loop&lt;br /&gt;--begin&lt;br /&gt;  new_line; &lt;br /&gt;        put_line("*********************** Bienvenido A Este Programa *************************");&lt;br /&gt;        put_line("**************         Administracion De Empresas II          **************");&lt;br /&gt;  put_line("*******                                                              *******");&lt;br /&gt;  put_line("*******              1.= Terminar EL programa                        *******");&lt;br /&gt;  put_line("*******              2.= Realizado por                               *******");&lt;br /&gt;  put_line("*******              3.= Lifo                                        *******");                                                       &lt;br /&gt;  put_line("*******              4.= Prestamos                                   *******");&lt;br /&gt;  put_line("*******                                                              *******");&lt;br /&gt;  put_line("****************************************************************************");&lt;br /&gt;  new_line;&lt;br /&gt;        Put("Teclee su opcion");&lt;br /&gt;        get(opcion);&lt;br /&gt;        new_line;&lt;br /&gt;        case Opcion is&lt;br /&gt;        when 1=&gt;&lt;br /&gt;    put_line("gracias por usar este programa");&lt;br /&gt;    exit;&lt;br /&gt;           when 2=&gt;&lt;br /&gt;          new_line;&lt;br /&gt;                Put_line("  *****  Diseñadores Del Econominator  ******");&lt;br /&gt;                new_line;&lt;br /&gt;                Put_line(" ** Jose Luis Cabrera Marrero ** ");&lt;br /&gt;                new_line;&lt;br /&gt;                Put_line(" ** Airam Caballero Perez **");&lt;br /&gt;                new_line;&lt;br /&gt;                Put_line(" ** Eduardo Hidalgo Luque **");&lt;br /&gt;                new_line;&lt;br /&gt;                Put_line(" ** Sergio Romero Sanchez **");&lt;br /&gt;                New_Line;&lt;br /&gt;           When 3=&gt;&lt;br /&gt;     loop&lt;br /&gt;    new_line; &lt;br /&gt;          put_line("*******************************   LIFO      ********************************");&lt;br /&gt;          put_line("**************          Administracion De Empresas II          *************");&lt;br /&gt;    put_line("*******                                                              *******");&lt;br /&gt;    put_line("*******              1.= menu principal                              *******");&lt;br /&gt;    put_line("*******              2.= entradas                                    *******");&lt;br /&gt;    put_line("*******              3.= salidas                                     *******");                                         &lt;br /&gt;    put_line("*******              4.= existencias actuales                        *******");&lt;br /&gt;    put_line("*******                                                              *******");&lt;br /&gt;    put_line("****************************************************************************");&lt;br /&gt;    new_line;&lt;br /&gt;          Put("Teclee su opcion");&lt;br /&gt;          get(opcion);&lt;br /&gt;    new_line;&lt;br /&gt;    case opcion is&lt;br /&gt;     when 1=&gt;&lt;br /&gt;     EXIT;&lt;br /&gt;     when 2=&gt;&lt;br /&gt;     put_line("-ENTRADAS-");&lt;br /&gt;     put("indique la cantidad de mercancia entrante:");&lt;br /&gt;     get(cantidad);&lt;br /&gt;     new_line;&lt;br /&gt;     put("precio al que entra la mercancia:");&lt;br /&gt;     get(precio);&lt;br /&gt;     insertarfinal(cantidad,precio,principio,final);&lt;br /&gt;                    new_line;&lt;br /&gt;                    put_line("¡¡  la entrada ha sido realizada  ¡¡");&lt;br /&gt;                    when 3=&gt;&lt;br /&gt;     put_line("cantidad que va a salir del almacen");&lt;br /&gt;     get(cant);&lt;br /&gt;        extraer(cant,final);&lt;br /&gt;                    new_line;&lt;br /&gt;                    &lt;br /&gt;     When 4=&gt;&lt;br /&gt;     put_line("las existencia actuales son:");&lt;br /&gt;     verpantalla(principio,final);&lt;br /&gt;                    When Others=&gt;&lt;br /&gt;      Put_line("La Opcion Elegida Es Incorrecta");&lt;br /&gt;                  New_Line;     &lt;br /&gt;         New_Line;&lt;br /&gt;      &lt;br /&gt;            End case;&lt;br /&gt;    end loop;  ----fin del menu lifo&lt;br /&gt;    new_line;&lt;br /&gt;    when 4=&gt;&lt;br /&gt;                loop&lt;br /&gt;    new_line; &lt;br /&gt;          put_line("*******************************   PRESTAMOS      ***************************");&lt;br /&gt;          put_line("**************          Administracion De Empresas II          *************");&lt;br /&gt;    put_line("*******                                                              *******");&lt;br /&gt;    put_line("*******              1.= menu principal                              *******");&lt;br /&gt;    put_line("*******              2.= Sistema Americano                           *******");&lt;br /&gt;    put_line("*******              3.= Sistema Frances                             *******");                                         &lt;br /&gt;    put_line("*******                                                              *******");&lt;br /&gt;    put_line("****************************************************************************");&lt;br /&gt;    new_line;&lt;br /&gt;          Put("Teclee su opcion");&lt;br /&gt;          get(opcion);&lt;br /&gt;    new_line; &lt;br /&gt;    case opcion is&lt;br /&gt;     when 1=&gt;&lt;br /&gt;     EXIT;&lt;br /&gt;     when 2=&gt;&lt;br /&gt;      loop&lt;br /&gt;      new_line;                  &lt;br /&gt;            put_line("*****************************       PRESTAMOS        **************************");&lt;br /&gt;         put_line("****                          --SISTEMA AMERICANO--                        ****");&lt;br /&gt;   put_line("****                                                                       ****");&lt;br /&gt;   put_line("****    1.= menu principal                                                 ****");&lt;br /&gt;   put_line("****    2.= cuantia constante de interes a pagar en cada ano del prestamo  ****");&lt;br /&gt;   put_line("****    3.= cuantia constante que hay que imponer en el fondo              ****");                                         &lt;br /&gt;   put_line("****                                                                       ****");&lt;br /&gt;   put_line("*******************************************************************************");&lt;br /&gt;      new_line;&lt;br /&gt;         Put("Teclee su opcion");&lt;br /&gt;         get(opcion);&lt;br /&gt;   new_line;&lt;br /&gt;            case opcion is&lt;br /&gt;           when 1=&gt;&lt;br /&gt;     exit;&lt;br /&gt;                    when 2=&gt;&lt;br /&gt;                       &lt;br /&gt;        put_line("introduzca el capital del prestamo");&lt;br /&gt;                    get(c);&lt;br /&gt;                    put_line("introduzca el interes del prestamo anual en %");&lt;br /&gt;                    get(i);&lt;br /&gt;                   &lt;br /&gt;                    &lt;br /&gt;                begin&lt;br /&gt;                    aux:=i/100.0;&lt;br /&gt;                    interes:=c*aux;&lt;br /&gt;     new_line;&lt;br /&gt;        put_line("la cuantia de interes es :");  put(interes,fore=&gt;5,aft=&gt;3,exp=&gt;0);&lt;br /&gt;                    &lt;br /&gt;                end;   &lt;br /&gt;                when 3=&gt;&lt;br /&gt;                    put_line("introduzca el capital del prestamo");&lt;br /&gt;                    get(c);&lt;br /&gt;                    put_line("introduzca las imposiciones anules en %");&lt;br /&gt;                    get(i);&lt;br /&gt;                    put_line("introduzca la duracion del prestamo en años");&lt;br /&gt;                    get(n);&lt;br /&gt;                begin&lt;br /&gt;                     f:=i/100.0;&lt;br /&gt;                     f:=(((1.0+f)**n)-1.0)/f;&lt;br /&gt;                     cont:=0;&lt;br /&gt;                     anual:=c/f;&lt;br /&gt;      new_line;&lt;br /&gt;                     put_line("la cuantia es:");  put(anual,fore=&gt;5,aft=&gt;3,exp=&gt;0);&lt;br /&gt;      &lt;br /&gt;                        &lt;br /&gt;                end;&lt;br /&gt;                    when others=&gt;&lt;br /&gt;     put_line("La Opcion Es Incorrecta");&lt;br /&gt;     trabadministracion;&lt;br /&gt;     end case;&lt;br /&gt;     end loop; ---fin del menu sistema americano&lt;br /&gt;                    when 3=&gt;&lt;br /&gt;     put_line("introduzca el capital del prestamo");&lt;br /&gt;                     get(c);&lt;br /&gt;                     put_line("introduzca el interes del prestamo anual en %");&lt;br /&gt;                     get(i);&lt;br /&gt;                     put_line("introduzca la duracion del prestamo en años");&lt;br /&gt;                     get(n);  &lt;br /&gt;                     loop&lt;br /&gt;      &lt;br /&gt;    new_line; &lt;br /&gt;          put_line("****************************    PRESTAMOS   ********************************");&lt;br /&gt;          put_line("**************           ---SISTEMA FRANCES---                 *************");&lt;br /&gt;    put_line("*******                                                              *******");&lt;br /&gt;    put_line("*******          1.= salir                                           *******");&lt;br /&gt;    put_line("*******          2.= calcular la anualidad que amortiza el prestamo  *******");&lt;br /&gt;    put_line("*******          3.= cuota de amortizacion de un periodo en concreto *******");                                        &lt;br /&gt;    put_line("*******          4.= cuota de interes de un periodo concreto         *******");&lt;br /&gt;    put_line("*******          5.= saldo del prestamo en un año concreto           *******");&lt;br /&gt;                put_line("*******                                                              *******");&lt;br /&gt;    put_line("****************************************************************************");&lt;br /&gt;    new_line;&lt;br /&gt;          Put("Teclee su opcion");&lt;br /&gt;          get(opcion);&lt;br /&gt;    new_line;&lt;br /&gt;    case opcion is&lt;br /&gt;     when 1=&gt;&lt;br /&gt;     exit;&lt;br /&gt;                    when 2=&gt;&lt;br /&gt;                    put(anualidad(c,i,n),fore=&gt;5,aft=&gt;2,exp=&gt;0);        &lt;br /&gt;                    when 3=&gt;&lt;br /&gt;                              put_line("introduzca el periodo que desea obtener:");&lt;br /&gt;        get(s);&lt;br /&gt;        if s&gt;n then&lt;br /&gt;         put_line("el periodo seleccionado es mayor que los periodos de amortizacion del prestamo");&lt;br /&gt;        exit;&lt;br /&gt;       end if;&lt;br /&gt;       put_line("la cuota de amortizacion es:");&lt;br /&gt;       put(camortizacion(c,i,a,n,s),fore=&gt;5,aft=&gt;2,exp=&gt;0);&lt;br /&gt;                        &lt;br /&gt;                    when 4=&gt;&lt;br /&gt;                             put_line("introduzca el periodo que desea obtener:");&lt;br /&gt;        get(s);&lt;br /&gt;        if s&gt;n then&lt;br /&gt;         put_line("el periodo seleccionado es mayor que los periodos de amortizacion del prestamo");&lt;br /&gt;        exit;&lt;br /&gt;       end if;&lt;br /&gt;        put_line("la cuota de interes es:");&lt;br /&gt;        put(cinteres(c,i,a,n,s),fore=&gt;5,aft=&gt;2,exp=&gt;0);&lt;br /&gt;&lt;br /&gt;                    when 5=&gt;&lt;br /&gt;                            put_line("introduzca el periodo que desea obtener:");&lt;br /&gt;        get(s);&lt;br /&gt;        if s&gt;n then&lt;br /&gt;         put_line("el periodo seleccionado es mayor que los periodos de amortizacion del prestamo");&lt;br /&gt;        exit;&lt;br /&gt;       end if;&lt;br /&gt;        put_line("el saldo del prestamo es:");&lt;br /&gt;        put(saldo(c,i,a,n,s),fore=&gt;5,aft=&gt;2,exp=&gt;0);&lt;br /&gt;                    when others=&gt;            &lt;br /&gt;                    put_line("La Opcion Es Incorrecta");&lt;br /&gt;                    trabadministracion;&lt;br /&gt;                       &lt;br /&gt;     &lt;br /&gt;               end case;&lt;br /&gt;                     end loop;    ----------fin del menu del prestamo fraces&lt;br /&gt;             when others=&gt;&lt;br /&gt;     put_line("La Opcion Es Incorrecta");&lt;br /&gt;                    trabadministracion;        &lt;br /&gt;                    &lt;br /&gt;      end case;&lt;br /&gt;     end loop;  ---fin del menu prestamos&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;   when others=&gt;&lt;br /&gt;   put_line("La Opcion Es Incorrecta");&lt;br /&gt;   trabadministracion;&lt;br /&gt;  end case;&lt;br /&gt;                  --Creamos Las Excepciones Necesarias.").&lt;br /&gt;     Exception&lt;br /&gt;          When Data_error =&gt;&lt;br /&gt;                  new_line;&lt;br /&gt;                  put_line("Los Parametros Introducidos Son Incorrectos");&lt;br /&gt;                  skip_line;&lt;br /&gt;                  new_line;    &lt;br /&gt;          When others=&gt;&lt;br /&gt;              Put_Line("Error Desconocido");&lt;br /&gt;              New_Line;&lt;br /&gt;             end;&lt;br /&gt;      end loop;  ---fin menu principal &lt;br /&gt;   End trabadministracion;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-2234782649627603061?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/2234782649627603061/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=2234782649627603061' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2234782649627603061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2234782649627603061'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/practica-en-lenguaje-ada-emplementa-el.html' title='Practica en Lenguaje ADA: Implementa el préstamo Francés y Americano. También una cola FIFO, para las existencias en almacén.'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-1961496634148583144</id><published>2008-01-24T23:18:00.000Z</published><updated>2008-02-07T18:59:13.601Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Número menor en doble precisión en lenguaje C</title><content type='html'>#include&lt;stdio.h&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;double min,num; /*Min; guardará el valor del mayor número real, y N el valor más grande de la mantisa*/&lt;br /&gt;int e;&lt;br /&gt;min=1.;&lt;br /&gt;e=0;&lt;br /&gt;num=1.;&lt;br /&gt;while (min&gt;min/2)&lt;br /&gt;   {&lt;br /&gt;    num=min;&lt;br /&gt;    min=min*0.5;&lt;br /&gt;    e=e-1;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;  printf("El menor número en simple presición tendrá como exponente %d y será el  %e \n", e, num);&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-1961496634148583144?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/1961496634148583144/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=1961496634148583144' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1961496634148583144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1961496634148583144'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/nmero-menor-en-doble-precisin-en.html' title='Número menor en doble precisión en lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-8675076623453884297</id><published>2008-01-24T23:17:00.000Z</published><updated>2008-02-07T18:59:13.602Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Número menor en simple precisión en lenguaje C</title><content type='html'>#include&lt;stdio.h&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;float min, min_aux; /* Min_aux; guardará el valor del menor número positivo */&lt;br /&gt;int e,i;&lt;br /&gt;min=1.;&lt;br /&gt;e=0;&lt;br /&gt;i=0;&lt;br /&gt;while (min&gt;min/2) /* hallamos el menor exponente y a la vez calculamos 2 elevado al menor exponente */&lt;br /&gt;   {&lt;br /&gt;    min_aux=min;&lt;br /&gt;    min=min/2;&lt;br /&gt;    e=e-1;&lt;br /&gt;   }&lt;br /&gt;   /*e=e+1;*/  &lt;br /&gt;   min_aux*= 1./2; /* multiplicamos 2 elevado al menor exponente (min_aux) por la menor mantisa (1/2) */&lt;br /&gt;&lt;br /&gt;  printf("El menor número en simple presición tendrá como exponente %d y será el  %e \n", e, min_aux);&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-8675076623453884297?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/8675076623453884297/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=8675076623453884297' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8675076623453884297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8675076623453884297'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/nmero-menor-en-simple-precisin-en.html' title='Número menor en simple precisión en lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-8149995278227335557</id><published>2008-01-24T23:16:00.000Z</published><updated>2008-02-07T18:59:13.603Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Número mayor en simple precisión en lenguaje C</title><content type='html'>#include&lt;stdio.h&gt;&lt;br /&gt;   int main()&lt;br /&gt;   {&lt;br /&gt;      float max,n,res,aux;/*Max; guardará el valor del mayor número real, y N el valor más grande de la mantisa*/&lt;br /&gt;      int e,i;&lt;br /&gt;      max=1.;&lt;br /&gt;      e=0;&lt;br /&gt;      n=0.;&lt;br /&gt;      res=1.;&lt;br /&gt;      aux=1.;&lt;br /&gt;      while (max&lt;2*max)    /* aquí hallamos el exponente máximo,multiplicando 1 por 2 hasta que sea infinito*/&lt;br /&gt;      {&lt;br /&gt;      &lt;br /&gt;         max=2*max;&lt;br /&gt;         e=e+1;&lt;br /&gt;      }&lt;br /&gt;      for (i=0; i&lt;24; i++)   /* hacemos la suma de la mayor mantisa (1/2 + 1/4...+1/2elev 24)*/&lt;br /&gt;      {&lt;br /&gt;         aux=aux*(1./2);&lt;br /&gt;         n=n+aux;&lt;br /&gt;      }&lt;br /&gt;      for (i=0; i&lt;e-1; i++)  /* ahora hacemos el producto de 2 elevado a 127(mayor exponente) por la mantisa anteriormente hallada*/&lt;br /&gt;      {&lt;br /&gt;         res=res*2;&lt;br /&gt;      }&lt;br /&gt;      res=res*n*2;&lt;br /&gt;      printf("El mayor número en simple precisión tendrá como exponente %d y será %e \n", e,res );&lt;br /&gt;      return 0;&lt;br /&gt;   }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-8149995278227335557?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/8149995278227335557/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=8149995278227335557' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8149995278227335557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8149995278227335557'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/nmero-mayor-en-simple-precisin-en.html' title='Número mayor en simple precisión en lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-8980119998621517338</id><published>2008-01-24T23:14:00.000Z</published><updated>2008-02-07T18:59:13.604Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Número mayor en doble precisión en lenguaje C</title><content type='html'>#include&lt;stdio.h&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;double max,n,res,aux; /*Max; guardará el valor del mayor número real, y N el valor más grande de la mantisa*/&lt;br /&gt;int e,i;&lt;br /&gt;max=1.;&lt;br /&gt;e=0;&lt;br /&gt;n=0.;&lt;br /&gt;res=1.;&lt;br /&gt;aux=1.;&lt;br /&gt;while (max&lt;2*max)&lt;br /&gt;   {&lt;br /&gt;    max=2*max;&lt;br /&gt;    e=e+1;&lt;br /&gt;   }&lt;br /&gt;for (i=0; i&lt;53; i++)&lt;br /&gt;  {&lt;br /&gt;    aux=aux*(1./2);&lt;br /&gt;    n=n+aux;&lt;br /&gt;  }&lt;br /&gt;for (i=0; i&lt;e-1; i++)&lt;br /&gt;  {&lt;br /&gt;    res=res*2.;&lt;br /&gt;    }&lt;br /&gt;  res=res*n*2.;&lt;br /&gt;  printf("El mayor número en doble precisión tendrá como exponente %d y será %e \n", e, res );&lt;br /&gt;return 0;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-8980119998621517338?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/8980119998621517338/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=8980119998621517338' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8980119998621517338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8980119998621517338'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/nmero-mayor-en-doble-precisin-en.html' title='Número mayor en doble precisión en lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-3222360138439831762</id><published>2008-01-24T23:13:00.000Z</published><updated>2008-02-07T18:59:13.605Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Método Newton Raphson en lenguaje C (solo)</title><content type='html'>#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;math.h&gt;&lt;br /&gt;#define CERO 0.000000001&lt;br /&gt;&lt;br /&gt;/*Funcion que queremos aproximar*/&lt;br /&gt;   float f(float x){&lt;br /&gt;      return (x*x*x*x*x)+(x*x)-9;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;/*Derivada de la función a aproximar*/&lt;br /&gt;   float df(float x){&lt;br /&gt;      return (5*(x*x*x*x)+2*x);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   float Newton_Rapson(float p, float tol, int n){&lt;br /&gt;      int i=0;&lt;br /&gt;      float np;&lt;br /&gt;      np=p;&lt;br /&gt;   &lt;br /&gt;      if(fabs(df(p))&gt;CERO)&lt;br /&gt;         p = p-(f(p)/df(p));&lt;br /&gt;   &lt;br /&gt;      while ((fabs(np-p) &gt; tol) &amp;&amp; (fabs(f(p)) &gt; CERO) &amp;&amp; (i&lt;n))  {&lt;br /&gt;         i++;&lt;br /&gt;         np=p;&lt;br /&gt;         if(fabs(df(p))&gt;CERO)&lt;br /&gt;            p =p-(f(p)/df(p));&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      if (i==n)&lt;br /&gt;         printf("\nSe alcanzo el numero maximo de iteraciones.\n");&lt;br /&gt;   &lt;br /&gt;      return(p);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   int main()&lt;br /&gt;   {&lt;br /&gt;      float sol;&lt;br /&gt;      sol=Newton_Rapson(1.5, 0.001, 50);&lt;br /&gt;      printf("\nLa solucion a Newton-Raphson es la raiz: %f\n", sol);&lt;br /&gt;      return 0;&lt;br /&gt;      system ("pause");&lt;br /&gt;   }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-3222360138439831762?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/3222360138439831762/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=3222360138439831762' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3222360138439831762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3222360138439831762'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/mtodo-newton-raphson-en-lenguaje-c-solo.html' title='Método Newton Raphson en lenguaje C (solo)'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-909908740406462345</id><published>2008-01-24T23:12:00.000Z</published><updated>2008-02-07T18:59:13.606Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Método de Simpson en lenguaje C</title><content type='html'>#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;math.h&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   double potencia(double x, int grado) /*Calcula el cuadrado de cada uno de los componentes del vector*/&lt;br /&gt;   {&lt;br /&gt;      double resultado=1.;&lt;br /&gt;      int i;&lt;br /&gt;      if(grado==0)&lt;br /&gt;         return resultado;&lt;br /&gt;      else&lt;br /&gt;      {&lt;br /&gt;         for(i=0;i&lt;grado;i++)&lt;br /&gt;            resultado = resultado*x;&lt;br /&gt;      &lt;br /&gt;      }&lt;br /&gt;      return resultado;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   double f(double *coef,double x,int grado)/*Aqui se calcula el valor de la funcion*/&lt;br /&gt;   {&lt;br /&gt;      int i;&lt;br /&gt;      double res = 0.;&lt;br /&gt;      for(i=0;i&lt;=grado;i++)&lt;br /&gt;         res = res + coef[i]*potencia(x,i);&lt;br /&gt;      return res;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   double simpson(double *coef,int grado,double x,double x1)&lt;br /&gt;   {&lt;br /&gt;      int i;&lt;br /&gt;      double n=100,lim,xm,simp=0.;&lt;br /&gt;      lim = x1-x; /*Limsup-Liminf*/&lt;br /&gt;      xm = lim/n;/*Lo dividimos para dividir el integral en subintegrales*/&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;n;i++) /*Aplicamos la formula de simpson para todos los trozos de integral*/&lt;br /&gt;         simp = simp + (f(coef,x+i*xm,grado)+f(coef,x+(i+1)*xm,grado)+4*f(coef,x+(i+0.5)*xm,grado))/6*xm;     &lt;br /&gt;      return simp;&lt;br /&gt;   }&lt;br /&gt;   int main(){&lt;br /&gt;      double res, *vec; &lt;br /&gt;      double linf,lsup,com;&lt;br /&gt;      int i,tam=0;&lt;br /&gt;      printf("\t---------------------------------------------\n");&lt;br /&gt;      printf("\t|        METODO DE SIMPSON                   |\n");&lt;br /&gt;      printf("\t---------------------------------------------\n");&lt;br /&gt;      printf("\nIntroduzca el grado del polinomio:");&lt;br /&gt;      scanf("%d",&amp;tam);&lt;br /&gt;      vec=(double*)malloc(tam*sizeof(double));&lt;br /&gt;      for (i=tam;i&gt;=0;i--)&lt;br /&gt;      {&lt;br /&gt;         printf("Introduzca el valor del coeficiente de x%d: ",i);&lt;br /&gt;         scanf("%lf",&amp;com);&lt;br /&gt;         vec[i]=com;&lt;br /&gt;      }&lt;br /&gt;      printf("\nIntroduzca los limites del integral:");&lt;br /&gt;      printf("\nLimite inferior (xk):");   &lt;br /&gt;      scanf("%lf",&amp;linf);&lt;br /&gt;      printf("Limite superior (xk+1):");   &lt;br /&gt;      scanf("%lf",&amp;lsup);&lt;br /&gt;      res = simpson(vec,tam,linf,lsup);&lt;br /&gt;   &lt;br /&gt;      printf("\n  El Resultado de la integral es: %lf",res);&lt;br /&gt;      return 0;&lt;br /&gt;   }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-909908740406462345?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/909908740406462345/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=909908740406462345' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/909908740406462345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/909908740406462345'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/mtodo-de-simpson-en-lenguaje-c.html' title='Método de Simpson en lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-2158736973520402083</id><published>2008-01-24T23:11:00.000Z</published><updated>2008-02-07T18:59:13.606Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Calculo de Secante en lenguaje C</title><content type='html'>#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;math.h&gt;&lt;br /&gt;#define CERO 0.000001&lt;br /&gt;&lt;br /&gt;   float f(float x){&lt;br /&gt;      return (x*x)-2.0;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   float df(float x0,float x1){&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      return ((f(x1)-f(x0) )/ (x1-x0) );&lt;br /&gt;   }&lt;br /&gt;/*****************************************************/&lt;br /&gt;   float Secante(float p0, float p1 , float tol, int n){&lt;br /&gt;      int i=0;&lt;br /&gt;      float p,q0,q1;&lt;br /&gt;   &lt;br /&gt;      q0=f(p0);&lt;br /&gt;      q1=f(p1);&lt;br /&gt;   &lt;br /&gt;      while ((fabs(p1-p0) &gt; tol) &amp;&amp; (fabs(f(p)) &gt; CERO))  {&lt;br /&gt;         i++;&lt;br /&gt;      &lt;br /&gt;         p = p1- q1*(p1-p0)/(q1-q0);&lt;br /&gt;      &lt;br /&gt;         if( fabs(p-p1) &gt; CERO )&lt;br /&gt;            return p;&lt;br /&gt;      &lt;br /&gt;         p0=p1;&lt;br /&gt;         q0=q1;&lt;br /&gt;         p1=p;&lt;br /&gt;         q1=f(p);&lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;      }&lt;br /&gt;      printf("el n de iteraciones es %d\n", i);&lt;br /&gt;      return(p);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;/**********************************************************/&lt;br /&gt;&lt;br /&gt;   int main()&lt;br /&gt;   {&lt;br /&gt;      printf("La solucion es: %.16e\n\n", Secante(-2.0 , 2.0, 0.000001,10));&lt;br /&gt;      return 0;&lt;br /&gt;   }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-2158736973520402083?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/2158736973520402083/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=2158736973520402083' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2158736973520402083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2158736973520402083'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/calculo-de-secante-en-lenguaje-c.html' title='Calculo de Secante en lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-2549921229011715595</id><published>2008-01-24T23:10:00.000Z</published><updated>2008-02-07T18:59:13.608Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Método Regula Falsi en lenguaje C</title><content type='html'>#include&lt;stdio.h&gt;&lt;br /&gt;#include&lt;math.h&gt;&lt;br /&gt;&lt;br /&gt;#define Cero 0.00001&lt;br /&gt;   float f(float x){&lt;br /&gt;      return ((x*x*x)-2);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   float Regual_falsi (float a,float b, float tol){&lt;br /&gt;      float c = a - ( (b-a)/ (f(b)-f(a)) )*f(a);&lt;br /&gt;    int i=0;&lt;br /&gt;   &lt;br /&gt;      while ( (f(c) != Cero) &amp;&amp; ( fabs(b-a) &gt; tol )&amp;&amp; i&lt;10 ){&lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;         if (f(a) * f(c) &lt; Cero)&lt;br /&gt;            b=c;&lt;br /&gt;         else&lt;br /&gt;            a=c;&lt;br /&gt;      &lt;br /&gt;         c = a - ( (b-a)/ (f(b)-f(a)) )*f(a);&lt;br /&gt;     i++;}&lt;br /&gt;   &lt;br /&gt;      return c;&lt;br /&gt;   }&lt;br /&gt;   int main(){&lt;br /&gt;   &lt;br /&gt;      printf("el valor de la raiz es: %f \n", Regual_falsi (-2.0, 2.0, 0.000001 ) );&lt;br /&gt;      return 0;&lt;br /&gt;   }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-2549921229011715595?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/2549921229011715595/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=2549921229011715595' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2549921229011715595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2549921229011715595'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/mtodo-regula-falsi-en-lenguaje-c.html' title='Método Regula Falsi en lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-1198761377950236019</id><published>2008-01-24T23:08:00.000Z</published><updated>2008-02-07T18:59:13.609Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Método de Muller en lenguaje C</title><content type='html'>#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;math.h&gt;&lt;br /&gt;#include "complejo.h"&lt;br /&gt;#define CERO 0.00000001&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   fcomplex f(fcomplex x){&lt;br /&gt;      return Cadd(Cmul(x,Cmul(x,x)),Complex(-27.,0.));/*x^3 -27*/&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   fcomplex df(fcomplex x){&lt;br /&gt;      return RCmul(3.,Cmul(x,x));/*3x^2*/&lt;br /&gt;   }&lt;br /&gt;/****************************Newton Rapson***********************************/&lt;br /&gt;&lt;br /&gt;   fcomplex Newton_Rapson(fcomplex p, float tol, int n){&lt;br /&gt;      int i=0;&lt;br /&gt;      fcomplex np;&lt;br /&gt;      np=p;&lt;br /&gt;      p = Csub(p, Cdiv(f(p),df(p))  );&lt;br /&gt;   &lt;br /&gt;      while ((Cabs(Csub(np,p)) &gt; tol) &amp;&amp; (Cabs(f(p)) &gt; CERO) &amp;&amp; (i&lt;n))  {&lt;br /&gt;         i++;&lt;br /&gt;         np=p;&lt;br /&gt;      &lt;br /&gt;         if(Cabs(df(p))&gt;CERO)&lt;br /&gt;            p =Csub(p,Cdiv(f(p),df(p)));&lt;br /&gt;      &lt;br /&gt;      }&lt;br /&gt;      if (i==n) &lt;br /&gt;         printf("NEWTON HA EXEDIDO EL NUMERO DE ITERACIONES");&lt;br /&gt;      return(p);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;/**********************calculo de la segunda derivada***********************/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   fcomplex d2 (fcomplex aprox1, fcomplex aprox2,fcomplex aprox3)&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   {&lt;br /&gt;      fcomplex a,b,c;&lt;br /&gt;      if (  (Cabs(Csub(aprox2,aprox1)) &gt; CERO)  &amp;&amp; (Cabs(Csub(aprox3,aprox2)) &gt; CERO)  )    {&lt;br /&gt;         a = Cdiv(Csub(f(aprox2),f(aprox1)),Csub(aprox2,aprox1));&lt;br /&gt;         b = Cdiv(Csub(f(aprox3),f(aprox2)),Csub(aprox3,aprox2));&lt;br /&gt;         c = RCmul(2.0,(Cdiv(Csub(a,b),Csub(aprox1,aprox3))));  }&lt;br /&gt;      else&lt;br /&gt;         printf("\nDIVISION POR CERO EN DERIVADA SEGUNDA\n");&lt;br /&gt;      return c;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;/*definicion de la primera derivada discretizadas*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   fcomplex d1 (fcomplex aprox1, fcomplex aprox2, fcomplex aprox3)&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   {&lt;br /&gt;      fcomplex a,b,c;&lt;br /&gt;      if (Cabs(Csub(aprox3,aprox2)) &gt; CERO )&lt;br /&gt;         a = Cdiv(Csub(f(aprox3),f(aprox2)),Csub(aprox3,aprox2));&lt;br /&gt;      else&lt;br /&gt;         printf("\nDIVISION POR CERO EN DERIVADA PRIMERA\n");&lt;br /&gt;      b = Cmul(RCmul(0.5,d2(aprox1,aprox2,aprox3)),Csub(aprox3,aprox2));&lt;br /&gt;      c = Cadd(a,b);&lt;br /&gt;      return c;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/***********************calculo de la raiz cuadrada*************************/&lt;br /&gt;&lt;br /&gt;   fcomplex Msqrt (fcomplex x1, fcomplex x2, fcomplex x3){&lt;br /&gt;   &lt;br /&gt;      return Csqrt( Csub (  Cmul(d1(x1,x2,x3),d1(x1,x2,x3))    ,   Cmul( RCmul (2,d2(x1,x2,x3)), f(x3)  )   ));&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/***********************funcion Muller****************************/&lt;br /&gt;&lt;br /&gt;   fcomplex muller (fcomplex x0, fcomplex x1, fcomplex x2, float tol, int iter){&lt;br /&gt;   &lt;br /&gt;      fcomplex raiz_pos, raiz_neg;&lt;br /&gt;      int i=0;&lt;br /&gt;   &lt;br /&gt;      while ( ( Cabs(Csub(x1,x2)) &gt; tol) &amp;&amp; (i&lt;iter) &amp;&amp; (Cabs(f(x2))&gt;CERO) ){&lt;br /&gt;      &lt;br /&gt;         if (Cabs(d2(x0,x1,x2)) &gt; CERO){&lt;br /&gt;            raiz_pos = Cdiv( Cadd(RCmul(-1.,d1(x0,x1,x2))  ,Msqrt(x0,x1,x2))    ,d2(x0,x1,x2))  ;&lt;br /&gt;            raiz_neg = Cdiv( Csub(RCmul(-1.,d1(x0,x1,x2))  ,Msqrt(x0,x1,x2))    ,d2(x0,x1,x2))  ;&lt;br /&gt;         &lt;br /&gt;            if (Cabs(raiz_pos) &gt; Cabs(raiz_neg)){&lt;br /&gt;               x0=x1;&lt;br /&gt;               x1=x2;&lt;br /&gt;               x2=Cadd(raiz_neg,x2); }&lt;br /&gt;            else{&lt;br /&gt;               x0=x1;&lt;br /&gt;               x1=x2;&lt;br /&gt;               x2=Cadd(raiz_pos,x2); }&lt;br /&gt;         }&lt;br /&gt;         else{&lt;br /&gt;            printf("\nSOLUCION NEWTON RAPSON\n");&lt;br /&gt;            return Newton_Rapson(x0, tol, iter);}&lt;br /&gt;         i++;&lt;br /&gt;      }&lt;br /&gt;      if (i&gt;=iter) &lt;br /&gt;         printf("\nMULLER HA EXEDIDO EL NUMERO DE ITERACIONES\n");&lt;br /&gt;   &lt;br /&gt;      return x2;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/**************************************************************************************/&lt;br /&gt;&lt;br /&gt;   int main(){&lt;br /&gt;   &lt;br /&gt;      fcomplex s;&lt;br /&gt;   &lt;br /&gt;      s= muller ( Complex(0.01,0.), Complex(0.1,0.), Complex(1.,0.) ,0.000001, 1000);&lt;br /&gt;      printf("\nLa raiz buscada es: (%f,%f)\n\n", s.r,s.i);&lt;br /&gt;      return 0;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;// complejo.h&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#include &lt;stdio.h&gt; &lt;br /&gt;#include &lt;math.h&gt; &lt;br /&gt;&lt;br /&gt;#ifndef _FCOMPLEX_DECLARE_T_ &lt;br /&gt;   typedef struct {float r,i;} fcomplex;  /* type for a complex no */ &lt;br /&gt;#define _FCOMPLEX_DECLARE_T_ &lt;br /&gt;#endif /* _FCOMPLEX_DECLARE_T_ */ &lt;br /&gt;&lt;br /&gt;/* function prototypes */ &lt;br /&gt;/***********************/ &lt;br /&gt;   fcomplex Cadd( fcomplex a, fcomplex b); &lt;br /&gt;   fcomplex Csub( fcomplex a, fcomplex b); &lt;br /&gt;   fcomplex Cmul( fcomplex a, fcomplex b); &lt;br /&gt;   fcomplex Complex( float re, float im); &lt;br /&gt;   fcomplex Conjg( fcomplex z); &lt;br /&gt;   fcomplex Cdiv( fcomplex a, fcomplex b); &lt;br /&gt;   float    Cabs( fcomplex z); &lt;br /&gt;   fcomplex Csqrt( fcomplex z); &lt;br /&gt;   fcomplex RCmul( float x, fcomplex a); &lt;br /&gt;   fcomplex Cinv( fcomplex z); &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// complejo.c&lt;br /&gt;&lt;br /&gt;#include "complejo.h"&lt;br /&gt;&lt;br /&gt;   fcomplex Cadd(fcomplex a, fcomplex b) &lt;br /&gt;   { &lt;br /&gt;      fcomplex c; &lt;br /&gt;   &lt;br /&gt;      c.r=a.r+b.r; &lt;br /&gt;      c.i=a.i+b.i; &lt;br /&gt;      return c; &lt;br /&gt;   } &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   fcomplex Csub(fcomplex a, fcomplex b) &lt;br /&gt;   { &lt;br /&gt;      fcomplex c; &lt;br /&gt;      c.r=a.r-b.r; &lt;br /&gt;      c.i=a.i-b.i; &lt;br /&gt;      return c; &lt;br /&gt;   } &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   fcomplex Cmul(fcomplex a, fcomplex b)  /* Using only 3 multiplications! */ &lt;br /&gt;   { &lt;br /&gt;      fcomplex c; &lt;br /&gt;      float t1,t2; &lt;br /&gt;   &lt;br /&gt;      t1=a.r*b.r; &lt;br /&gt;      t2=a.i*b.i; &lt;br /&gt;   &lt;br /&gt;      c.r=t1-t2; &lt;br /&gt;      c.i=(a.r+a.i)*(b.r+b.i)-(t1+t2); &lt;br /&gt;      return c; &lt;br /&gt;   } &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   fcomplex Complex(float re, float im) &lt;br /&gt;   { &lt;br /&gt;      fcomplex c; &lt;br /&gt;      c.r=re; &lt;br /&gt;      c.i=im; &lt;br /&gt;      return c; &lt;br /&gt;   } &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   fcomplex Conjg(fcomplex z) &lt;br /&gt;   {  fcomplex c; &lt;br /&gt;      c.r=z.r; &lt;br /&gt;      c.i = -z.i; &lt;br /&gt;      return c; &lt;br /&gt;   } &lt;br /&gt;   &lt;br /&gt;   fcomplex Cdiv(fcomplex a, fcomplex b) &lt;br /&gt;   { &lt;br /&gt;      fcomplex c; &lt;br /&gt;      float r;  float den; &lt;br /&gt;   &lt;br /&gt;      if (fabs(b.r) &gt;= fabs(b.i)) { &lt;br /&gt;         r=b.i/b.r; &lt;br /&gt;         den=b.r+r*b.i; &lt;br /&gt;         c.r=(a.r+r*a.i)/den; &lt;br /&gt;         c.i=(a.i-r*a.r)/den; &lt;br /&gt;      } &lt;br /&gt;      else { &lt;br /&gt;         r=b.r/b.i; &lt;br /&gt;         den=b.i+r*b.r; &lt;br /&gt;         c.r=(a.r*r+a.i)/den; &lt;br /&gt;         c.i=(a.i*r-a.r)/den; &lt;br /&gt;      } &lt;br /&gt;      return c; &lt;br /&gt;   } &lt;br /&gt;&lt;br /&gt;   float Cabs(fcomplex z) &lt;br /&gt;   { &lt;br /&gt;      float x,y,ans,temp; &lt;br /&gt;      x=fabs(z.r); &lt;br /&gt;      y=fabs(z.i); &lt;br /&gt;      if (x == 0.0) &lt;br /&gt;         ans=y; &lt;br /&gt;      else if (y == 0.0) &lt;br /&gt;         ans=x; &lt;br /&gt;      else if (x &gt; y) { &lt;br /&gt;         temp=y/x; &lt;br /&gt;         ans=x*sqrt(1.0+temp*temp); &lt;br /&gt;      } &lt;br /&gt;      else { &lt;br /&gt;         temp=x/y; &lt;br /&gt;         ans=y*sqrt(1.0+temp*temp);  } &lt;br /&gt;      return ans; &lt;br /&gt;   } &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   fcomplex Csqrt(fcomplex z) &lt;br /&gt;   { &lt;br /&gt;      fcomplex c; &lt;br /&gt;      float w; &lt;br /&gt;      if ((z.r == 0.0) &amp;&amp; (z.i == 0.0)) { &lt;br /&gt;         c.r=0.0; &lt;br /&gt;         c.i=0.0; &lt;br /&gt;      } &lt;br /&gt;      else { &lt;br /&gt;         w = sqrt((sqrt(z.r*z.r + z.i*z.i) + fabs(z.r)) * 0.5); &lt;br /&gt;         if (z.r &gt;= 0.0){ &lt;br /&gt;            c.r=w; &lt;br /&gt;            c.i=z.i/(2.0*w); &lt;br /&gt;         } &lt;br /&gt;         else { &lt;br /&gt;            c.i=(z.i &gt;= 0) ? w : -w; &lt;br /&gt;            c.r=z.i/(2.0*c.i); &lt;br /&gt;         } &lt;br /&gt;      } &lt;br /&gt;      return c; &lt;br /&gt;   } &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   fcomplex RCmul(float x, fcomplex a) &lt;br /&gt;   { &lt;br /&gt;      fcomplex c; &lt;br /&gt;      c.r=x*a.r; &lt;br /&gt;      c.i=x*a.i; &lt;br /&gt;      return c; &lt;br /&gt;   } &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   fcomplex Cinv( fcomplex z) &lt;br /&gt;   { &lt;br /&gt;      fcomplex c; &lt;br /&gt;      float s = 1.0 / (z.r*z.r + z.i*z.i); &lt;br /&gt;   &lt;br /&gt;      c.r = z.r * s; &lt;br /&gt;      c.i = -z.i * s; &lt;br /&gt;      return c; &lt;br /&gt;   } &lt;br /&gt;&lt;br /&gt;&lt;br /&gt; /*  int main() &lt;br /&gt;   { &lt;br /&gt;      fcomplex a, b, c; &lt;br /&gt;   &lt;br /&gt;      a = Complex( 10, 6 ); &lt;br /&gt;      b = Complex( 4, 9 ); &lt;br /&gt;   &lt;br /&gt;      c = Cadd( a, b ); &lt;br /&gt;      printf( "Suma: (%f,%f)\n", c.r, c.i ); &lt;br /&gt;      c = Csub( a, b ); &lt;br /&gt;      printf( "Resta: (%f,%f)\n", c.r, c.i ); &lt;br /&gt;      c = Cmul( a, b ); &lt;br /&gt;      printf( "Producto: (%f,%f)\n", c.r, c.i ); &lt;br /&gt;      c = Cdiv( a, b ); &lt;br /&gt;      printf( "Divisin: (%f,%f)\n", c.r, c.i ); &lt;br /&gt;   } */&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-1198761377950236019?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/1198761377950236019/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=1198761377950236019' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1198761377950236019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1198761377950236019'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/mtodo-de-muller-en-lenguaje-c.html' title='Método de Muller en lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-3973810586389066942</id><published>2008-01-24T23:07:00.001Z</published><updated>2008-02-07T18:59:13.610Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Método de Relajación en lenguaje C</title><content type='html'>#include&lt;stdio.h&gt;&lt;br /&gt;#include&lt;math.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;&lt;br /&gt;   double** LeerDatos(char *nombrefichero,int *dimension)&lt;br /&gt;   {&lt;br /&gt;      double **matriz;&lt;br /&gt;      int i,j;&lt;br /&gt;      FILE *f;&lt;br /&gt;      if(f=fopen(nombrefichero,"r"),!f)&lt;br /&gt;      {&lt;br /&gt;         printf("Problema con la lectura del fichero\n");&lt;br /&gt;         return matriz;&lt;br /&gt;      }&lt;br /&gt;      fscanf(f,"%d\n",&amp;(*dimension));&lt;br /&gt;    /* Asignacion de memoria dinamica*/&lt;br /&gt;      matriz=(double**)malloc(*dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;*dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         matriz[i]=(double*)malloc((*dimension+1)*sizeof(double));&lt;br /&gt;      }&lt;br /&gt;    /* Lectura de elementos de la matriz*/&lt;br /&gt;      for(i=0;i&lt;*dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         for(j=0;j&lt;*dimension;j++)&lt;br /&gt;         {&lt;br /&gt;            fscanf(f,"%lf\n",&amp;(matriz[i][j]));&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;   /* Leemos el vector de terminos independientes */&lt;br /&gt;      for(i=0;i&lt;*dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         fscanf(f,"%lf\n",&amp;(matriz[i][*dimension]));&lt;br /&gt;      }&lt;br /&gt;      fclose(f);&lt;br /&gt;      return matriz;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;/* Procedimiento para mostrar matrices */&lt;br /&gt;   void muestra(double **matriz,int Tam)&lt;br /&gt;   {&lt;br /&gt;      int i,j;&lt;br /&gt;      printf("\n\t");&lt;br /&gt;      for(i=0;i&lt;Tam;i++)&lt;br /&gt;      {&lt;br /&gt;         for(j=0;j&lt;Tam;j++)&lt;br /&gt;         {&lt;br /&gt;            printf("%lf ",matriz[i][j]);&lt;br /&gt;         }&lt;br /&gt;         printf("\n\t");&lt;br /&gt;      }&lt;br /&gt;      printf("\n");&lt;br /&gt;   }&lt;br /&gt;/* Procedimiento que multiplica matrices */&lt;br /&gt;   double** mulmat(double **A, double **B,int dimension)&lt;br /&gt;   {&lt;br /&gt;      int i,j,k;&lt;br /&gt;      double **C=(double**)malloc(dimension*sizeof(double*));&lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         C[i]=(double*)malloc((dimension)*sizeof(double));&lt;br /&gt;      }&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         for(j=0;j&lt;dimension;j++)&lt;br /&gt;         {&lt;br /&gt;            C[i][j]=0;&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;      for (i=0;i&lt;dimension;++i)&lt;br /&gt;      {&lt;br /&gt;         for (j=0;j&lt;dimension;++j)&lt;br /&gt;         {&lt;br /&gt;            for (k=0;k&lt;dimension;++k)&lt;br /&gt;            {&lt;br /&gt;               C[i][j]=C[i][j]+(A[i][k]*B[k][j]);&lt;br /&gt;            }&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;      return (C);&lt;br /&gt;   }&lt;br /&gt;/* funcion que construye la matriz de Jacobi Mj*/&lt;br /&gt;   double** MJ(double **matriz,int dimension)&lt;br /&gt;   &lt;br /&gt;   {&lt;br /&gt;      int i,j;&lt;br /&gt;      double **mj,**L_U,**Dinv;&lt;br /&gt;   /* Tomamos memoria */&lt;br /&gt;      L_U=(double**)malloc(dimension*sizeof(double*));&lt;br /&gt;      Dinv=(double**)malloc(dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         L_U[i]=(double*)malloc((dimension)*sizeof(double));&lt;br /&gt;         Dinv[i]=(double*)malloc((dimension)*sizeof(double));&lt;br /&gt;      }&lt;br /&gt;    /* calculamos inv(D), y L_U=-L-U*/&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         for(j=0;j&lt;dimension;j++)&lt;br /&gt;         {&lt;br /&gt;            if (j==i)&lt;br /&gt;            {&lt;br /&gt;               Dinv[i][j]=1/matriz[i][j];&lt;br /&gt;               L_U[i][j]=0;&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;               Dinv[i][j]=0;&lt;br /&gt;               L_U[i][j]=(-1)*matriz[i][j];&lt;br /&gt;            }&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;   /* mj=inv(d)*(-L-U)*/&lt;br /&gt;      mj=mulmat(Dinv,L_U,dimension);&lt;br /&gt;      free(L_U);&lt;br /&gt;      free(Dinv);&lt;br /&gt;      return (mj);&lt;br /&gt;   }&lt;br /&gt;   double norma(double *vec,int dimension,int Tnorma)&lt;br /&gt;   {&lt;br /&gt;      int i,cero=0.00000000001;&lt;br /&gt;      double temp=0;&lt;br /&gt;      if (Tnorma==1)&lt;br /&gt;      {/*Norma ecuclidea*/&lt;br /&gt;         for(i=0;i&lt;dimension;i++)&lt;br /&gt;         {&lt;br /&gt;            temp+=vec[i]*vec[i];&lt;br /&gt;         }&lt;br /&gt;         return sqrt(temp);&lt;br /&gt;      }&lt;br /&gt;      else&lt;br /&gt;      {/*Norma infinita*/&lt;br /&gt;         temp=fabs(vec[0]);&lt;br /&gt;         for (i=1;i&lt;dimension;i++)&lt;br /&gt;         {&lt;br /&gt;            if ((fabs(vec[i])-fabs(temp)) &gt; cero)&lt;br /&gt;               temp=fabs(vec[i]);&lt;br /&gt;         }&lt;br /&gt;         return temp;&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;/* Devuelve el signo del autovalor*/&lt;br /&gt;   double sign(double *v1, double *v2, int dimension)&lt;br /&gt;   {&lt;br /&gt;      int i;&lt;br /&gt;      double temp=0;&lt;br /&gt;   &lt;br /&gt;      for (i=0; i&lt;dimension; i++)&lt;br /&gt;      {&lt;br /&gt;         temp = temp + v1[i] * v2[i];&lt;br /&gt;      }&lt;br /&gt;      if (temp&gt;=0)&lt;br /&gt;         return (1);&lt;br /&gt;      else&lt;br /&gt;         return (-1);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;/* Multiplica una matriz por un vector*/&lt;br /&gt;   double* MatxVec(double** matriz,double* vec,int dimension)&lt;br /&gt;   {&lt;br /&gt;      int i,j;&lt;br /&gt;      double *sol=(double*)malloc(dimension*sizeof(double));&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         sol[i]=0;&lt;br /&gt;         for (j=0;j&lt;dimension;j++)&lt;br /&gt;         {&lt;br /&gt;            sol[i]= sol[i] + matriz[i][j]*vec[j];&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;      return sol;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   double Potencia(double **matriz,int dimension,double *u_n,double tolerancia,int Nmax)&lt;br /&gt;   {&lt;br /&gt;      double* temp=(double*)malloc(dimension*sizeof(double));&lt;br /&gt;      double* u_n_1=(double*)malloc(dimension*sizeof(double));&lt;br /&gt;      double Norma,Norma_Anterior=0,solucion;&lt;br /&gt;      int n=1,j;&lt;br /&gt;   &lt;br /&gt;      Norma=norma(u_n,dimension,1);&lt;br /&gt;      while((n&lt;=Nmax)&amp;&amp;(fabs(Norma-Norma_Anterior)&gt;tolerancia))&lt;br /&gt;      {&lt;br /&gt;      /*Guardamos la iteracion anterior*/&lt;br /&gt;         for (j=0;j&lt;dimension;j++)&lt;br /&gt;         {&lt;br /&gt;            u_n_1[j]=u_n[j];&lt;br /&gt;         }&lt;br /&gt;      /*Dividimos entre la norma la iteracion actual*/&lt;br /&gt;         for (j=0;j&lt;dimension;j++)&lt;br /&gt;         {&lt;br /&gt;            u_n[j]=u_n[j]/Norma;&lt;br /&gt;         }&lt;br /&gt;      /* Y resolvemos la iteracion siguiente*/&lt;br /&gt;         temp = MatxVec(matriz,u_n,dimension);&lt;br /&gt;         free(u_n);&lt;br /&gt;         u_n=temp;&lt;br /&gt;         Norma_Anterior=Norma;&lt;br /&gt;      /* Hallamos el signo del autovalor maximo*/&lt;br /&gt;         solucion=Norma*sign(u_n, u_n_1, dimension);&lt;br /&gt;         n=n+1;&lt;br /&gt;         Norma=norma(u_n,dimension,1);&lt;br /&gt;      }&lt;br /&gt;      if (n&gt;Nmax) &lt;br /&gt;         printf("Se ha superado el numero de iteraciones maximo.\n");&lt;br /&gt;      free(u_n_1);&lt;br /&gt;      free(temp);&lt;br /&gt;      return (solucion);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   void relajacion(double **matriz,double *b,double *u_n,int dimension,int Nmax,double w,double Tol)&lt;br /&gt;   {&lt;br /&gt;      double dif,temp,maxdif=1.;&lt;br /&gt;      double *anterior;&lt;br /&gt;      int i,j,k,n=1;&lt;br /&gt;   &lt;br /&gt;      anterior=(double*)malloc(dimension*sizeof(double));&lt;br /&gt;      while((n&lt;=Nmax)&amp;&amp;(maxdif&gt;Tol)) /*Bucle para calcular las aproximaciones hasta el valor numero de iteraciones*/&lt;br /&gt;      {&lt;br /&gt;         printf(" u%d[ ",n);&lt;br /&gt;         for (i=0;i&lt;dimension;i++)&lt;br /&gt;         {&lt;br /&gt;            printf(" %lf",u_n[i]);&lt;br /&gt;            anterior[i]=u_n[i]; /*guardamos en el vector anterior la posicion anterior del vector de aproximacion*/&lt;br /&gt;         }&lt;br /&gt;         printf("]\n");&lt;br /&gt;      &lt;br /&gt;      /*Calculamos la siguiente iteracion*/&lt;br /&gt;         for (i=0;i&lt;dimension;i++) /*Calculamos u=( , , ,)*/&lt;br /&gt;         {&lt;br /&gt;            temp=0;&lt;br /&gt;            for (j=0;j&lt;dimension;j++)&lt;br /&gt;            {&lt;br /&gt;               if (i!=j)&lt;br /&gt;               {&lt;br /&gt;                  temp=temp-(matriz[i][j]*u_n[j]);&lt;br /&gt;               }&lt;br /&gt;            }&lt;br /&gt;            u_n[i]=w*( (temp + b[i]) / matriz[i][i])+((1-w)*u_n[i]); /*Aqui se almacena la siguiente aprox obtenida*/&lt;br /&gt;         }&lt;br /&gt;      /*Calculamos la mayor diferencia para el calculo del error*/&lt;br /&gt;         maxdif=fabs(u_n[0]-anterior[0]);&lt;br /&gt;         for (k=1;k&lt;dimension;k++)&lt;br /&gt;         {&lt;br /&gt;            dif=fabs(u_n[k]-anterior[k]);&lt;br /&gt;            if (dif&gt;maxdif)&lt;br /&gt;            {&lt;br /&gt;               maxdif=dif;&lt;br /&gt;            }&lt;br /&gt;         }&lt;br /&gt;         n++;&lt;br /&gt;      }&lt;br /&gt;      if (n&gt;Nmax) &lt;br /&gt;         printf("Se ha superado el numero de iteraciones maximo.\n");&lt;br /&gt;      free(anterior);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   int main()&lt;br /&gt;   {&lt;br /&gt;      int dimension,Nmax,i,j;&lt;br /&gt;      double Tol,wopt;&lt;br /&gt;      double **matriz,**Mj,*u,*b;&lt;br /&gt;   &lt;br /&gt;      printf("\t---------------------------------------------\n");&lt;br /&gt;      printf("\t|        METODO DE RELAJACION                |\n");&lt;br /&gt;      printf("\t---------------------------------------------\n");&lt;br /&gt;      printf("\n Introduzca tolerancia: ");&lt;br /&gt;      scanf("%lf",&amp;Tol);&lt;br /&gt;      printf(" Introduzca el numero maximo de iteraciones: ");&lt;br /&gt;      scanf("%i",&amp;Nmax);&lt;br /&gt;   &lt;br /&gt;      matriz=LeerDatos("matriz4.dat",&amp;dimension);&lt;br /&gt;      u=(double*)malloc(dimension*sizeof(double));/*Vector de aproximaciones iniciales*/&lt;br /&gt;      b=(double*)malloc(dimension*sizeof(double));/*Vector de terminos independientes*/&lt;br /&gt;      printf(" Terminos independientes: ");&lt;br /&gt;      printf("\n b[");&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         b[i]=matriz[i][dimension];&lt;br /&gt;         printf(" %lf",b[i]);&lt;br /&gt;      }&lt;br /&gt;      printf(" ]\n");&lt;br /&gt;      printf("\n La matriz de coeficientes es: \n\n");&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         printf("{  ");&lt;br /&gt;         for (j=0;j&lt;dimension;j++)&lt;br /&gt;         {&lt;br /&gt;            printf("%4.3f  ",matriz[i][j]);&lt;br /&gt;         }&lt;br /&gt;         printf("}\n");&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      /*Aplicamos el Metodo de la Potencia para despues calcular el Wopt.\n");*/&lt;br /&gt;      printf("\n Calculamos Mj=ind(D)(-L-U): \n");&lt;br /&gt;      Mj=MJ(matriz,dimension); /* Calculamos Mj=inv(D)(-L-U)*/&lt;br /&gt;      printf(" La matriz Mj da: \n");&lt;br /&gt;      muestra(Mj,dimension);&lt;br /&gt;      printf(" Introduce el vector de aproximacion inicial para el metodo de la potencia:\n");&lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         printf(" U[%d]=",i);&lt;br /&gt;         scanf("%lf",&amp;(u[i]));&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      wopt=Potencia(Mj,dimension,u,Tol,Nmax); /* Calculamos el autovalor maximo*/&lt;br /&gt;   &lt;br /&gt;      wopt=(2/(1+sqrt(1-(wopt*wopt))));/* Calculamos el w optimo*/&lt;br /&gt;      &lt;br /&gt;      printf(" El Wopt es: %lf \n",wopt);&lt;br /&gt;      printf(" Aplicamos Relajacion.\n");&lt;br /&gt;      printf(" Introduce el vector de aproximacion inicial para el metodo de Relajacion:\n");&lt;br /&gt;   &lt;br /&gt;      u=(double*)malloc(dimension*sizeof(double));&lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         printf(" U[%d]=",i);&lt;br /&gt;         scanf("%lf",&amp;(u[i]));&lt;br /&gt;      }&lt;br /&gt;   /* Aplicamos relajacion */&lt;br /&gt;      relajacion(matriz,b,u,dimension,Nmax,wopt,Tol); /*procedure q nos devuelve de salida u*/&lt;br /&gt;      printf("\n El resultado[");&lt;br /&gt;      for(i=0;i&lt;dimension;i=i+1)&lt;br /&gt;      {&lt;br /&gt;         printf(" %lf",u[i]);&lt;br /&gt;      }&lt;br /&gt;      printf(" ]\n");&lt;br /&gt;      return 0;&lt;br /&gt;   }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-3973810586389066942?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/3973810586389066942/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=3973810586389066942' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3973810586389066942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3973810586389066942'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/mtodo-de-relajacin-en-lenguaje-c.html' title='Método de Relajación en lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-532699766311483915</id><published>2008-01-24T23:05:00.001Z</published><updated>2008-02-07T18:59:13.610Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Método de Jacobi Mj_Cj en lenguaje C</title><content type='html'>#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;math.h&gt;&lt;br /&gt;&lt;br /&gt;   double** LeerDatos(char *nombrefichero,int *dimension) &lt;br /&gt;   {&lt;br /&gt;      double **matriz;&lt;br /&gt;      int i,j;&lt;br /&gt;      FILE *f;&lt;br /&gt;   &lt;br /&gt;      if(f=fopen(nombrefichero,"r"),!f){&lt;br /&gt;         printf("Problema con la lectura del fichero\n");&lt;br /&gt;         return matriz;&lt;br /&gt;      }&lt;br /&gt;      fscanf(f,"%d\n",&amp;(*dimension));&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   /* Asignacion de memoria dinamica*/&lt;br /&gt;      matriz=(double**)malloc(*dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;*dimension;i++)&lt;br /&gt;         matriz[i]=(double*)malloc((*dimension+1)*sizeof(double));&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;*dimension;i++)&lt;br /&gt;         for(j=0;j&lt;*dimension;j++)&lt;br /&gt;            fscanf(f,"%lf\n",&amp;(matriz[i][j]));&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;*dimension;i++) &lt;br /&gt;         fscanf(f,"%lf\n",&amp;(matriz[i][*dimension]));&lt;br /&gt;   &lt;br /&gt;      fclose(f); &lt;br /&gt;      return matriz; &lt;br /&gt;   } &lt;br /&gt;&lt;br /&gt;   void liberaMatriz(double **matriz,int dimension){&lt;br /&gt;      int i;&lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         free(matriz[i]);&lt;br /&gt;      free(matriz);&lt;br /&gt;   }&lt;br /&gt;   double **multiplica(double **A,double **B,int dimension){&lt;br /&gt;      int i,j,k;&lt;br /&gt;      double **C;&lt;br /&gt;      C=(double**)malloc(dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         C[i]=(double*)malloc((dimension+1)*sizeof(double));&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;         for (j=0;j&lt;dimension;j++)&lt;br /&gt;            for (k=0;k&lt;dimension;k++)&lt;br /&gt;               C[i][j]=C[i][j]+A[i][k]*B[k][j];&lt;br /&gt;      return C;&lt;br /&gt;   }&lt;br /&gt;   double *matrizPorVector(double **matriz,double *vector,int dimension){&lt;br /&gt;      double *resultado,a,b,mult;&lt;br /&gt;      int i,j;&lt;br /&gt;   &lt;br /&gt;      resultado=(double*)malloc(dimension*sizeof(double));&lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;dimension;i++){&lt;br /&gt;         mult=0;&lt;br /&gt;         for(j=0;j&lt;dimension;j++)&lt;br /&gt;            mult+=(matriz[i][j]*vector[j]);&lt;br /&gt;         resultado[i]=mult;&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      return resultado;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   double *suma_vector(double *A,double *B,int dimension){&lt;br /&gt;      int i;&lt;br /&gt;      double *C;&lt;br /&gt;   &lt;br /&gt;      C=(double*)malloc(dimension*sizeof(double));&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;         C[i] = A[i]+B[i];&lt;br /&gt;   &lt;br /&gt;      return C;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   void jacobi2 (double **m, double *v, double *aprox, int dimension, int iter){&lt;br /&gt;      double **D1,**LR, *C;&lt;br /&gt;      int i,j;&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      D1=(double**)malloc(dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         D1[i]=(double*)malloc((dimension)*sizeof(double));&lt;br /&gt;   &lt;br /&gt;      LR=(double**)malloc(dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         LR[i]=(double*)malloc((dimension)*sizeof(double));&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   /*HALLAMOS LA MATRIZ D INVERSA*/&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;         for(j=0;j&lt;dimension;j++)&lt;br /&gt;            if (j==i) &lt;br /&gt;               D1[i][j] = 1./m[i][j];&lt;br /&gt;            else &lt;br /&gt;               D1[i][j] = 0.; &lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   /*HALLAMOS LA MATRIZ -L-U*/&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;         for(j=0;j&lt;dimension;j++)&lt;br /&gt;            if (j!=i) &lt;br /&gt;               LR[i][j] = -m[i][j];&lt;br /&gt;            else &lt;br /&gt;               LR[i][j] = 0.;&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   /*OBTENEMOS LA MATRIZ DE JACOBI Mj*/&lt;br /&gt;      liberaMatriz(m,dimension);&lt;br /&gt;      m = multiplica(D1, LR, dimension);&lt;br /&gt;      printf("\n La matriz Mj  da como resultado :\n\n");&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         printf("{  ");&lt;br /&gt;         for (j=0;j&lt;dimension;j++)&lt;br /&gt;         {&lt;br /&gt;            printf("%4.3f  ",m[i][j]);&lt;br /&gt;         }&lt;br /&gt;         printf("}\n");&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   /*CALCULAMOS EL VECTOR Cj*/&lt;br /&gt;      C=matrizPorVector(D1,v,dimension);&lt;br /&gt;   &lt;br /&gt;      printf("\n El vector C da como resultado :\n\n");&lt;br /&gt;      for (j=0;j&lt;dimension;j++)&lt;br /&gt;      {&lt;br /&gt;         printf("%4.3f  ",C[j]);&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;iter;i++){&lt;br /&gt;         aprox = matrizPorVector(m,aprox,dimension);&lt;br /&gt;         aprox = suma_vector(aprox, C, dimension);&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      printf("\n\nEl vector solucion es:\n");&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         printf("\nvector Un[%d] = %lf",i,aprox[i]);&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   int main(){&lt;br /&gt;      double **matriz;&lt;br /&gt;      double *v, *aprox, aux;&lt;br /&gt;      int dimension, iter, i, j;&lt;br /&gt;   &lt;br /&gt;      matriz=LeerDatos("matriz10.dat",&amp;dimension);&lt;br /&gt;   &lt;br /&gt;      printf("\t---------------------------------------------\n");&lt;br /&gt;      printf("\t|        METODO DE GAUSS-JACOBI_MC          |\n");&lt;br /&gt;      printf("\t---------------------------------------------\n");&lt;br /&gt;   &lt;br /&gt;      v = (double*)malloc(dimension*sizeof(double));&lt;br /&gt;      aprox = (double*)malloc(dimension*sizeof(double));&lt;br /&gt;   &lt;br /&gt;      printf("\n La matriz de coeficientes es: \n\n");&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         printf("{  ");&lt;br /&gt;         for (j=0;j&lt;dimension;j++)&lt;br /&gt;         {&lt;br /&gt;            printf("%4.3f  ",matriz[i][j]);&lt;br /&gt;         }&lt;br /&gt;         printf("}\n");&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;         v[i] = matriz[i][dimension];&lt;br /&gt;   &lt;br /&gt;      printf("\nIntroduzca la aproximacion inicial:\n");&lt;br /&gt;      for(i=0;i&lt;dimension;i++){&lt;br /&gt;         scanf("\n%f", &amp;aux);&lt;br /&gt;         aprox[i] = aux;}&lt;br /&gt;      printf("\nIntroduzca el numero de interaciones deseado:\n");&lt;br /&gt;      scanf("%d",&amp;iter);&lt;br /&gt;      jacobi2 (matriz, v ,aprox, dimension, iter);&lt;br /&gt;   /* destruimos los vectores de punteros */&lt;br /&gt;     /*la matriz ya la libero arriba en gauss*/&lt;br /&gt;      free(v);&lt;br /&gt;      free(aprox);&lt;br /&gt;   system ("PAUSE");&lt;br /&gt;      return 0;&lt;br /&gt;      }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-532699766311483915?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/532699766311483915/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=532699766311483915' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/532699766311483915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/532699766311483915'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/mtodo-de-jacobi-mjcj-en-lenguaje-c.html' title='Método de Jacobi Mj_Cj en lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-583075409377315161</id><published>2008-01-24T23:04:00.000Z</published><updated>2008-02-07T18:59:13.612Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Método de Horner en Lenguaje C</title><content type='html'>#include&lt;stdio.h&gt;&lt;br /&gt;#include&lt;math.h&gt;&lt;br /&gt;#include&lt;stdlib.h&gt;&lt;br /&gt;&lt;br /&gt;   int Exponencial(float x0,int aux2){&lt;br /&gt;      float product;&lt;br /&gt;      product = 1.00;&lt;br /&gt;   &lt;br /&gt;      while ((aux2)!=0){&lt;br /&gt;         product *= x0;&lt;br /&gt;         aux2--;                 &lt;br /&gt;      }&lt;br /&gt;      return product; /*de aqui sale el cuadrada de cada*/ &lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   float Horner (float x0,float *P, int N){&lt;br /&gt;      float *Q,aux,a;&lt;br /&gt;      int i,j,product;&lt;br /&gt;   &lt;br /&gt;      aux = 0.00;&lt;br /&gt;   &lt;br /&gt;      Q= (double*)malloc(N*sizeof(double)); /*reservamos la memoria para el vector*/&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      for (i=N-1;i&gt;=0;i--){&lt;br /&gt;         if (i==N-1)&lt;br /&gt;            Q[i] = P[i]; /*bn=an*/&lt;br /&gt;         else&lt;br /&gt;            Q[i] = P[i] + (Q[i+1]*x0); /*bk=ak+ bk+1*x */&lt;br /&gt;      &lt;br /&gt;      }&lt;br /&gt;    &lt;br /&gt;     printf("{  ");&lt;br /&gt;&lt;br /&gt;      for ( i=0;i&lt;N;i++)&lt;br /&gt;        printf("-%f",Q[i]);&lt;br /&gt;     printf("}  ");&lt;br /&gt;   &lt;br /&gt;      j = 0;&lt;br /&gt;      for (i=N-1;i&gt;=0;i--){&lt;br /&gt;      &lt;br /&gt;         if (i!=0)&lt;br /&gt;         &lt;br /&gt;            aux += Q[i]*Exponencial(x0,N-1-j-1);/*te calcula las b para poder multiplicarlo*/&lt;br /&gt;       /* a=Exponencial(x0,N-1-j-1);*/&lt;br /&gt;        printf("da:%f\n",aux);&lt;br /&gt;         j++;&lt;br /&gt;      }&lt;br /&gt;      printf ("E valor numerico del polinomio es:%f\n", aux);&lt;br /&gt;      return 0.00;&lt;br /&gt;   }&lt;br /&gt;   int main(){&lt;br /&gt;      float P[5]={-61.0,50.00,-48.00,16.00,3.00};&lt;br /&gt;      Horner (3,P, 5);&lt;br /&gt;   &lt;br /&gt;      return 0;&lt;br /&gt;   &lt;br /&gt;   }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-583075409377315161?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/583075409377315161/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=583075409377315161' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/583075409377315161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/583075409377315161'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/mtodo-de-horner-en-lenguaje-c.html' title='Método de Horner en Lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-4174712368470362424</id><published>2008-01-24T23:03:00.000Z</published><updated>2008-02-07T18:59:13.613Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Método de Gauss-Jacobi en Lenguaje C</title><content type='html'>#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;math.h&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   double** LeerDatos(char *nombrefichero,int *dimension) &lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   {&lt;br /&gt;      double **matriz;&lt;br /&gt;      int i,j;&lt;br /&gt;      FILE *f;&lt;br /&gt;   &lt;br /&gt;      if(f=fopen(nombrefichero,"r"),!f){&lt;br /&gt;         printf("Problema con la lectura del fichero\n");&lt;br /&gt;         return matriz;&lt;br /&gt;      }&lt;br /&gt;      fscanf(f,"%d\n",&amp;(*dimension));&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   /* Asignacion de memoria dinamica*/&lt;br /&gt;      matriz=(double**)malloc(*dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;*dimension;i++)&lt;br /&gt;         matriz[i]=(double*)malloc((*dimension+1)*sizeof(double));&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;*dimension;i++)&lt;br /&gt;         for(j=0;j&lt;*dimension;j++)&lt;br /&gt;            fscanf(f,"%lf\n",&amp;(matriz[i][j]));&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;*dimension;i++) &lt;br /&gt;         fscanf(f,"%lf\n",&amp;(matriz[i][*dimension]));&lt;br /&gt;   &lt;br /&gt;      fclose(f); &lt;br /&gt;      return matriz; &lt;br /&gt;   } &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   void gauss_jacobi (double **m, float *v, float *aprox, int dimension, int iter){&lt;br /&gt;      int i,j,p;&lt;br /&gt;      float resta = 0. ,*aprox2;&lt;br /&gt;   &lt;br /&gt;      aprox2 = (float*)malloc(dimension*sizeof(float));&lt;br /&gt;   &lt;br /&gt;      for (i=0; i&lt;iter; i++){ /*Bucle para calcular las aproximaciones hasta el valor numero de iteraciones*/&lt;br /&gt;      &lt;br /&gt;         for(p=0; p&lt;dimension; p++){ /*Calculamos u=( , , ,)*/&lt;br /&gt;         &lt;br /&gt;            for(j=0; j&lt;dimension; j++)&lt;br /&gt;               if (j!=p)&lt;br /&gt;                  resta = resta - m[p][j] * aprox[j]; /*Se calcula el 2º termino*/&lt;br /&gt;         &lt;br /&gt;            resta =resta + v[p]; /*Numerador*/&lt;br /&gt;            resta = resta /m[p][p];/*Denominador se divide por la diagonal(termino despejado)*/&lt;br /&gt;            aprox2[p]= resta;/*vector auxiliar para guardar provicionalmente hasta que termine la iteracion las aproximaciones*/&lt;br /&gt;            resta = 0.; &lt;br /&gt;         }&lt;br /&gt;      &lt;br /&gt;         for (p=0;p&lt;dimension;p++){&lt;br /&gt;         &lt;br /&gt;            aprox[p]= aprox2[p]; /*En Gauss Jacobi refescamos la aproximacion al final de cada iteracion*/&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;         printf(" u[%d] = %f",i, aprox[i]);/*Mostramos las aproximaciones obtenidas con el numero de iteraciones indicado*/&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   int main(){&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      double **matriz;&lt;br /&gt;      float *v, *aprox, aux;&lt;br /&gt;      int dimension, iter, i, j;&lt;br /&gt;   &lt;br /&gt;      matriz=LeerDatos("matriz4.dat",&amp;dimension); /*Leemos la matriz del fichero*/&lt;br /&gt;   &lt;br /&gt;      printf("\t---------------------------------------------\n");&lt;br /&gt;      printf("\t|        METODO DE GAUSS-JACOBI             |\n");&lt;br /&gt;      printf("\t---------------------------------------------\n");&lt;br /&gt;   &lt;br /&gt;      v = (float*)malloc(dimension*sizeof(float));&lt;br /&gt;      aprox = (float*)malloc(dimension*sizeof(float));&lt;br /&gt;   &lt;br /&gt;      printf("\n La matriz de coeficientes es: \n\n");&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         printf("{  ");&lt;br /&gt;         for (j=0;j&lt;dimension;j++)&lt;br /&gt;         {&lt;br /&gt;            printf("%4.3f  ",matriz[i][j]);&lt;br /&gt;         }&lt;br /&gt;         printf("}\n");&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;         v[i] = matriz[i][dimension];&lt;br /&gt;   &lt;br /&gt;      printf("\n Introduzca la aproximacion inicial: \n");&lt;br /&gt;      for(i=0;i&lt;dimension;i++){&lt;br /&gt;         scanf("\n%f", &amp;aux);&lt;br /&gt;         aprox[i] = aux;}&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      printf("\nIntroduzca el numero de iteraciones: \n");&lt;br /&gt;      scanf("%d",&amp;iter);&lt;br /&gt;   &lt;br /&gt;      printf("\n La solucion es la siguiente: \n\n");&lt;br /&gt;      gauss_jacobi (matriz, v ,aprox, dimension, iter);&lt;br /&gt;   &lt;br /&gt;      return 0;&lt;br /&gt;   &lt;br /&gt;   }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-4174712368470362424?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/4174712368470362424/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=4174712368470362424' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4174712368470362424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4174712368470362424'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/mtodo-de-gauss-jacobi-en-lenguaje-c.html' title='Método de Gauss-Jacobi en Lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-1563833246724155184</id><published>2008-01-24T23:02:00.000Z</published><updated>2008-02-07T18:59:13.614Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Método de Gauss-Seidel en Lenguaje C</title><content type='html'>#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;math.h&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   double** LeerDatos(char *nombrefichero,int *dimension) &lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   {&lt;br /&gt;      double **matriz;&lt;br /&gt;      int i,j;&lt;br /&gt;      FILE *f;&lt;br /&gt;   &lt;br /&gt;      if(f=fopen(nombrefichero,"r"),!f){&lt;br /&gt;         printf("Problema con la lectura del fichero\n");&lt;br /&gt;         return matriz;&lt;br /&gt;      }&lt;br /&gt;      fscanf(f,"%d\n",&amp;(*dimension));&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   /* Asignacion de memoria dinamica*/&lt;br /&gt;      matriz=(double**)malloc(*dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;*dimension;i++)&lt;br /&gt;         matriz[i]=(double*)malloc((*dimension+1)*sizeof(double));&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;*dimension;i++)&lt;br /&gt;         for(j=0;j&lt;*dimension;j++)&lt;br /&gt;            fscanf(f,"%lf\n",&amp;(matriz[i][j]));&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;*dimension;i++) &lt;br /&gt;         fscanf(f,"%lf\n",&amp;(matriz[i][*dimension]));&lt;br /&gt;   &lt;br /&gt;      fclose(f); &lt;br /&gt;      return matriz; &lt;br /&gt;   } &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   void gauss_seidel (double **m, float *v, float *aprox, int dimension, int iter){&lt;br /&gt;      int i,j,p;&lt;br /&gt;      float resta = 0.;&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      for (i=0; i&lt;iter; i++){ /*Bucle para calcular las aproximaciones hasta el valor numero de iteraciones*/&lt;br /&gt;      &lt;br /&gt;         for(p=0; p&lt;dimension; p++){ /*Calculamos u=( , , ,)*/&lt;br /&gt;         &lt;br /&gt;            for(j=0; j&lt;dimension; j++)&lt;br /&gt;               if (j!=p)&lt;br /&gt;                  resta = resta - m[p][j] * aprox[j]; /*Se calcula el 2º termino*/&lt;br /&gt;         &lt;br /&gt;            resta =resta + v[p]; /*Numerador*/&lt;br /&gt;            resta = resta /m[p][p];/*Denominador se divide por la diagonal(termino despejado)*/&lt;br /&gt;            aprox[p]= resta; /*En Gauss seidel refescamos la aproximacion en cada iteracion*/&lt;br /&gt;            resta = 0.;   }&lt;br /&gt;      &lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;         printf(" u[%d] = %f",i, aprox[i]); /*Mostramos por pantalla las aproximaciones obtenidas*/&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   int main(){&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      double **matriz;&lt;br /&gt;      float *v, *aprox, aux;&lt;br /&gt;      int dimension, iter, i, j;&lt;br /&gt;   &lt;br /&gt;      matriz=LeerDatos("matriz4.dat",&amp;dimension); /*Leemos la matriz del fichero*/&lt;br /&gt;   &lt;br /&gt;      printf("\t---------------------------------------------\n");&lt;br /&gt;      printf("\t|        METODO DE GAUSS-SEIDEL             |\n");&lt;br /&gt;      printf("\t---------------------------------------------\n");&lt;br /&gt;   &lt;br /&gt;      v = (float*)malloc(dimension*sizeof(float));&lt;br /&gt;      aprox = (float*)malloc(dimension*sizeof(float));&lt;br /&gt;   &lt;br /&gt;      printf("\n La matriz de coeficientes es: \n\n");&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         printf("{  ");&lt;br /&gt;         for (j=0;j&lt;dimension;j++)&lt;br /&gt;         {&lt;br /&gt;            printf("%4.3f  ",matriz[i][j]);&lt;br /&gt;         }&lt;br /&gt;         printf("}\n");&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;         v[i] = matriz[i][dimension];&lt;br /&gt;   &lt;br /&gt;      printf("\n Introduzca la aproximacion inicial: \n");&lt;br /&gt;      for(i=0;i&lt;dimension;i++){&lt;br /&gt;         scanf("\n%f", &amp;aux);&lt;br /&gt;         aprox[i] = aux;}&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      printf("\nIntroduzca el numero de iteraciones: \n");&lt;br /&gt;      scanf("%d",&amp;iter);&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      gauss_seidel (matriz, v ,aprox, dimension, iter);&lt;br /&gt;      return 0;&lt;br /&gt;   }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-1563833246724155184?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/1563833246724155184/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=1563833246724155184' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1563833246724155184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1563833246724155184'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/mtodo-de-gauss-seidel-en-lenguaje-c_24.html' title='Método de Gauss-Seidel en Lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-8194573112466851977</id><published>2008-01-24T22:59:00.000Z</published><updated>2008-02-07T18:59:13.614Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Método de Gauss-Seidel en Lenguaje C (Mj_CJ)</title><content type='html'>#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;math.h&gt;&lt;br /&gt;#define TOL 0.00001&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   double** LeerDatos(char *nombrefichero,int *dimension) &lt;br /&gt;   {&lt;br /&gt;      double **matriz;&lt;br /&gt;      int i,j;&lt;br /&gt;      FILE *f;&lt;br /&gt;   &lt;br /&gt;      if(f=fopen(nombrefichero,"r"),!f){&lt;br /&gt;         printf("Problema con la lectura del fichero\n");&lt;br /&gt;         return matriz;&lt;br /&gt;      }&lt;br /&gt;      fscanf(f,"%d\n",&amp;(*dimension));&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   /* Asignacion de memoria dinamica*/&lt;br /&gt;      matriz=(double**)malloc(*dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;*dimension;i++)&lt;br /&gt;         matriz[i]=(double*)malloc((*dimension+1)*sizeof(double));&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;*dimension;i++)&lt;br /&gt;         for(j=0;j&lt;*dimension;j++)&lt;br /&gt;            fscanf(f,"%lf\n",&amp;(matriz[i][j]));&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;*dimension;i++) &lt;br /&gt;         fscanf(f,"%lf\n",&amp;(matriz[i][*dimension]));&lt;br /&gt;   &lt;br /&gt;      fclose(f); &lt;br /&gt;      return matriz; &lt;br /&gt;   } &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   void liberaMatriz(double **matriz,int dimension){&lt;br /&gt;      int i;&lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         free(matriz[i]);&lt;br /&gt;      free(matriz);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   double **multiplica(double **A,double **B,int dimension){&lt;br /&gt;      int i,j,k;&lt;br /&gt;      double **C;&lt;br /&gt;      C=(double**)malloc(dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         C[i]=(double*)malloc((dimension+1)*sizeof(double));&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;         for (j=0;j&lt;dimension;j++)&lt;br /&gt;            for (k=0;k&lt;dimension;k++)&lt;br /&gt;               C[i][j]=C[i][j]+A[i][k]*B[k][j];&lt;br /&gt;      return C;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   double **matrizAmpliada(double **matriz,double *vector,int dimension){&lt;br /&gt;      int i,j;&lt;br /&gt;      double **C;&lt;br /&gt;      C=(double**)malloc(dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         C[i]=(double*)malloc((dimension+1)*sizeof(double));&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;         for (j=0;j&lt;dimension;j++)&lt;br /&gt;            C[i][j]=matriz[i][j];&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;         C[i][dimension]=vector[i];&lt;br /&gt;      return C;&lt;br /&gt;   }&lt;br /&gt;   double *matrizPorVector(double **matriz,double *vector,int dimension){&lt;br /&gt;      double *resultado,a,b,mult;&lt;br /&gt;      int i,j;&lt;br /&gt;   &lt;br /&gt;      resultado=(double*)malloc(dimension*sizeof(double));&lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;dimension;i++){&lt;br /&gt;         mult=0;&lt;br /&gt;         for(j=0;j&lt;dimension;j++)&lt;br /&gt;            mult+=(matriz[i][j]*vector[j]);&lt;br /&gt;         resultado[i]=mult;&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      return resultado;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   double* resolverSistemaGauss(double **A,double *b,int dimension){ /*funcion q la usa inversa*/&lt;br /&gt;      double M,t,*X,suma,**aux;&lt;br /&gt;      int i,j,p,k,c,*Fila;&lt;br /&gt;   &lt;br /&gt;      Fila=(int*)malloc(dimension*sizeof(int*));&lt;br /&gt;      X=(double*)malloc(dimension*sizeof(double));&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      aux=(double**)malloc(dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         aux[i]=(double*)malloc((dimension+1)*sizeof(double));&lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         for(j=0;j&lt;dimension;j++)&lt;br /&gt;            aux[i][j]=A[i][j];&lt;br /&gt;   &lt;br /&gt;      aux=matrizAmpliada(aux,b,dimension);&lt;br /&gt;   &lt;br /&gt;      for(j=0;j&lt;dimension;j++)&lt;br /&gt;         Fila[j]=j;&lt;br /&gt;   &lt;br /&gt;      for(p=0;p&lt;dimension-1;p++){&lt;br /&gt;         for(k=p+1;k&lt;dimension;k++)&lt;br /&gt;            if(fabs(aux[Fila[k]][p])&gt;(fabs(aux[Fila[p]][p]))){&lt;br /&gt;               t=Fila[p];&lt;br /&gt;               Fila[p]=Fila[k];&lt;br /&gt;               Fila[k]=t;&lt;br /&gt;            }&lt;br /&gt;      &lt;br /&gt;         if(fabs(aux[Fila[p]][p]) &lt; TOL){&lt;br /&gt;            printf("\n\n\"resolverSistemaGauss\" informa:\n");&lt;br /&gt;            printf("La matriz es singular\n");&lt;br /&gt;            return NULL;&lt;br /&gt;         }&lt;br /&gt;      &lt;br /&gt;         for(k=p+1;k&lt;dimension;k++){&lt;br /&gt;            M=(aux[Fila[k]][p])/(aux[Fila[p]][p]);&lt;br /&gt;            for(c=p;c&lt;=dimension;c++)&lt;br /&gt;               aux[Fila[k]][c]=(aux[Fila[k]][c])-(M*aux[Fila[p]][c]);&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      if(fabs(aux[Fila[dimension-1]][dimension-1]) &lt; TOL){&lt;br /&gt;         printf("\n\n\"resolverSistemaGauss\" informa:\n");&lt;br /&gt;         printf("La matriz es singular\n");&lt;br /&gt;         return NULL;&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      X[dimension-1]=aux[Fila[dimension-1]][dimension]/(aux[Fila[dimension-1]][dimension-1]);&lt;br /&gt;   &lt;br /&gt;      for(k=dimension-2;k&gt;=0;k--){&lt;br /&gt;         suma=0.;&lt;br /&gt;         for(c=dimension-1;c&gt;k;c--)&lt;br /&gt;            suma+=X[c]*aux[Fila[k]][c];&lt;br /&gt;         X[k]=(aux[Fila[k]][dimension]-suma)/aux[Fila[k]][k];&lt;br /&gt;      }&lt;br /&gt;      return X;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   double **inversa(double **A,int dimension){&lt;br /&gt;      double **invA,*C,**aux,*b;&lt;br /&gt;      int i,j;&lt;br /&gt;   &lt;br /&gt;      b=(double*)malloc((dimension)*sizeof(double));&lt;br /&gt;   &lt;br /&gt;      invA=(double**)malloc(dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         invA[i]=(double*)malloc((dimension)*sizeof(double));&lt;br /&gt;   &lt;br /&gt;      aux=(double**)malloc(dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         aux[i]=(double*)malloc((dimension+1)*sizeof(double));&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         for(j=0;j&lt;dimension;j++)&lt;br /&gt;            aux[i][j]=A[i][j];&lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;dimension;i++){&lt;br /&gt;         for(j=0;j&lt;dimension;j++){&lt;br /&gt;            if (j==i)&lt;br /&gt;               b[j]=1;&lt;br /&gt;            else&lt;br /&gt;               b[j]=0;&lt;br /&gt;         }&lt;br /&gt;      &lt;br /&gt;         if (C=resolverSistemaGauss(aux,b,dimension))&lt;br /&gt;            for(j=0;j&lt;dimension;j++)&lt;br /&gt;               invA[j][i]=C[j];&lt;br /&gt;         else&lt;br /&gt;            return NULL;&lt;br /&gt;      }&lt;br /&gt;      liberaMatriz(aux,dimension); &lt;br /&gt;      return invA;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   double *suma_vector(double *A,double *B,int dimension){&lt;br /&gt;   &lt;br /&gt;      int i;&lt;br /&gt;      double *C;&lt;br /&gt;   &lt;br /&gt;      C=(double*)malloc(dimension*sizeof(double));&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;         C[i] = A[i]+B[i];&lt;br /&gt;   &lt;br /&gt;      return C;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   void Gauss_Seidel_2 (double **m, double *v, double *aprox, int dimension, int iter){&lt;br /&gt;      double **DL,  **U, *C;&lt;br /&gt;      int i,j;&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      DL=(double**)malloc(dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         DL[i]=(double*)malloc((dimension)*sizeof(double));&lt;br /&gt;   &lt;br /&gt;      U=(double**)malloc(dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         U[i]=(double*)malloc((dimension)*sizeof(double));&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   /*Hallamos la matriz D + L */&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;         for(j=0;j&lt;dimension;j++)&lt;br /&gt;            if (j&gt;i) &lt;br /&gt;               DL[i][j] = 0.;&lt;br /&gt;            else&lt;br /&gt;               DL[i][j] = m[i][j];&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   /*Hallamos la inversa de D+L*/&lt;br /&gt;   &lt;br /&gt;      DL = inversa(DL, dimension);&lt;br /&gt;   &lt;br /&gt;   /*Obtenemos la matriz -U*/&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;         for(j=0;j&lt;dimension;j++)&lt;br /&gt;            if (j&gt;i) &lt;br /&gt;               U[i][j] = -m[i][j];&lt;br /&gt;            else &lt;br /&gt;               U[i][j] = 0.;&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   /*OBTENEMOS LA MATRIZ DE GAUSS SEIDEL Mj*/&lt;br /&gt;   &lt;br /&gt;      liberaMatriz(m,dimension);&lt;br /&gt;      m = multiplica(DL, U, dimension);&lt;br /&gt;      printf("\La matriz Mgs da: \n\n");&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         printf("{  ");&lt;br /&gt;         for (j=0;j&lt;dimension;j++)&lt;br /&gt;         {&lt;br /&gt;            printf("%4.3f  ",m[i][j]);&lt;br /&gt;         }&lt;br /&gt;         printf("}\n");&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   /*CALCULAMOS EL VECTOR Cj*/&lt;br /&gt;      C=matrizPorVector(DL,v,dimension);&lt;br /&gt;      printf("\nEl vector C da: \n");&lt;br /&gt;      for (j=0;j&lt;dimension;j++)&lt;br /&gt;      {&lt;br /&gt;         printf("  %4.3f  ",C[j]);&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;iter;i++){&lt;br /&gt;         aprox = matrizPorVector(m,aprox,dimension);&lt;br /&gt;         aprox = suma_vector(aprox, C, dimension);}&lt;br /&gt;   &lt;br /&gt;      printf("\nEl vector solucion para ese numero de iteraciones es:\n");&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         printf("\nvector Un[%d] = %lf",i,aprox[i]);&lt;br /&gt;   liberaMatriz(m,dimension);&lt;br /&gt;   liberaMatriz(U,dimension);&lt;br /&gt;   liberaMatriz(DL,dimension);&lt;br /&gt;   &lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   int main(){&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      double **matriz;&lt;br /&gt;      double *v, *aprox, aux;&lt;br /&gt;      int dimension, iter, i, j;&lt;br /&gt;   &lt;br /&gt;      matriz=LeerDatos("matriz4.dat",&amp;dimension);&lt;br /&gt;   &lt;br /&gt;      printf("\t---------------------------------------------\n");&lt;br /&gt;      printf("\t|        METODO DE GAUSS-SEIDEL_MC          |\n");&lt;br /&gt;      printf("\t---------------------------------------------\n");&lt;br /&gt;   &lt;br /&gt;      v = (double*)malloc(dimension*sizeof(double));&lt;br /&gt;      aprox = (double*)malloc(dimension*sizeof(double));&lt;br /&gt;   &lt;br /&gt;      printf("\n La matriz de coeficientes es: \n\n");&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         printf("{  ");&lt;br /&gt;         for (j=0;j&lt;dimension;j++)&lt;br /&gt;         {&lt;br /&gt;            printf("%4.3f  ",matriz[i][j]);&lt;br /&gt;         }&lt;br /&gt;         printf("}\n");&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;         v[i] = matriz[i][dimension];&lt;br /&gt;   &lt;br /&gt;      printf("\nIntroduzca la aproximacion inicial:\n");&lt;br /&gt;      for(i=0;i&lt;dimension;i++){&lt;br /&gt;         scanf("\n%f", &amp;aux);&lt;br /&gt;         aprox[i] = aux;}&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      printf("\nIntroduzca el numero de interaciones deseado:\n");&lt;br /&gt;      scanf("%d",&amp;iter);&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      Gauss_Seidel_2 (matriz, v ,aprox, dimension, iter);&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   /* destruimos los vectores de punteros */&lt;br /&gt;     /*la matriz ya la libero arriba en gauss*/&lt;br /&gt;      free(v);&lt;br /&gt;      free(aprox);&lt;br /&gt;   &lt;br /&gt;      return 0;&lt;br /&gt;   &lt;br /&gt;   }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-8194573112466851977?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/8194573112466851977/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=8194573112466851977' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8194573112466851977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8194573112466851977'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/mtodo-de-gauss-seidel-en-lenguaje-c.html' title='Método de Gauss-Seidel en Lenguaje C (Mj_CJ)'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-7908973811502814827</id><published>2008-01-24T22:51:00.000Z</published><updated>2008-02-07T18:59:13.615Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Método de Crout en lenguaje C</title><content type='html'>//principal.c&lt;br /&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;math.h&gt;&lt;br /&gt;#include "matrices.h"&lt;br /&gt;#include "crout.h"&lt;br /&gt;&lt;br /&gt;   void captura_matriz(double **mat,int nfil,int ncol)&lt;br /&gt;   {&lt;br /&gt;      int i,j;&lt;br /&gt;      double valor;&lt;br /&gt;      &lt;br /&gt;      for (i=0;i&lt;nfil;i++)&lt;br /&gt;      {&lt;br /&gt;         for (j=0;j&lt;ncol;j++)&lt;br /&gt;         {&lt;br /&gt;            printf("introduzca el valor[%d,%d]=",i,j);&lt;br /&gt;            scanf("%f",&amp;valor);&lt;br /&gt;            mat[i][j]=valor;&lt;br /&gt;         &lt;br /&gt;         }&lt;br /&gt;      }}&lt;br /&gt;   void muestra_matriz (double **mat,int nfil,int ncol)&lt;br /&gt;   {&lt;br /&gt;      int i,j;&lt;br /&gt;   &lt;br /&gt;      for (i=0;i&lt;nfil;i++)&lt;br /&gt;      {&lt;br /&gt;         printf("{  ");&lt;br /&gt;         for (j=0;j&lt;ncol;j++)&lt;br /&gt;         {&lt;br /&gt;            printf("%4.3f  ",mat[i][j]);&lt;br /&gt;         }&lt;br /&gt;         printf("}\n");&lt;br /&gt;      }  &lt;br /&gt;   }&lt;br /&gt;   int main()&lt;br /&gt;   &lt;br /&gt;   {&lt;br /&gt;      double **matriz,**matriz_u,**matriz_l,*vect,*termindp;&lt;br /&gt;      FILE *fich; &lt;br /&gt;      int i,j,tam;&lt;br /&gt;      /*apertura de fichero, devolviendo el tamaÃ±o de la matriz*/&lt;br /&gt;      tam = abrirFicheroMatriz("matriz4.dat",&amp;fich);&lt;br /&gt;   &lt;br /&gt;   /*se reserva para las matrices vectores de punteros a double que serÃ­an las filas (i)*/&lt;br /&gt;      matriz_u = (double**)malloc(tam*sizeof(double*));&lt;br /&gt;      matriz_l = (double**)malloc(tam*sizeof(double*));&lt;br /&gt;      vect = (double*)malloc(tam*sizeof(double));&lt;br /&gt;      termindp = (double*)malloc(tam*sizeof(double));&lt;br /&gt;      /*una vez reservadas las filas se reservan para cada puntero del vector un vector que seran&lt;br /&gt;   las columnas*/&lt;br /&gt;      for(i=0;i&lt;tam;i++) {&lt;br /&gt;         matriz_u[i]=(double*)malloc(tam*sizeof(double));&lt;br /&gt;         matriz_l[i]=(double*)malloc(tam*sizeof(double));&lt;br /&gt;      }   &lt;br /&gt;      printf("\t---------------------------------------------\n");&lt;br /&gt;      printf("\t|        METODO DE CROUT                    |\n");&lt;br /&gt;      printf("\t---------------------------------------------\n");&lt;br /&gt;   &lt;br /&gt;    /*Se procedera en primer lugar a descomponer la matriz A, en matriz B y matriz B'\n");&lt;br /&gt;       usando para ello el metodo de Crout.\n");&lt;br /&gt;      Se realizara el descenso y el remonte de las misma, obtiendo asi las soluciones del sistema\n\n");*/&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      matriz=leerDatos(fich,tam);&lt;br /&gt;      /*se lee la matriz A y se muestra*/&lt;br /&gt;      printf("La matriz de coeficientes es: \n ");&lt;br /&gt;      muestra_matriz(matriz,tam,tam);&lt;br /&gt;   &lt;br /&gt;      crout(matriz,matriz_u,matriz_l,tam);&lt;br /&gt;      /*una vez hallado B y B' o L y U son mostradas por pantalla*/&lt;br /&gt;   &lt;br /&gt;      printf("\n\n El metodo de Crout concluido con exito \n");&lt;br /&gt;      printf("\nEsta son las dos matrices obtenidas : ");&lt;br /&gt;   &lt;br /&gt;      printf("\nMatriz B' : \n ");&lt;br /&gt;      muestra_matriz(matriz_l,tam,tam);&lt;br /&gt;      printf("\nmatriz B: \n ");&lt;br /&gt;      muestra_matriz(matriz_u,tam,tam);&lt;br /&gt;   /*vector de terminos independientes*/&lt;br /&gt;   &lt;br /&gt;      printf("Vector de terminos independientes :\n");&lt;br /&gt;      for(i=0;i&lt;tam;i++)&lt;br /&gt;      {&lt;br /&gt;         printf("\n");&lt;br /&gt;         termindp[i]=matriz[i][tam];&lt;br /&gt;         printf("( %4.3lf )", termindp[i]);&lt;br /&gt;      }&lt;br /&gt;      printf("\n");&lt;br /&gt;      vect =descenso(matriz_l,termindp,tam);&lt;br /&gt;      vect =remonte(matriz_u,vect,tam);&lt;br /&gt;      printf("La resolucion del sistema de ecuaciones a concluido con exito, las soluciones son: ");&lt;br /&gt;      printf("\n");&lt;br /&gt;      for(i=0;i&lt;tam;i++)&lt;br /&gt;         printf("( %4.3lf )", vect[i]);&lt;br /&gt;      printf("\n");&lt;br /&gt;      for(i=0; i&lt;tam; i++)&lt;br /&gt;      { &lt;br /&gt;         free(matriz[i]);&lt;br /&gt;         free(matriz_l[i]);&lt;br /&gt;         free(matriz_u[i]);&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;   /* destruimos losvectorres de punteros */&lt;br /&gt;      free(matriz);&lt;br /&gt;      free(matriz_l);&lt;br /&gt;      free(matriz_u);&lt;br /&gt;      free(vect);&lt;br /&gt;      free(termindp);&lt;br /&gt;      return 0;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//matrices.h&lt;br /&gt;#ifndef MATRICES_DEF&lt;br /&gt;#define MATRICES_DEF&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* devuelve la matriz resultante de A*B */&lt;br /&gt;   double **multiplica(double **A,double **B,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* devuelve la matriz resultante de A*x, siendo x un vector */&lt;br /&gt;   double *matrizPorVector(double **matriz,double *vector,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* devuelve la matriz resultante de A+B */&lt;br /&gt;   double **suma(double **A,double **B,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* devuelve la matriz resultante de A-B */&lt;br /&gt;   double **resta(double **A,double **B,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* Le resta a la diagonal el autovalor pasado */&lt;br /&gt;/* si se le pasa la matriz ampliada solo devulve la matriz */&lt;br /&gt;/* sin la columna de terminos independientes */&lt;br /&gt;   double **matrizMenosAutovalor(double **matriz,double autovalor,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* devuelve el vector de terminos independientes de la matriz ampliada */&lt;br /&gt;   double *terminosIndependientes(double **matriz,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* crea una matriz ampliada pasandole una matriz y   */&lt;br /&gt;/* el vector de terminos independientes              */&lt;br /&gt;   double **matrizAmpliada(double **matriz,double *vector,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* devuelve la matriz traspuesta de una matriz de entrada */&lt;br /&gt;   double **traspuesta(double **A,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* devuelve el vector de soluciones obtenidas al realizar&lt;br /&gt;   el descenso en una matriz triangular superior */&lt;br /&gt;   double *remonte(double **B,double *b,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* devuelve el vector de soluciones obtenidas al realizar&lt;br /&gt;   el descenso en una matriz triangular inferior */&lt;br /&gt;   double *descenso(double **B,double *b,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* comprueba si una matriz es simetrica */&lt;br /&gt;/* 1: SI es simetrica */&lt;br /&gt;/* 0: NO es simetrica */&lt;br /&gt;   int simetrica(double **A,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* comprueba si dos matrices son iguales */&lt;br /&gt;/* 1: SI son iguales */&lt;br /&gt;/* 0: NO son iguales */&lt;br /&gt;   int iguales(double **A,double **B,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* comprueba si una matriz es tridiagonal */&lt;br /&gt;/* 1: SI es tridiagonal */&lt;br /&gt;/* 0: NO es tridiagonal */&lt;br /&gt;   int tridiagonal(double **A,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* imprime por pantalla la matriz A */&lt;br /&gt;/* La dimension maxima para poder imprirse es 6 */&lt;br /&gt;   void imprimirMatrizPantalla(double **A,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* imprime a un fichero la matriz C (maximo dimension 10) */&lt;br /&gt;/* requiere que el fichero haya sido abierto previamente */&lt;br /&gt;   void imprimirMatrizFichero(FILE *fichero,double **C,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* Analogo que imprimirMatrizPantalla pero con un vector */&lt;br /&gt;   void imprimirVectorPantalla(double *vector,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* Analogo que imprimirMatrizFichero pero con un vector */&lt;br /&gt;   void imprimirVectorFichero(FILE *fichero,double *vector,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* devuelve la matriz B de la descomposicion A=B*Bt */&lt;br /&gt;/* comprueba que la matriz A sea simetrica, devolviendo&lt;br /&gt;   un NULL en caso de no ser simetrica */&lt;br /&gt;   double **descomposicionCholesky (double **A,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* lee de un fichero de texto una matriz */&lt;br /&gt;/* la matriz tiene que venir de la siguiente manera */&lt;br /&gt;/* en la primera linea la dimension, despues en cada linea&lt;br /&gt;   se van introduciendo los elementos de las distintas filas&lt;br /&gt;   ordenadamente. Al final y tambien en cada linea los terminos&lt;br /&gt;   independientes; Ejemplo:&lt;br /&gt; 2&lt;br /&gt; 1&lt;br /&gt; 0&lt;br /&gt; 0&lt;br /&gt; 1&lt;br /&gt; 1&lt;br /&gt; 1&lt;br /&gt; Esta seria la matriz identidad de orden dos y con el vector (1,1) como&lt;br /&gt; terminos independientes. */&lt;br /&gt;   double** leerDatos(FILE *f,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* abre un fichero que contiene una matriz con la representacion&lt;br /&gt;   anterior devolviendo:&lt;br /&gt; la dimension si pudo abrir el fichero satisfactoriamente&lt;br /&gt; 0 en caso contrario */&lt;br /&gt;   int abrirFicheroMatriz(char *nombreFichero,FILE **fentrada);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* crea un fichero con una matriz con la representacion comentada en leerDatos&lt;br /&gt;   para luego poder se leida por leerDatos. Como parametros requiere la matriz,&lt;br /&gt;   el vector de terminos independientes y la dimension de la matriz.&lt;br /&gt; Devuelve:&lt;br /&gt; 1: pudo crear el fichero correctamente&lt;br /&gt; 0: no pudo crear el fichero */&lt;br /&gt;   int crearFicheroMatriz(double **matriz,double *vector,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* elimina el espacio reservado para una matriz */&lt;br /&gt;   void eliminaMatriz(double **matriz,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* Esta funcion se apoya en la funcion descomposicionCholesky para obtener la&lt;br /&gt;/* matriz B y luego resolver el sistema B*z=b mediante un remonte. La solucion&lt;br /&gt;/* de este sistema la utilizamos para resolver el sistema Bt*u=z mediante un&lt;br /&gt;/* descenso. Requiere que la matriz sea definida positiva y simetrica             */&lt;br /&gt;   double *resolverSistemaCholesky(double **A,double *vector,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   double* resolverSistemaGauss(double **A,double *b,int dimension);&lt;br /&gt;&lt;br /&gt;   double* resolverSistemaGaussSeidel(double **A,double *b,int dimension,int *Nmax);&lt;br /&gt;&lt;br /&gt;   double *autovaloresJacobi(double **matriz,int dimension,int *Nmax);&lt;br /&gt;&lt;br /&gt;   double determinante(double **matriz,int dimension);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* Calcula la inversa de una matriz. Para ello resuelve tantos sistemas como sea&lt;br /&gt;/* la dimension de entrada. La peculiaridad de estos sistemas es que tiene como&lt;br /&gt;/* terminos independientes las columnas de la matriz identidad. Los vectores obtenidos&lt;br /&gt;/* como soluciones de estos sistemas seran las columnas de la matriz inversa. Para&lt;br /&gt;/* resolver los distintos sistemas utilizamos la funcion resolverSistemaGauss. Si&lt;br /&gt;/* Gauss no es capaz de resolver el sistema devuelve NULL                          */&lt;br /&gt;   double **inversa(double **A,int dimension);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* calcula el autovalor maximo de la matriz de entrada que en valor absoluto es   */&lt;br /&gt;/* el radio espectral de la matriz de entrada                                     */&lt;br /&gt;   double potencia(double **matriz, double *x,double *autovector,int dimension,int *Nmax);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;/* resuelve un sistema de ecuaciones por el metodo de la relajacion, que es muy&lt;br /&gt;/* parecido al metodo de Gauss-Seidel pero introduciendo un parametro de&lt;br /&gt;/* relajacion w. Para el calculo de este w nos apoyamos en el metodo de la&lt;br /&gt;/* potencia para el calculo del autovalor maximo. Para ello es imprescindible&lt;br /&gt;/* que la matriz de entrada sea tridiagonal. En caso de no ser tridiagonal&lt;br /&gt;/* resolvemos el sistema con una w predefinida (ver implementacion)               */&lt;br /&gt;   double* resolverSistemaRelajacion(double **A,double *b,int dimension,int *Nmax);&lt;br /&gt;/*--------------------------------------------------------------------------------*/&lt;br /&gt;&lt;br /&gt;   double potenciaInversa(double **matriz, double *uInicial,double *autovector,int dimension,int *Nmax);&lt;br /&gt;&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;//matrices.c&lt;br /&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;math.h&gt;&lt;br /&gt;#include &lt;string.h&gt;&lt;br /&gt;#include "matrices.h"&lt;br /&gt;#define TOL 0.00000001&lt;br /&gt;&lt;br /&gt;   int iguales(double **A,double **B,int dimension){&lt;br /&gt;      int i,j;&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         for(j=0;j&lt;dimension;j++)&lt;br /&gt;            if(fabs((A[i][j])-(B[i][j])) &gt; TOL)&lt;br /&gt;               return 0;&lt;br /&gt;      return 1;&lt;br /&gt;      printf("\nLas matrices estan bien");&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   int abrirFicheroMatriz(char *nombreFichero,FILE **fentrada){&lt;br /&gt;      int dimension;&lt;br /&gt;      if(*fentrada=fopen(nombreFichero,"rb"),!*fentrada){&lt;br /&gt;         printf("\n\n\"abrirFicheroMatriz\" informa:\n");&lt;br /&gt;         printf("ERROR: No se ha podido abrir el fichero \"%s\"",nombreFichero);&lt;br /&gt;         return 0;&lt;br /&gt;      }&lt;br /&gt;      fscanf(*fentrada,"%d\n",&amp;dimension);&lt;br /&gt;      return dimension;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   double **multiplica(double **A,double **B,int dimension){&lt;br /&gt;      int i,j,k;&lt;br /&gt;      double **C;&lt;br /&gt;      C=(double**)malloc(dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         C[i]=(double*)malloc((dimension+1)*sizeof(double));&lt;br /&gt;      for (i=0;i&lt;dimension;i++)&lt;br /&gt;         for (j=0;j&lt;dimension;j++)&lt;br /&gt;            for (k=0;k&lt;dimension;k++)&lt;br /&gt;               C[i][j]=C[i][j]+A[i][k]*B[k][j];&lt;br /&gt;      return C;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   double** leerDatos(FILE *f,int dimension){&lt;br /&gt;      double **matriz;&lt;br /&gt;      int i,j;&lt;br /&gt;   &lt;br /&gt;   /* Asignacion de memoria dinamica*/&lt;br /&gt;      matriz=(double**)malloc(dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         matriz[i]=(double*)malloc((dimension+1)*sizeof(double));&lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         for(j=0;j&lt;dimension;j++)&lt;br /&gt;            fscanf(f,"%lf\n",&amp;(matriz[i][j]));&lt;br /&gt;   &lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;         fscanf(f,"%lf\n",&amp;(matriz[i][dimension]));&lt;br /&gt;   &lt;br /&gt;      fclose(f);&lt;br /&gt;      return matriz;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   int tridiagonal(double **A,int dimension){&lt;br /&gt;      int i,j;&lt;br /&gt;      for(i=2;i&lt;dimension;i++)&lt;br /&gt;         for(j=0;j&lt;dimension-2;j++)&lt;br /&gt;            if((fabs(A[j][i])+fabs(A[i][j])) &gt; TOL)&lt;br /&gt;               return 0;&lt;br /&gt;      return 1;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   double *descenso(double **B,double *b,int dimension){&lt;br /&gt;      int i,j;&lt;br /&gt;      double suma,*vec;&lt;br /&gt;      vec=(double*)malloc(dimension*sizeof(double));&lt;br /&gt;      vec[0]=b[0]/(B[0][0]);&lt;br /&gt;      for(i=1;i&lt;dimension;i++){&lt;br /&gt;         suma=0.;&lt;br /&gt;         for(j=0;j&lt;i;j++)&lt;br /&gt;            suma+=vec[j]*B[i][j];&lt;br /&gt;         vec[i]=(b[i]-suma)/B[i][i];&lt;br /&gt;      }&lt;br /&gt;      return vec;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   double *remonte(double **B,double *b,int dimension){&lt;br /&gt;      int i,j;&lt;br /&gt;      double suma,*vec;&lt;br /&gt;      vec=(double*)malloc(dimension*sizeof(double));&lt;br /&gt;      vec[dimension-1]=b[dimension-1]/(B[dimension-1][dimension-1]);&lt;br /&gt;      for(i=dimension-2;i&gt;=0;i--){&lt;br /&gt;         suma=0.;&lt;br /&gt;         for(j=dimension-1;j&gt;i;j--)&lt;br /&gt;            suma+=vec[j]*B[i][j];&lt;br /&gt;         vec[i]=(b[i]-suma)/B[i][i];&lt;br /&gt;      }&lt;br /&gt;      return vec;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;//crout.h&lt;br /&gt;&lt;br /&gt;#ifndef CROUT&lt;br /&gt;#define CROUT&lt;br /&gt;&lt;br /&gt;       /**************METODO DE FACTORIZACION DE CROUT*****************/&lt;br /&gt;&lt;br /&gt;   void crout(double **mat,double **matriz_u,double **matriz_l,int tam);&lt;br /&gt;  /*procedimiento que dada una matriz y un tamaño devuelve dos matrices triangulares que su multiplicacion dan mat, dado que crout es un metodo de factorizacion*/&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//crout.c&lt;br /&gt;&lt;br /&gt;   void crout(double **mat,double **mat_u,double **mat_l,int tam)&lt;br /&gt;   {&lt;br /&gt;   &lt;br /&gt;      int i,j,k;&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;      for (i=0; i&lt;tam; i++ )&lt;br /&gt;      {&lt;br /&gt;         for(j=0;j&lt;tam;j++)&lt;br /&gt;         {&lt;br /&gt;            if (i==j)&lt;br /&gt;               mat_u[i][j]=1.;&lt;br /&gt;            else&lt;br /&gt;               mat_u[i][j]=0.;&lt;br /&gt;         &lt;br /&gt;            mat_l[i][j]=0.;&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      mat_l[0][0]=mat[0][0];&lt;br /&gt;      mat_u[0][1]=(mat[0][1]/mat_l[0][0]);&lt;br /&gt;      mat_l[1][0]=mat[1][0];&lt;br /&gt;   &lt;br /&gt;      /*Se rellenan las matrices*/&lt;br /&gt;   &lt;br /&gt;      for(i=1;i&lt;tam-1;i++)&lt;br /&gt;      {&lt;br /&gt;         mat_l[i][i]=mat[i][i]-(mat_l[i][i-1]*mat_u[i-1][i]);&lt;br /&gt;         mat_u[i][i+1]=(mat[i][i+1]/mat_l[i][i]);&lt;br /&gt;         mat_l[i+1][i]=mat[i+1][i];&lt;br /&gt;      }&lt;br /&gt;      mat_l[tam-1][tam-2]=mat[tam-1][tam-2];&lt;br /&gt;      mat_l[tam-1][tam-1]=mat[tam-1][tam-1]-mat_l[tam-1][tam-2]*mat_u[tam-2][tam-1];&lt;br /&gt;   }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-7908973811502814827?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/7908973811502814827/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=7908973811502814827' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7908973811502814827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7908973811502814827'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/mtodo-de-crout-en-lenguaje-c.html' title='Método de Crout en lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-5432622013393343972</id><published>2008-01-24T22:48:00.000Z</published><updated>2008-02-07T18:59:13.616Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Método de la Bisección en Lenguaje C</title><content type='html'>#include&lt;stdio.h&gt;&lt;br /&gt;#include&lt;math.h&gt;&lt;br /&gt;&lt;br /&gt;#define Cero 0.00001&lt;br /&gt;&lt;br /&gt;   float f(float x){&lt;br /&gt;      return (x*x*x)-27;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   float biseccion (float a,float b, float tol){&lt;br /&gt;      float c = (a+b)/2.0;&lt;br /&gt;   &lt;br /&gt;      while ( (f(c) != Cero) &amp;&amp; ( fabs(b-a) &gt; tol ) ){&lt;br /&gt;         if (f(a) * f(c) &lt; Cero)&lt;br /&gt;            b=c;&lt;br /&gt;         else&lt;br /&gt;            a=c;&lt;br /&gt;         c = (a+b)/2.0;}&lt;br /&gt;      return c;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   int main(){&lt;br /&gt;   &lt;br /&gt;      printf("el valor de la raiz es: %f \n", biseccion (0.0, 3.0, 0.001) );&lt;br /&gt;      return 0;&lt;br /&gt;   &lt;br /&gt;   }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-5432622013393343972?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/5432622013393343972/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=5432622013393343972' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/5432622013393343972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/5432622013393343972'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/mtodo-de-la-biseccin-en-lenguaje-c.html' title='Método de la Bisección en Lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-8438652190822974170</id><published>2008-01-24T22:41:00.000Z</published><updated>2008-02-07T18:59:13.617Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Método de Cholesky en Lenguaje C</title><content type='html'>//Principal.c&lt;br /&gt;//Autores.- Sergio Romero Sánchez &amp; Alejandro E. Castro Robredo&lt;br /&gt;//Práctica Método de Cholesky.-&lt;br /&gt;//Especialidad.- I.T.I.G.  &lt;br /&gt;//Fecha.- 18/01/2005   &lt;br /&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include "cholesky.h"&lt;br /&gt;#include "Leer.h"&lt;br /&gt;   int main()&lt;br /&gt;   {&lt;br /&gt;      double **A,*x;&lt;br /&gt;      int n,i,j;&lt;br /&gt;&lt;br /&gt;      A=LeerDatos("Dto2.dat",&amp;n);&lt;br /&gt;      if ( (x=Cholesky(A,n))!=NULL)&lt;br /&gt;      {&lt;br /&gt;         printf ("\nEstos son los resultados: \n");&lt;br /&gt;         for(i=0;i&lt;n;i++)&lt;br /&gt;            printf("\n           X%d = %.14lf",i,x[i]);&lt;br /&gt;         free(x);&lt;br /&gt;  printf ("\n");&lt;br /&gt;      }&lt;br /&gt;      else&lt;br /&gt;      {&lt;br /&gt;         printf ("No se ha podido resolver el sistema \n");&lt;br /&gt;      }&lt;br /&gt;      for (i=0;i&lt;n;i++)&lt;br /&gt;      {&lt;br /&gt;         free(A[i]);&lt;br /&gt;      }&lt;br /&gt;      free(A);&lt;br /&gt;      return 1;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//Leer.h&lt;br /&gt;   double** LeerDatos(char *nombrefichero,int *dimension);&lt;br /&gt;&lt;br /&gt;//Leer.c&lt;br /&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;   #include "Leer.h"&lt;br /&gt;   #include &lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;   double** LeerDatos(char *nombrefichero,int *dimension) {&lt;br /&gt;      double **matriz;&lt;br /&gt;      int i,j;&lt;br /&gt;      FILE *f;&lt;br /&gt;&lt;br /&gt;      if(f=fopen(nombrefichero,"r"),!f){&lt;br /&gt;         printf("Problema con la lectura del fichero\n");&lt;br /&gt;         return matriz;&lt;br /&gt;      }&lt;br /&gt;      fscanf(f,"%d\n",&amp;(*dimension));&lt;br /&gt;&lt;br /&gt;   /* Asignacion de memoria dinamica*/&lt;br /&gt;      matriz=(double**)malloc(*dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;*dimension;i++)&lt;br /&gt;         matriz[i]=(double*)malloc((*dimension+1)*sizeof(double));&lt;br /&gt;&lt;br /&gt;      for(i=0;i&lt;*dimension;i++)&lt;br /&gt;         for(j=0;j&lt;*dimension;j++)&lt;br /&gt;            fscanf(f,"%lf\n",&amp;(matriz[i][j]));&lt;br /&gt;&lt;br /&gt;      for(i=0;i&lt;*dimension;i++)&lt;br /&gt;         fscanf(f,"%lf\n",&amp;(matriz[i][*dimension]));&lt;br /&gt;&lt;br /&gt;      fclose(f);&lt;br /&gt;      return matriz;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//Cholesky.h&lt;br /&gt;&lt;br /&gt;   int Diagonalizar(double **A,double **B,int dimension);&lt;br /&gt;   void MatrizTraspuesta(double **A,double **At,int dimension);&lt;br /&gt;   void DescensoCholesky(double **B,double *y,double *b,int dimension);&lt;br /&gt;   void AscensoCholesky(double **Bt,double *x,double *y,int dimension);&lt;br /&gt;   int Simetrica (double **A,int n);&lt;br /&gt;   double** LeerDatos(char *nombrefichero,int *dimension);&lt;br /&gt;   double* Cholesky (double **A, int dimension);&lt;br /&gt;&lt;br /&gt;//Cholesky.c&lt;br /&gt;&lt;br /&gt;#include "cholesky.h"&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;math.h&gt;&lt;br /&gt;&lt;br /&gt;   int Diagonalizar(double **A,double **B,int dimension)&lt;br /&gt;   /* Ambas matrices deben ya disponer de espacio de memoria dinamica&lt;br /&gt;   // A = matriz original de coeficientes&lt;br /&gt;   // B = triangular inferior (los de arriba todos a cero) despues de &lt;br /&gt;aplicar Cholesky&lt;br /&gt;   // dimension = dimension de la matriz cuadrada*/&lt;br /&gt;   {&lt;br /&gt;      int i,j,k;&lt;br /&gt;      double suma,producto,z;&lt;br /&gt;&lt;br /&gt;      for(j=0;j&lt;dimension;j++)&lt;br /&gt;      {&lt;br /&gt;         for (i=j;i&lt;dimension;i++)&lt;br /&gt;         {&lt;br /&gt;            if(i==j)&lt;br /&gt;            {&lt;br /&gt;               suma = 0.;&lt;br /&gt;               for(k=0;k&lt;j;k++)&lt;br /&gt;               {&lt;br /&gt;                  producto = B[j][k]*B[j][k];&lt;br /&gt;                  suma = suma + producto;&lt;br /&gt;               }&lt;br /&gt;               if ((z=A[j][j]-suma)&lt;=0)&lt;br /&gt;               {&lt;br /&gt;                  return 0;&lt;br /&gt;               }&lt;br /&gt;               else&lt;br /&gt;               {&lt;br /&gt;                  B[j][j] = sqrt(z);&lt;br /&gt;               }&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;               suma = 0.;&lt;br /&gt;               for(k=0;k&lt;j;k++)&lt;br /&gt;               {&lt;br /&gt;                  producto = B[i][k]*B[j][k];&lt;br /&gt;                  suma = suma + producto;&lt;br /&gt;               }&lt;br /&gt;               B[i][j] = (double)(A[i][j]-suma)/B[j][j];&lt;br /&gt;            }&lt;br /&gt;            printf("\nB[%d][%d] = %.14lf",i,j,B[i][j]);&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;      return 1;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   void MatrizTraspuesta(double **A,double **At,int dimension)&lt;br /&gt;   /* Ambas matrices deben ya disponer de espacio de memoria dinamica&lt;br /&gt;   // A = matriz original&lt;br /&gt;   // At = matriz traspuesta de la matriz A&lt;br /&gt;   // dimension = dimension de la matriz cuadrada*/&lt;br /&gt;   {&lt;br /&gt;      int i,j;&lt;br /&gt;&lt;br /&gt;      for (j=0;j&lt;dimension;j++)&lt;br /&gt;      {&lt;br /&gt;         for(i=0;i&lt;dimension;i++)&lt;br /&gt;            At[i][j] = A[j][i];&lt;br /&gt;      }&lt;br /&gt;      return;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   void DescensoCholesky(double **B,double *y,double *b,int dimension)&lt;br /&gt;   /*Ambas matrices deben ya disponer de espacio de memoria dinamica&lt;br /&gt;   // B = matriz B&lt;br /&gt;   // y = soluciones del descenso&lt;br /&gt;   // b = vector de terminos independientes&lt;br /&gt;   // dimension = dimension de la matriz cuadrada*/&lt;br /&gt;   {&lt;br /&gt;      int i,j;&lt;br /&gt;      double suma;&lt;br /&gt;&lt;br /&gt;      for(i=0;i&lt;dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         suma = 0.;&lt;br /&gt;         for(j=0;j&lt;i;j++)&lt;br /&gt;         {&lt;br /&gt;            suma = suma + (B[i][j]*y[j]);&lt;br /&gt;         }&lt;br /&gt;         y[i] = (double)(b[i]-suma)/B[i][i];&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      for(i=0;i&lt;4;i++)&lt;br /&gt;         printf("\ny%d = %.14lf",i,y[i]);&lt;br /&gt;&lt;br /&gt;      return;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   void AscensoCholesky(double **Bt,double *x,double *y,int dimension)&lt;br /&gt;   /*Ambas matrices deben ya disponer de espacio de memoria dinamica&lt;br /&gt;   // Bt = matriz traspuesta de B&lt;br /&gt;   // x = soluciones del sistemas&lt;br /&gt;   // y = soluciones del descenso&lt;br /&gt;   // dimension = dimension de la matriz cuadrada */&lt;br /&gt;   {&lt;br /&gt;      int i,j;&lt;br /&gt;      double suma;&lt;br /&gt;&lt;br /&gt;      for(i=(dimension-1);i&gt;=0;i--)&lt;br /&gt;      {&lt;br /&gt;         suma = 0.;&lt;br /&gt;         for(j=i;j&lt;dimension;j++)&lt;br /&gt;         {&lt;br /&gt;            suma = suma + (Bt[i][j]*x[j]);&lt;br /&gt;         }&lt;br /&gt;         x[i] = (double)(y[i]-suma)/Bt[i][i];&lt;br /&gt;      }&lt;br /&gt;      return;&lt;br /&gt;   }&lt;br /&gt;   int Simetrica (double **A,int n)&lt;br /&gt;&lt;br /&gt;   /* A=Matriz de coeficientes si es simétrica devuelve 1, en caso contrario &lt;br /&gt;devuelve 0 */&lt;br /&gt;   {&lt;br /&gt;      int i,j;&lt;br /&gt;&lt;br /&gt;      for (i=0;i&lt;n;i++)&lt;br /&gt;      {&lt;br /&gt;         for (j=i+1;j&lt;n;j++)&lt;br /&gt;         {&lt;br /&gt;            if (A[i][j]!=A[j][i])&lt;br /&gt;               return 0;&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;      return 1;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   double* Cholesky (double **A, int dimension)&lt;br /&gt;   {&lt;br /&gt;      /* Matriz A contiene coefcientes y tréminos independientes&lt;br /&gt;         dimension de la matriz&lt;br /&gt;         Si A cumple condiciones de Cholesky entonces&lt;br /&gt;                Devuelve X con la solucion del sistema&lt;br /&gt;         en caso contrario&lt;br /&gt;                Devuelve NULL */&lt;br /&gt;&lt;br /&gt;      double *b,**B,**Bt,*x,*y;&lt;br /&gt;      int h,i;&lt;br /&gt;      if (Simetrica(A,dimension)==1)&lt;br /&gt;      {&lt;br /&gt;         b=(double*)malloc(dimension*sizeof(double));&lt;br /&gt;         B = (double**)malloc(dimension*sizeof(double*));&lt;br /&gt;         for(h=0;h&lt;dimension;h++)&lt;br /&gt;            B[h] = (double*)malloc(dimension*sizeof(double));&lt;br /&gt;&lt;br /&gt;         Bt = (double**)malloc(dimension*sizeof(double*));&lt;br /&gt;         for(h=0;h&lt;dimension;h++)&lt;br /&gt;            Bt[h] = (double*)malloc(dimension*sizeof(double));&lt;br /&gt;         x = (double*)malloc(dimension*sizeof(double));&lt;br /&gt;         y = (double*)malloc(dimension*sizeof(double));&lt;br /&gt;         for(i=0;i&lt;dimension;i++)&lt;br /&gt;            b[i]=A[i][dimension];&lt;br /&gt;&lt;br /&gt;         if  (Diagonalizar(A,B,dimension)==1)&lt;br /&gt;         {&lt;br /&gt;            MatrizTraspuesta(B,Bt,4);&lt;br /&gt;            DescensoCholesky(B,y,b,dimension);&lt;br /&gt;            AscensoCholesky(Bt,x,y,dimension);&lt;br /&gt;&lt;br /&gt;            for (i=0;i&lt;dimension;i++)&lt;br /&gt;            {&lt;br /&gt;               free(B[i]);free(Bt[i]);&lt;br /&gt;            }&lt;br /&gt;            free(y);&lt;br /&gt;            free(B);&lt;br /&gt;            free(Bt);&lt;br /&gt;            free(b);&lt;br /&gt;            return x;&lt;br /&gt;         }&lt;br /&gt;         else&lt;br /&gt;         {&lt;br /&gt;            printf ("La matriz de coeficientes no es definida positiva,y por &lt;br /&gt;tanto no se puede resolver a través de Cholesky \n");&lt;br /&gt;            for (i=0;i&lt;dimension;i++)&lt;br /&gt;            {&lt;br /&gt;               free(B[i]);free(Bt[i]);&lt;br /&gt;            }&lt;br /&gt;            free(y);free(B);&lt;br /&gt;            free(Bt);free(b);&lt;br /&gt;            return NULL;&lt;br /&gt;         }}&lt;br /&gt;      else&lt;br /&gt;      {&lt;br /&gt;         printf ("La matriz de coeficientes no es simétrica,y por tanto no &lt;br /&gt;se puede resolver a través de Cholesky \n");&lt;br /&gt;         return NULL;&lt;br /&gt;      }}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-8438652190822974170?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/8438652190822974170/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=8438652190822974170' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8438652190822974170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8438652190822974170'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/mtodo-de-cholesky-en-lenguaje-c.html' title='Método de Cholesky en Lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-8686420935571285025</id><published>2008-01-24T22:37:00.000Z</published><updated>2008-02-07T18:59:13.618Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Método de Jacobi en lenguaje C</title><content type='html'>//----------------------------------------------------------------------------//&lt;br /&gt;//Autores.- Sergio Romero Sánchez &amp; Alejandro E. Castro Robredo&lt;br /&gt;//Asignatura.- Análisis Numérico&lt;br /&gt;//Práctica 4.- Implementación del Método de Jacobi&lt;br /&gt;//Especialidad.- I.T.I.G.&lt;br /&gt;//----------------------------------------------------------------------------//&lt;br /&gt;&lt;br /&gt;//Librerías necesarias para la implementación//&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;math.h&gt;&lt;br /&gt;&lt;br /&gt;//Para leer los datos de un fichero//&lt;br /&gt;   double** LeerDatos(char *nombrefichero,int *dimension)                      &lt;br /&gt;   {double **matriz;&lt;br /&gt;      int i,j;&lt;br /&gt;      FILE *f;&lt;br /&gt;      if(f=fopen(nombrefichero,"r"),!f)&lt;br /&gt;      {&lt;br /&gt;         printf("Problema con la lectura del fichero\n");&lt;br /&gt;         return matriz;&lt;br /&gt;      }&lt;br /&gt;      fscanf(f,"%d\n",&amp;(*dimension));&lt;br /&gt;      &lt;br /&gt;      //Asignación de memoria dinamica&lt;br /&gt;      matriz=(double**)malloc(*dimension*sizeof(double*));&lt;br /&gt;      for(i=0;i&lt;*dimension;i++)&lt;br /&gt;      {&lt;br /&gt;         matriz[i]=(double*)malloc((*dimension)*sizeof(double));&lt;br /&gt;      }&lt;br /&gt;      &lt;br /&gt;      //Lectura de elementos de la matriz&lt;br /&gt;      for(i=0;i&lt;*dimension;i++) //Recorremos las Filas&lt;br /&gt;      {&lt;br /&gt;         for(j=0;j&lt;*dimension;j++) //Recorremos las Columnas&lt;br /&gt;         {&lt;br /&gt;            fscanf(f,"%lf\n",&amp;(matriz[i][j])); //Almacenamos el elemento en la&lt;br /&gt;         }                                    //posición ij.             &lt;br /&gt;      }&lt;br /&gt;      fclose(f);&lt;br /&gt;      return matriz;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   //Procedimiento que muestra una matriz&lt;br /&gt;   void muestra(double **matriz,int Tam)                           &lt;br /&gt;   {int i,j;&lt;br /&gt;      printf("\n\t");&lt;br /&gt;      for(i=0;i&lt;Tam;i++) //Recorremos las Filas&lt;br /&gt;      {&lt;br /&gt;         for(j=0;j&lt;Tam;j++) //Recorremos las Columnas&lt;br /&gt;         {&lt;br /&gt;            printf("%lf ",matriz[i][j]);&lt;br /&gt;         }&lt;br /&gt;         printf("\n\t");&lt;br /&gt;      }&lt;br /&gt;      printf("\n");&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   //Halla el mayor elemento en valor absoluto de la triangular superior&lt;br /&gt;   double mayor(double **matriz,int dimension,int *p, int *q)       &lt;br /&gt;   {int i,j;&lt;br /&gt;      double temp;&lt;br /&gt;   &lt;br /&gt;      temp=fabs(matriz[1][0]);*p=1;*q=0;&lt;br /&gt;      for(i=2;i&lt;dimension;i++) //Recorremos las Filas a partir de los elementos&lt;br /&gt;      {                        //de la diagonal principal y por encima de esta. &lt;br /&gt;         for(j=0;j&lt;i;j++)      //Recorremos las Columnas a partir de los elementos&lt;br /&gt;         {                     //de la diagonal principal y por encima de esta.&lt;br /&gt;            if(fabs(matriz[i][j])&gt;temp)&lt;br /&gt;            {&lt;br /&gt;               temp=fabs(matriz[i][j]);&lt;br /&gt;               *p=i;*q=j;&lt;br /&gt;            }&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;      return temp; //Devolvemos en temp el valor númerico en valor absoluto más&lt;br /&gt;   }               //alto.&lt;br /&gt;//Ejemplo de lo que hace la Función Mayor, con una matriz de 3x3 &lt;br /&gt;//(1,2,3&lt;br /&gt;// 4,5,-6 //Los elementos de la diagonal Superior serían 2,3 y -6&lt;br /&gt;// 7,8,9) //Al tratarse de valor absoluto el valor que nos dará será 6.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//Procedimiento de Jacobi&lt;br /&gt;   double ** Jacobi(double **autoval,double **autovec,int dim,double tol,int Nmax)&lt;br /&gt;   {int p,q,i,j,k,n=0;&lt;br /&gt;      double cot,sen,tan,cos,temp,max,ip,iq;&lt;br /&gt;      double zero=0.0000000000000001;&lt;br /&gt;      //Primero inicializamos la matriz de rotacion a la identidad   &lt;br /&gt;      for (i=0;i&lt;dim;i++)                         &lt;br /&gt;      { &lt;br /&gt;         for (j=0;j&lt;=i;j++)&lt;br /&gt;         {&lt;br /&gt;            if (i==j) autovec[i][j]=1.;&lt;br /&gt;            else autovec[i][j]=autovec[j][i]=0.;&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      max=mayor(autoval,dim,&amp;p,&amp;q);&lt;br /&gt;      while ( (n&lt;Nmax) &amp;&amp; (max&gt;tol) )                                                 &lt;br /&gt;      {// Condiciones de parada                                                            &lt;br /&gt;         cot = (autoval[q][q] - autoval[p][p]) / (2*autoval[p][q]);  &lt;br /&gt;         if (cot &gt;= zero)&lt;br /&gt;            tan = -cot + sqrt(1 + cot * cot);&lt;br /&gt;         else&lt;br /&gt;            tan = -cot - sqrt(1 + cot *cot);&lt;br /&gt;      &lt;br /&gt;         cos = 1 / sqrt(1+tan*tan);&lt;br /&gt;         sen = tan * cos;&lt;br /&gt;         for (j=0; j&lt;dim; j++)                                          &lt;br /&gt;         {   //Vamos rotando la matriz original, hasta que todos&lt;br /&gt;             //sus elementos sean ceros,excepto la diagonal                                                              &lt;br /&gt;            if ((j!=p) &amp;&amp; (j!=q))                                         &lt;br /&gt;            {&lt;br /&gt;               temp = autoval[p][j];&lt;br /&gt;               autoval[p][j]=autoval[p][j]*cos - autoval[q][j] * sen;&lt;br /&gt;               autoval[j][p]=autoval[p][j];&lt;br /&gt;               autoval[q][j] = temp * sen + autoval[q][j] *cos;&lt;br /&gt;               autoval[j][q]=autoval[q][j];&lt;br /&gt;            }&lt;br /&gt;         }//En la diagonal tendremos los autovalores&lt;br /&gt;         autoval[q][q] = autoval[q][q] + tan * autoval[p][q];           &lt;br /&gt;         autoval[p][p] = autoval[p][p] - tan * autoval[p][q];&lt;br /&gt;         autoval[p][q] = 0.;&lt;br /&gt;         autoval[q][p] = 0.;&lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;         for (i=0; i&lt;dim; i++)                            &lt;br /&gt;         { //Vamos calculando la nueva matriz de rotación&lt;br /&gt;            ip=cos*autovec[i][p]+sen*autovec[i][q];&lt;br /&gt;            iq=-sen*autovec[i][p]+cos*autovec[i][q];&lt;br /&gt;            autovec[i][p]=ip; //Las columnas seran los autovectores                           &lt;br /&gt;            autovec[i][q]=iq;&lt;br /&gt;         }&lt;br /&gt;         n++;&lt;br /&gt;         max=mayor(autoval,dim,&amp;p,&amp;q);&lt;br /&gt;      }&lt;br /&gt;      //Paramos porque hemos alcanzado el nº maximo de iteraciones&lt;br /&gt;      if (n==Nmax) printf("Hemos superado el Número Máximo\n");     &lt;br /&gt;      return autoval;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   int main()&lt;br /&gt;   {&lt;br /&gt;      double **matautovalores,**matautovectores;&lt;br /&gt;      double tol;&lt;br /&gt;      int dim,Nmax,i,j;&lt;br /&gt;   &lt;br /&gt;      printf("\n\n                ******* METODO DE JACOBI ***********");&lt;br /&gt;      printf("\n\n");&lt;br /&gt;      printf("Vamos a calcular los autovalores y autovectores de una matriz dada");&lt;br /&gt;      printf("\n\n");&lt;br /&gt;      printf("Introduzca la tolerancia: \n");scanf("%lf",&amp;tol);&lt;br /&gt;      printf("Introduzca el numero maximo de iteraciones (Nmax): \n");scanf("%i",&amp;Nmax);&lt;br /&gt;      printf("\n");&lt;br /&gt;      matautovalores=LeerDatos("matriz10.dat",&amp;dim);&lt;br /&gt;      printf("La dimension de la matriz es %d\n",dim);&lt;br /&gt;      printf("\n");&lt;br /&gt;   &lt;br /&gt;      matautovectores=(double**)malloc(dim*sizeof(double*));&lt;br /&gt;   &lt;br /&gt;printf("La matriz de los autovectores es la primera y la de los autovalores la segunda:\n");&lt;br /&gt;      for(i=0;i&lt;dim;i++)&lt;br /&gt;      {&lt;br /&gt;         matautovectores[i]=(double*)malloc(dim*sizeof(double));&lt;br /&gt;      }&lt;br /&gt;      Jacobi(matautovalores,matautovectores,dim,tol,Nmax);&lt;br /&gt;   &lt;br /&gt;      muestra(matautovalores,dim);&lt;br /&gt;      muestra(matautovectores,dim);&lt;br /&gt;   &lt;br /&gt;      printf("Los autovalores son: \n\n");&lt;br /&gt;      for (i=0;i&lt;dim;i++)&lt;br /&gt;      {&lt;br /&gt;         printf(" &lt;%lf&gt;",matautovalores[i][i]);&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      printf("\n");&lt;br /&gt;      printf("\n");&lt;br /&gt;      printf("Los autovectores son: \n\n");&lt;br /&gt;      for (i=0;i&lt;dim;i++)&lt;br /&gt;      {&lt;br /&gt;         printf("&lt;");&lt;br /&gt;         for (j=0;j&lt;dim;j++)&lt;br /&gt;         {&lt;br /&gt;            printf("&lt;%lf&gt;",matautovectores[j][i]);&lt;br /&gt;         }&lt;br /&gt;         printf("&gt;   \n");&lt;br /&gt;      }&lt;br /&gt;      printf("\n");&lt;br /&gt;      printf("\n");&lt;br /&gt;      printf(" ************** FIN DEL PROGRAMA ************** ");&lt;br /&gt;   &lt;br /&gt;      free (matautovalores);&lt;br /&gt;      free(matautovectores);&lt;br /&gt;      return 0;&lt;br /&gt;   }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-8686420935571285025?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/8686420935571285025/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=8686420935571285025' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8686420935571285025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8686420935571285025'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/mtodo-de-jacobi-en-lenguaje-c.html' title='Método de Jacobi en lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-1358517734018081617</id><published>2008-01-24T22:34:00.000Z</published><updated>2008-02-07T18:59:13.618Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Método de Richardson en lenguaje C</title><content type='html'>// Practica Final de Analisis Numerico&lt;br /&gt;// Fecha: 27/01/01&lt;br /&gt;// Implementar el metodo de Richardson&lt;br /&gt;// que calcula los terminos independientes de multiplicar&lt;br /&gt;// un vector por una matriz dada.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;math.h&gt;&lt;br /&gt;&lt;br /&gt;   void Richardson(double **matriz,int dimension,double *v, double *b)&lt;br /&gt; {  // procedimiento tal cual esta en los apuntes&lt;br /&gt;         int i, j, k, l;&lt;br /&gt;         double *r, aux=0.0;&lt;br /&gt;         r=(double*)malloc(dimension*sizeof(double));&lt;br /&gt;&lt;br /&gt;         for (k=0; k&lt;100; k++)       &lt;br /&gt; // aqui metemos un numero de iteraciones aleatorio &lt;br /&gt;         {&lt;br /&gt;        for (i=0; i&lt;dimension; i++)&lt;br /&gt;        {&lt;br /&gt;           aux = 0.0;&lt;br /&gt;    for (j=0; j&lt;dimension;j++)&lt;br /&gt;    {&lt;br /&gt;                aux = aux + (matriz[i][j] * v[j]); &lt;br /&gt;// sumatorio del producto de la matriz&lt;br /&gt;    }&lt;br /&gt;                             r[i]=b[i] - aux;&lt;br /&gt;                }&lt;br /&gt;              for (i=0; i&lt;dimension; i++)&lt;br /&gt;                    v[i]=v[i]+r[i];&lt;br /&gt;         }&lt;br /&gt; }&lt;br /&gt;   void MostrarVector(double *Vector, int Nelem)&lt;br /&gt; {&lt;br /&gt;        int f;&lt;br /&gt;        for(f=0;f&lt;Nelem;f++)&lt;br /&gt;         printf("%lf\t",Vector[f]);&lt;br /&gt;   }&lt;br /&gt; double** LeerDatos(char *nombrefichero,int *dimension) {&lt;br /&gt;  double **matriz;&lt;br /&gt;   int i,j, veamos;&lt;br /&gt;    FILE *f;&lt;br /&gt;&lt;br /&gt;     if(f=fopen(nombrefichero,"r"),!f){&lt;br /&gt;       printf("Problema con la lectura del fichero\n");&lt;br /&gt;        return 0;&lt;br /&gt;        }&lt;br /&gt;        fscanf(f,"%d\n",&amp;(*dimension));&lt;br /&gt;       /* Asignacion de memoria dinamica*/&lt;br /&gt;        matriz=(double**)malloc(*dimension*sizeof(double*));&lt;br /&gt;        for(i=0;i&lt;*dimension;i++)&lt;br /&gt;                matriz[i]=(double*)malloc((*dimension+1)*sizeof(double));&lt;br /&gt;&lt;br /&gt;        for(i=0;i&lt;*dimension;i++)&lt;br /&gt;                for(j=0;j&lt;*dimension;j++)&lt;br /&gt;                         fscanf(f,"%lf\n",&amp;(matriz[i][j]));&lt;br /&gt;&lt;br /&gt;        for(i=0;i&lt;*dimension;i++)&lt;br /&gt;                fscanf(f,"%lf\n",&amp;(matriz[i][*dimension]));&lt;br /&gt;&lt;br /&gt;        fclose(f);&lt;br /&gt;        return matriz;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; int main()&lt;br /&gt; {&lt;br /&gt; double **matriz, *v, *b;&lt;br /&gt;  int dimension, i, n=10;&lt;br /&gt;      matriz = (double**)malloc(n*sizeof(double*));&lt;br /&gt;      printf("******************************************************\n");&lt;br /&gt;        printf("************ METODO DE RICHARDSON ********************\n");&lt;br /&gt;        printf("******************************************************\n");&lt;br /&gt;      for (i=0;i&lt;n;i++)&lt;br /&gt;         matriz[i] = (double*)malloc(n*sizeof(double));&lt;br /&gt;       //       matriz[0][0]= 1.;   matriz[0][1]= .5;   matriz[0][2]= .333;&lt;br /&gt;       //      matriz[1][0]= .333; matriz[1][1]= 1.;   matriz[1][2]= .5; // //matriz de ejemplo que converge&lt;br /&gt;       //matriz[2][0]= .5;   matriz[2][1]= .333; matriz[2][2]= 1.; // resta esta //matriz y de la identidad &lt;1&lt;br /&gt;        matriz=LeerDatos("matriz10.dat",&amp;dimension); &lt;br /&gt;  v = (double*)malloc(n*sizeof(double));&lt;br /&gt;  if (v == NULL)&lt;br /&gt;      printf("Problemas en la asignacion de memoria");&lt;br /&gt;  b=(double*)malloc(n*sizeof(double));&lt;br /&gt;  if (b == NULL)&lt;br /&gt;      printf("Problemas en la asignacion de memoria");&lt;br /&gt;      for(i=0; i&lt;dimension; i++ )//termino independiente&lt;br /&gt;            b[i]=matriz[i][dimension];&lt;br /&gt;     //for(i=0;i&lt;n;i++)&lt;br /&gt;// b[i] = 0.91;&lt;br /&gt;  for (i=0;i&lt;n;i++)&lt;br /&gt;   v[i] = 0.0;&lt;br /&gt;  Richardson(matriz, n, v, b);&lt;br /&gt;  printf("\nEl vector solucion es:\n\n");&lt;br /&gt;  for(i=0;i&lt;n;i++)&lt;br /&gt;     printf("v[%d]= %lf\n\n",i,v[i]);&lt;br /&gt;  free(v);&lt;br /&gt;  free(b);&lt;br /&gt;  for(i=0; i&lt;n;i++)&lt;br /&gt;      free(matriz[i]);&lt;br /&gt;  free(matriz);&lt;br /&gt;  system ("PAUSE");&lt;br /&gt;  return;&lt;br /&gt; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-1358517734018081617?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/1358517734018081617/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=1358517734018081617' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1358517734018081617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1358517734018081617'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/mtodo-de-richardson-en-lenguaje-c.html' title='Método de Richardson en lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-7197255743990987495</id><published>2008-01-23T23:41:00.000Z</published><updated>2008-02-07T19:01:25.068Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='LP'/><category scheme='http://www.blogger.com/atom/ns#' term='JAVA'/><title type='text'>Implementación de una Cola en lenguaje JAVA (Extraer,  Primero, Siguiente, Concatenar, Insertar)</title><content type='html'>El objetivo será implementar un tipo abstracto de datos que implemente una cola de espera genérica, dentro de las posibilidades del lenguaje Java, el cual, por ejemplo, en comparación con los lenguajes C++ o Ada, no dispone de estructuras sintácticas análogas al template o generic.&lt;br /&gt;&lt;br /&gt;El diseño aquí propuesto contempla una clase principal Cola, que gestiona una cola compuesta de elementos de la clase Nodo. Los objetos de esta última clase contendrán objetos "genéricos", cuya clase el programador concretará, al usar el TAD, en función de sus necesidades. Se propone pues la siguiente implementación:&lt;br /&gt;&lt;br /&gt;    * Clase Nodo. Como se ha indicado, dispondrá de un campo (private), que será de la clase Object, lo que permitirá contener cualquier tipo de objeto (pues en Java toda clase se considera derivada de la clase Object). Contendrá asimismo un enlace protected que apunte al siguiente nodo de la cola. Desde fuera de la clase (o derivada) sólo será accesible el método dato(), que devuelve el objeto de dato que contiene. En definitiva, la clase Nodo nos servirá como tipo iterador, esto es, nos permitirá declarar objetos de esta clase en los que apoyarnos para recorrer una cola sin destruirla.&lt;br /&gt;    * Clase Cola. En el momento de la creación, se especificará el número máximo de elementos que puede contener la cola. Inicialmente, la cola estará vacía. Esta clase suministra los siguientes métodos:&lt;br /&gt;          o insertar(Object). Construye un Nodo con el objeto de dato pasado como parámetro (no se admite null), y lo inserta como nuevo último elemento de la cola.&lt;br /&gt;          o extraer(). Devuelve el dato asociado al primer elemento de la cola. Dicho primer elemento se extrae de la cola.&lt;br /&gt;          o primero(). Devuelve el primer Nodo de la cola, pero no lo extrae. La cola no se ve pues alterada.&lt;br /&gt;          o siguiente(Nodo). Método static que devuelve el elemento de la cola situado a continuación del elemento pasado como parámetro. Con este método podemos recorrer la cola desde primero().&lt;br /&gt;          o concatenar(Cola). Añade la cola pasada como parámetro a la cola sobre la que se aplica, a partir del último elemento de ésta. Si se realiza con éxito la operación, la cola pasada como parámetro quedará vacía, si no, ninguna de las dos colas se ve alterada. &lt;br /&gt;&lt;br /&gt;Constrúyase asimismo una rutina main de prueba. Para ello puede utilizarse, por ejemplo, la clase String como clase de objetos que se almacenarán en el campo de datos dentro de Nodo. La rutina main creará, añadirá y extraerá distintos nodos a dos colas, cuyas ristras se visualizarán por pantalla, así como el resultado de su concatenación.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class Nodo extends Object{&lt;br /&gt;  protected Nodo   Sig;&lt;br /&gt;  private   Object Info;&lt;br /&gt;  public    Nodo(Object E)   { Sig = null ;Info = E;}&lt;br /&gt;  public    Object dato()    { return Info; }&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;class Cola extends Object {&lt;br /&gt;&lt;br /&gt;  private int  Maximo;          // Almacenarà el numero maximo de elementos a almacenar&lt;br /&gt;  private int  NElementos;      // Almacenarà el numero de elementos almacenados por el momento&lt;br /&gt;  private Nodo Primero;         // Almacenarà el enlace al primer nodo a salir de la cola.&lt;br /&gt; &lt;br /&gt;  public Cola(int max) {&lt;br /&gt;    Maximo      = max;&lt;br /&gt;    NElementos  = 0;&lt;br /&gt;    Primero     = null;&lt;br /&gt;  }&lt;br /&gt;  void insertar(Object E){&lt;br /&gt;    Nodo n;&lt;br /&gt;    if (Maximo &gt; NElementos)&lt;br /&gt;    {&lt;br /&gt;      if (Primero == null) Primero = new Nodo(E);&lt;br /&gt;      else&lt;br /&gt;      {&lt;br /&gt;        n = Primero;&lt;br /&gt;        while (n.Sig != null) n = n.Sig;&lt;br /&gt;        n.Sig = new Nodo(E);&lt;br /&gt;      }&lt;br /&gt;      NElementos++;&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  Object extraer(){&lt;br /&gt;    Nodo n;&lt;br /&gt;    Object E;&lt;br /&gt;    if (Primero == null) E = null;&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;      n       = Primero    ;&lt;br /&gt;      Primero = Primero.Sig;&lt;br /&gt;      E       = n.dato()   ;&lt;br /&gt;      n       = null       ;&lt;br /&gt;      NElementos--         ;&lt;br /&gt;    }&lt;br /&gt;    return E;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;         Nodo primero  (      ){ return Primero; }&lt;br /&gt;  static Nodo Siguiente(Nodo n){ return n.Sig;   }&lt;br /&gt;  &lt;br /&gt;  void concatenar(Cola c){&lt;br /&gt;    if (Maximo &gt; NElementos + c.NElementos)&lt;br /&gt;    {&lt;br /&gt;      while (c.NElementos&gt;0){ insertar(c.extraer()); }&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  public static void main (String args[]) {&lt;br /&gt;    Cola   C   = new Cola(20);&lt;br /&gt;    Cola   C2  = new Cola(8);&lt;br /&gt;    Nodo   act = null;&lt;br /&gt;    Nodo   act2= null;&lt;br /&gt;    Object Aux = null;&lt;br /&gt;    int    fin;&lt;br /&gt;    String s[] = {"1ero ","2do  ","3ero ","4to  ","5to  ","6xto ","7timo","8avo "};&lt;br /&gt;    System.out.println(" Prueba de inserción de 8 ristras en 2 colas        (insertar              )");&lt;br /&gt;    for (int i=0;i&lt;8;i++){&lt;br /&gt;      System.out.println(" Este es el  elemento  numero "+i+" =  '"+s[i]+"' , el cual meteré dentro de la cola") ;&lt;br /&gt;      C .insertar(s[i  ]);&lt;br /&gt;      C2.insertar(s[7-i]);&lt;br /&gt;    }&lt;br /&gt;    System.out.println(" Probamos que se encuentran las 8 ristras en la colas(primero,dato,siguiente)");&lt;br /&gt;    fin = C.NElementos;&lt;br /&gt;    for (int i=0;i&lt;fin;i++){&lt;br /&gt;      if (i==0){&lt;br /&gt;       act  = C.primero();&lt;br /&gt;       System.out.println(" Primer elemento    "+act.dato() );&lt;br /&gt;       act2 = C2.primero();&lt;br /&gt;       System.out.println(" Primer elemento(2) "+act2.dato());&lt;br /&gt;      }&lt;br /&gt;      else{&lt;br /&gt;       act  = C.Siguiente(act);&lt;br /&gt;       System.out.println(" Elemento    :      "+act.dato());&lt;br /&gt;       act2 = C2.Siguiente(act2);&lt;br /&gt;       System.out.println(" Elemento(2) :      "+act2.dato());&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;    C.concatenar(C2);&lt;br /&gt;    fin = C.NElementos;&lt;br /&gt;    for (int i=0;i&lt;fin;i++){&lt;br /&gt;      if (i==0){&lt;br /&gt;       act  = C.primero();&lt;br /&gt;       System.out.println(" Primer elemento    "+act.dato() );&lt;br /&gt;      }&lt;br /&gt;      else{&lt;br /&gt;       act  = C.Siguiente(act);&lt;br /&gt;       System.out.println(" Elemento    :      "+act.dato());&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;    fin = C.NElementos;&lt;br /&gt;    for (int i=0;i&lt;fin;i++){&lt;br /&gt;      System.out.println(" Extrayendo  Cola ["+i+"] = "+C.primero().dato());&lt;br /&gt;      Aux = C.extraer();&lt;br /&gt;    }&lt;br /&gt;    Aux = null;&lt;br /&gt;    return ;&lt;br /&gt;  }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-7197255743990987495?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/7197255743990987495/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=7197255743990987495' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7197255743990987495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7197255743990987495'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/implementacin-de-una-cola-en-lenguaje.html' title='Implementación de una Cola en lenguaje JAVA (Extraer,  Primero, Siguiente, Concatenar, Insertar)'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-4047257277778039988</id><published>2008-01-23T23:36:00.000Z</published><updated>2008-02-07T19:02:02.706Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADA'/><category scheme='http://www.blogger.com/atom/ns#' term='MPI'/><title type='text'>Funciones sobre Matrices en lenguaje ADA, Transpuesta, Sobrecarga de los operadores *,+,-,=</title><content type='html'>*  Desarrollar una serie de operaciones para manejo de matrices junto con un procedimiento principal de prueba. La interfaz de las operaciones en base a la cual hay que realizar la implementación es la que sigue: &lt;br /&gt;&lt;br /&gt;       1. Definir un tipo para declarar matrices de cualquier tamaño y rango de variación de los índices.&lt;br /&gt;&lt;br /&gt;       2. Sobrecarga del operador "=".&lt;br /&gt;          entrada: matrices a comparar.&lt;br /&gt;          pre: el número de valores de los rangos de los respectivos índices de las matrices a comparar debe coincidir.&lt;br /&gt;          post: devuelve verdadero si los correspondientes elementos de ambas matrices son iguales y, falso, si algún elemento de una de las matrices no coincide con el correspondiente de la otra.&lt;br /&gt;&lt;br /&gt;       3. Sobrecarga del operador "+".&lt;br /&gt;          entrada: matrices a sumar.&lt;br /&gt;          pre: el número de valores de los rangos de los respectivos índices de las matrices a sumar debe coincidir.&lt;br /&gt;          post: devuelve la matriz suma de los correspondientes elementos de las matrices dadas.&lt;br /&gt;&lt;br /&gt;       4. Sobrecarga del operador "-".&lt;br /&gt;          entrada: matrices a restar.&lt;br /&gt;          pre: el número de valores de los rangos de los respectivos índices de las matrices a restar debe coincidir.&lt;br /&gt;          post: Devuelve la matriz diferencia de los correspondientes elementos de las matrices dadas.&lt;br /&gt;&lt;br /&gt;       5. Sobrecarga del operador "*".&lt;br /&gt;          entrada: matrices a multiplicar.&lt;br /&gt;          pre: el número de valores del rango del 2º índice de la matriz primer operando debe coincidir con el número de valores del 1er. índice de la matriz segundo operando.&lt;br /&gt;          post: devuelve la matriz producto.&lt;br /&gt;&lt;br /&gt;       6. Función Transpuesta.&lt;br /&gt;          entrada: matriz a transponer. post: devuelve la transpuesta de una matriz con igual número de filas e igual número de columnas al de la correspondiente matriz de entrada.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;with Text_IO;&lt;br /&gt;use Text_IO;&lt;br /&gt;&lt;br /&gt;procedure Sentencias is&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;    -- *********** Definiciones de tipos y paquetes *************&lt;br /&gt;    &lt;br /&gt;    type Opciones is range 0..10;&lt;br /&gt;    type Matriz_nr is array (integer range&lt;&gt;,integer range&lt;&gt;) of integer;&lt;br /&gt;    package Opciones_IO is new Integer_IO(Opciones);&lt;br /&gt;    Package Real_IO     is new Float_IO(Float);&lt;br /&gt;    Package Entero_IO   is new Integer_IO(Integer);&lt;br /&gt;    use Opciones_IO, Real_IO,Entero_IO;&lt;br /&gt;    ---------------------------------------------------------------&lt;br /&gt;        &lt;br /&gt;    &lt;br /&gt;    -- ************** Procedimientos                *************&lt;br /&gt;    &lt;br /&gt;    -- Lee los elementos por pantalla y los almacena en la matriz &lt;br /&gt;    -- pasada por parametro.&lt;br /&gt;    procedure LeeMatriz(Mat :in out Matriz_nr) is&lt;br /&gt;    begin        &lt;br /&gt;        for i in Mat'First(1)..Mat'Last(1) loop &lt;br /&gt;     for j in Mat'First(2)..Mat'Last(2) loop &lt;br /&gt;         put("Elemento[");put(i);put(",");put(j);put("] &lt;- ");&lt;br /&gt;                get(Mat(i,j)); &lt;br /&gt;        new_line; &lt;br /&gt;      end loop; &lt;br /&gt;  end loop;     &lt;br /&gt; end LeeMatriz;&lt;br /&gt;    ---------------------------------------------------------------&lt;br /&gt;    ---------------------------------------------------------------&lt;br /&gt;   &lt;br /&gt;         &lt;br /&gt;    -- Escribe la matriz pasada por parametro en la&lt;br /&gt;    -- pantalla.&lt;br /&gt;  procedure EscribeMatriz(Mat: in Matriz_nr) is &lt;br /&gt;    begin&lt;br /&gt;   for i in Mat'Range(1) loop &lt;br /&gt;     for j in Mat'First(2)..Mat'Last(2) loop &lt;br /&gt;          put(Mat(i,j)); put(" "); &lt;br /&gt;        end loop; &lt;br /&gt;        new_line; &lt;br /&gt;      end loop;         &lt;br /&gt;    end EscribeMatriz;&lt;br /&gt;    ---------------------------------------------------------------&lt;br /&gt;    ---------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    -- Compara las dos matrices pasadas y devuelve si tienen &lt;br /&gt;    -- la misma dimension y son iguales.&lt;br /&gt;    function "="(M1,M2: in Matriz_nr) return boolean is&lt;br /&gt;      Result : boolean         ;&lt;br /&gt;      &lt;br /&gt;    begin&lt;br /&gt;      Result := true;&lt;br /&gt;      if ((M1'Length(1) = M2'Length(1)) and (M1'Length(2) = M2'Length(2))) then&lt;br /&gt;        -- dimensiones correctas? ..... seguimos ....&lt;br /&gt;     for i in 1..(M1'Length(1)) loop    &lt;br /&gt;         for j in 1..(M1'Length(2)) loop &lt;br /&gt;              if ( M1(M1'First(1)+i-1,M1'First(2)+j-1)/=&lt;br /&gt;                   M2(M2'First(1)+i-1,M2'First(2)+j-1)  ) then&lt;br /&gt;                Result := false;&lt;br /&gt;              end if;&lt;br /&gt;            end loop; &lt;br /&gt;        end loop;&lt;br /&gt;      else &lt;br /&gt;         Result := false;        &lt;br /&gt;      end if;         &lt;br /&gt;      return Result;&lt;br /&gt;    end "=";  &lt;br /&gt;    ---------------------------------------------------------------&lt;br /&gt;    ---------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;    -- Suma la matriz segunda a la primera y devuelve la matriz &lt;br /&gt;    -- resultante.&lt;br /&gt;    function "+"(M1,M2: in Matriz_nr) return Matriz_nr is&lt;br /&gt;      Result : Matriz_nr(1..(M1'Length(1)),1..(M1'Length(2)));           &lt;br /&gt;    begin&lt;br /&gt;      if ((M1'Length(1) = M2'Length(1)) and (M1'Length(2) = M2'Length(2))) then&lt;br /&gt;        -- dimensiones correctas? ..... seguimos ....&lt;br /&gt;     for i in 1..(M1'Length(1)) loop    &lt;br /&gt;         for j in 1..(M1'Length(2)) loop &lt;br /&gt;                Result(i,j) := M1(M1'First(1)+i-1,M1'First(2)+j-1)+&lt;br /&gt;                               M2(M2'First(1)+i-1,M2'First(2)+j-1);&lt;br /&gt;            end loop; &lt;br /&gt;        end loop;&lt;br /&gt;      else&lt;br /&gt;        put_line("Hagan caso omiso del contenido de M3!");  &lt;br /&gt;        put_line("Hagan caso omiso del contenido de M3!");  &lt;br /&gt;        put_line("Hagan caso omiso del contenido de M3!");  &lt;br /&gt;        put_line("_____________________________________");&lt;br /&gt;        put_line("No coinciden las dimensiones");  &lt;br /&gt;        put_line("_____________________________________");  &lt;br /&gt;        new_line;  &lt;br /&gt;      end if;         &lt;br /&gt;      return Result;&lt;br /&gt;    end "+";  &lt;br /&gt;    ---------------------------------------------------------------&lt;br /&gt;    ---------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;    -- Resta la matriz segunda a la primera y devuelve la matriz &lt;br /&gt;    -- resultante.&lt;br /&gt;    function "-"(M1,M2: in Matriz_nr) return Matriz_nr is&lt;br /&gt;      Result : Matriz_nr(1..(M1'Length(1)),1..(M1'Length(2)));      &lt;br /&gt;    begin&lt;br /&gt;      if ((M1'Length(1) = M2'Length(1)) and (M1'Length(2) = M2'Length(2))) then&lt;br /&gt;        -- dimensiones correctas? ..... seguimos ....&lt;br /&gt;     for i in 1..(M1'Length(1)) loop    &lt;br /&gt;         for j in 1..(M1'Length(2)) loop &lt;br /&gt;                Result(i,j) := M1(M1'First(1)+i-1,M1'First(2)+j-1)-&lt;br /&gt;                               M2(M2'First(1)+i-1,M2'First(2)+j-1);&lt;br /&gt;            end loop; &lt;br /&gt;        end loop;&lt;br /&gt;      else&lt;br /&gt;        put_line("No coinciden las dimensiones");  &lt;br /&gt;        put_line("_____________________________________");  &lt;br /&gt;        put_line("Hagan caso omiso del contenido de M3!");  &lt;br /&gt;        put_line("_____________________________________");&lt;br /&gt;        new_line;  &lt;br /&gt;      end if;         &lt;br /&gt;      return Result;&lt;br /&gt;    end "-";  &lt;br /&gt;    ---------------------------------------------------------------&lt;br /&gt;    ---------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;    -- Multiplica la primera matriz por la segunda y &lt;br /&gt;    -- devuelve la matriz resultante.&lt;br /&gt;    function "*"(M1,M2: in Matriz_nr) return Matriz_nr is&lt;br /&gt;      Result : Matriz_nr(1..(M1'Length(1)),1..(M2'Length(2)));      &lt;br /&gt;    begin&lt;br /&gt;      if (M1'Length(2) = M2'Length(1)) then&lt;br /&gt;        -- dimensiones correctas? ..... seguimos ....&lt;br /&gt;     for i in 1..(M1'Length(1)) loop    &lt;br /&gt;         for j in 1..(M2'Length(2)) loop&lt;br /&gt;                Result(i,j) := 0 ;&lt;br /&gt;                for k in 1..(M1'Length(2)) loop &lt;br /&gt;                   Result(i,j) := Result(i,j) +&lt;br /&gt;                                  M1(M1'First(1)+i-1,M1'First(2)+k-1)*&lt;br /&gt;                                  M2(M2'First(1)+k-1,M2'First(2)+j-1);&lt;br /&gt;                end loop;&lt;br /&gt;            end loop; &lt;br /&gt;        end loop;&lt;br /&gt;      else&lt;br /&gt;        put_line("No coinciden las dimensiones");  &lt;br /&gt;        put_line("_____________________________________");  &lt;br /&gt;        put_line("Hagan caso omiso del contenido de M3!");  &lt;br /&gt;        put_line("_____________________________________");&lt;br /&gt;        new_line;  &lt;br /&gt;      end if;         &lt;br /&gt;      return Result;&lt;br /&gt;    end "*";  &lt;br /&gt;    ---------------------------------------------------------------&lt;br /&gt;    ---------------------------------------------------------------&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    -- Transpone una matriz&lt;br /&gt;    function Transpuesta(M1: in Matriz_nr) return Matriz_nr is&lt;br /&gt;      Result : Matriz_nr(1..(M1'Length(2)),1..(M1'Length(1)));      &lt;br /&gt;    begin       &lt;br /&gt;     for i in 1..(M1'Length(1)) loop    &lt;br /&gt;         for j in 1..(M1'Length(2)) loop&lt;br /&gt;                if (i=j) then &lt;br /&gt;                    Result(i,j) := M1(M1'First(1)+i-1 ,M1'First(2)+j-1);&lt;br /&gt;                else      &lt;br /&gt;                 Result(j,i) := M1( M1'First(1)+i-1 , M1'First(2)+j-1 );&lt;br /&gt;                end if;&lt;br /&gt;            end loop; &lt;br /&gt;            new_line;&lt;br /&gt;        end loop;&lt;br /&gt;        return Result;&lt;br /&gt;    end Transpuesta;  &lt;br /&gt;    ---------------------------------------------------------------&lt;br /&gt;    ---------------------------------------------------------------&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    -- ************* Programa Principal **************************&lt;br /&gt;        &lt;br /&gt;    --Declaraciones de variables&lt;br /&gt;    o                     : Opciones                ;&lt;br /&gt;    OpciónLeída           : Opciones                ;&lt;br /&gt;    M1ii,M1if,M2ii,M2if   : integer     ;&lt;br /&gt;    M1ji,M1jf,M2ji,M2jf   : integer     ;&lt;br /&gt;begin&lt;br /&gt;    put_line("Bienvenido");&lt;br /&gt;    put_Line("Practica 1  _________________________________");&lt;br /&gt;    put_Line("Programa de tratamiento de matrices:         ");&lt;br /&gt;    put_Line("");&lt;br /&gt;    put_Line("Primero leeremos los rangos de las 2 matrices");&lt;br /&gt;    put_Line("");&lt;br /&gt;    put_Line("Matriz 1");&lt;br /&gt;    put_Line("________");&lt;br /&gt;    put_Line("");&lt;br /&gt;    put_Line("Filas");&lt;br /&gt;    put_Line("-----");&lt;br /&gt;    put("Valor inicial : ");get(M1ii);&lt;br /&gt; put("Valor final   : ");get(M1if);&lt;br /&gt;    put_Line("");&lt;br /&gt;    put_Line("Columnas");&lt;br /&gt;    put_Line("--------");&lt;br /&gt;    put("Valor inicial : ");get(M1ji);&lt;br /&gt; put("Valor final   : ");get(M1jf);&lt;br /&gt;    put_Line("");&lt;br /&gt;    put_Line("Matriz 2");&lt;br /&gt;    put_Line("________");&lt;br /&gt;    put_Line("");&lt;br /&gt;    put_Line("Filas");&lt;br /&gt;    put_Line("-----");&lt;br /&gt;    put("Valor inicial : ");get(M2ii);&lt;br /&gt; put("Valor final   : ");get(M2if);&lt;br /&gt;    put_Line("");&lt;br /&gt;    put_Line("Columnas");&lt;br /&gt;    put_Line("--------");&lt;br /&gt;    put("Valor inicial : ");get(M2ji);&lt;br /&gt; put("Valor final   : ");get(M2jf);&lt;br /&gt;    put_Line("");&lt;br /&gt;    &lt;br /&gt;   &lt;br /&gt;    --El programa permanece en un bucle hasta que se elige terminar&lt;br /&gt;    declare&lt;br /&gt;     M1      : Matriz_nr(M1ii..M1if,M1ji..M1jf);     &lt;br /&gt;     M2      : Matriz_nr(M2ii..M2if,M2ji..M2jf);&lt;br /&gt;     M3S     : Matriz_nr(1..(M1'Length(1)),1..(M1'Length(2)));     &lt;br /&gt;     M3P     : Matriz_nr(1..(M1'Length(1)),1..(M2'Length(2)));&lt;br /&gt;     M3T     : Matriz_nr(1..(M1'Length(2)),1..(M1'Length(1)));      &lt;br /&gt;     M3T2     : Matriz_nr(1..(M2'Length(2)),1..(M2'Length(1)));      &lt;br /&gt;    begin&lt;br /&gt;    loop&lt;br /&gt;        --Presentación del menú de opciones&lt;br /&gt;       &lt;br /&gt;        put_Line("__________________MENU______________________");&lt;br /&gt;     put_Line("     0 - Terminar                           ");   &lt;br /&gt;     put_Line("     1 - Rellenar matriz 1                  ");&lt;br /&gt;     put_Line("     2 - Rellenar matriz 2                  ");&lt;br /&gt;     put_Line("     3 - Comparacion      (sobrecarga de =) ");&lt;br /&gt;     put_Line("     4 - Suma             (sobrecarga de +) ");&lt;br /&gt;     put_Line("     5 - Resta            (sobrecarga de -) ");&lt;br /&gt;     put_Line("     6 - Producto         (sobrecarga de *) ");&lt;br /&gt;        put_Line("     7 - Transpuesta            ");&lt;br /&gt;        put_Line("____________________________________________");&lt;br /&gt;        put("Elija su opcion: ");get(OpciónLeída);&lt;br /&gt;        new_line;&lt;br /&gt;        new_line;&lt;br /&gt;        case OpciónLeída is  --Se ejecuta la opción elegida&lt;br /&gt;&lt;br /&gt;            when  0 =&gt; exit;&lt;br /&gt;            &lt;br /&gt;            when  1 =&gt; begin&lt;br /&gt;                          put_line("Leyendo M1..........");&lt;br /&gt;                 new_line;&lt;br /&gt;                          LeeMatriz(M1);&lt;br /&gt;                          put_line("Contenido de M1.....");&lt;br /&gt;                 new_line;&lt;br /&gt;                          EscribeMatriz(M1);&lt;br /&gt;                       end;&lt;br /&gt;&lt;br /&gt;            when  2 =&gt; begin&lt;br /&gt;                          put_line("Leyendo M2..........");&lt;br /&gt;                 new_line;&lt;br /&gt;                          LeeMatriz(M2);&lt;br /&gt;                          put_line("Contenido de M2.....");&lt;br /&gt;                 new_line;&lt;br /&gt;                          EscribeMatriz(M2);&lt;br /&gt;                       end;&lt;br /&gt;&lt;br /&gt;            when  3 =&gt; begin&lt;br /&gt;                         put_line("Comparando M1 con M2.....");&lt;br /&gt;                         new_line;&lt;br /&gt;                         if (M1=M2) then&lt;br /&gt;                            put_line("Las matrices M1 y M2 son 'Iguales'  ");&lt;br /&gt;                         else&lt;br /&gt;                            put_line("Las matrices M1 y M2 son 'Distintas'");                            &lt;br /&gt;                         end if;&lt;br /&gt;                         new_line;&lt;br /&gt;                    end;&lt;br /&gt;                &lt;br /&gt;                       &lt;br /&gt;            when  4 =&gt; begin &lt;br /&gt;                         put_line("Sumando M1 y M2.....");&lt;br /&gt;                new_line;&lt;br /&gt;                         M3S := M1 + M2;&lt;br /&gt;                         put_line("Resultado en M3.");&lt;br /&gt;                new_line;&lt;br /&gt;                         put_line("Leyendo M3.....");&lt;br /&gt;                new_line;&lt;br /&gt;                         EscribeMatriz(M3S);&lt;br /&gt;                       end;&lt;br /&gt;&lt;br /&gt;            when  5 =&gt; begin&lt;br /&gt;                         put_line("Restando M1 y M2..........");&lt;br /&gt;                new_line;&lt;br /&gt;                         M3S := M1 - M2;&lt;br /&gt;                         put_line("Resultado en M3.");&lt;br /&gt;                new_line;&lt;br /&gt;                         put_line("Leyendo M3.....");&lt;br /&gt;                new_line;&lt;br /&gt;                         EscribeMatriz(M3S);&lt;br /&gt;                       end;&lt;br /&gt;&lt;br /&gt;            when  6 =&gt; begin&lt;br /&gt;                         put_line("Multiplicando M1 y M2.....");&lt;br /&gt;                new_line;&lt;br /&gt;                         M3P := M1 * M2;&lt;br /&gt;                         put_line("Resultado en M3.");&lt;br /&gt;                new_line;&lt;br /&gt;                         put_line("Leyendo M3.....");&lt;br /&gt;                new_line;&lt;br /&gt;                         EscribeMatriz(M3P);&lt;br /&gt;                       end;&lt;br /&gt;       &lt;br /&gt;            when  7 =&gt; begin&lt;br /&gt;                         loop&lt;br /&gt;                           put_line ("Seleccione la matriz a transponer:");&lt;br /&gt;                           put_line ("1.- tranpone la matriz M1");&lt;br /&gt;                           put_line ("2.- tranpone la matriz M2");&lt;br /&gt;                           put      ("seleccione : ");get(o);&lt;br /&gt;                           new_line;&lt;br /&gt;                         exit when ((o=1) or (o=2)); &lt;br /&gt;                         end loop;&lt;br /&gt;                         if (o=1) then &lt;br /&gt;                           put_line("Transponiendo M1.....");&lt;br /&gt;                  new_line;  &lt;br /&gt;                           M3T := Transpuesta(M1);&lt;br /&gt;                           put_line("Resultado en M3.");&lt;br /&gt;                  new_line;&lt;br /&gt;                           put_line("Leyendo M3.....");&lt;br /&gt;                  new_line;&lt;br /&gt;                           EscribeMatriz(M3T);&lt;br /&gt;                         else  &lt;br /&gt;                           put_line("Transponiendo M2.....");&lt;br /&gt;                  new_line;  &lt;br /&gt;                           M3T2 := Transpuesta(M2);&lt;br /&gt;                           put_line("Resultado en M3.");&lt;br /&gt;                  new_line;&lt;br /&gt;                           put_line("Leyendo M3.....");&lt;br /&gt;                  new_line;&lt;br /&gt;                           EscribeMatriz(M3T2);&lt;br /&gt;                         end if;&lt;br /&gt;                       end;&lt;br /&gt;                                  &lt;br /&gt;            when others =&gt; put_line("La opcion elegida no es valida");&lt;br /&gt;        end case;&lt;br /&gt;        new_line;&lt;br /&gt;        new_line;&lt;br /&gt;    end loop;&lt;br /&gt;    put_line("Gracias, por usar este programa");   &lt;br /&gt;  end;&lt;br /&gt;    return;&lt;br /&gt;end Sentencias;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-4047257277778039988?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/4047257277778039988/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=4047257277778039988' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4047257277778039988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4047257277778039988'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/funciones-sobre-matrices-en-lenguaje.html' title='Funciones sobre Matrices en lenguaje ADA, Transpuesta, Sobrecarga de los operadores *,+,-,='/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-6501480709824259184</id><published>2008-01-23T23:34:00.000Z</published><updated>2008-02-07T19:02:02.707Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADA'/><category scheme='http://www.blogger.com/atom/ns#' term='MPI'/><title type='text'>Programa que simula una cola de Impresión en lenguaje ADA</title><content type='html'>*  Descargar el fichero prac06.ada y completar el código que falta en base a los siguientes requisitos. Desarrollar un programa que simule una Cola de Impresión, —recepción en la Cola y envío de trabajos a la impresora—. La Cola de Impresión deberá implementarse en una Cola Circular si es en memoria estática, o en memoria dinámica, en cualquier caso de tamaño 20. Tendrá asímismo dos indicadores que nos permitirán localizar el primer trabajo que se va a imprimir y cuál es el último de la Cola. En la Cola de Impresión se almacenará exclusivamente el número de páginas de cada trabajo.&lt;br /&gt;    * Para el desarrollo de tal simulación se implementarán dos tareas concurrentes: LlenaCola y VacíaCola, la primera se entrega implementada en el fichero prac06.ada y simula el envío aleatorio de trabajos a la Cola de Impresión , indicando el número de páginas también de forma aleatoria; la segunda deberá simular un proceso concurrente que está continuamente escaneando la Cola de Impresión y en caso de existir algún trabajo pendiente de imprimir se eliminará de dicha Cola —se supone el envío a la impresora—. No se podrá enviar a la impresora —eliminación del primero de la Cola— otro trabajo hasta que el anterior termine. La impresora tiene una velocidad de impresión de 50 páginas por segundos.&lt;br /&gt;    * Se ilustra un ejemplo del estado de la Cola de Impresión, donde el siguiente trabajo a imprimir posee 67 páginas y por lo tanto después de ser eliminado no podrá eliminarse el siguiente hasta, al menos, pasados 0.02 * 67 segundos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  WITH Ada.Text_IO,Ada.Integer_Text_IO,Ada.Numerics.Discrete_Random,Unchecked_Deallocation;                 &lt;br /&gt;  USE Ada.Text_IO,Ada,Ada.Integer_Text_IO;               &lt;br /&gt;                           &lt;br /&gt;   PROCEDURE Principal IS                         &lt;br /&gt;     subtype Páginas is Integer range 1..100;            &lt;br /&gt;     package RandomPáginas is new Ada.Numerics.Discrete_Random (Páginas);              &lt;br /&gt;     use RandomPáginas;              &lt;br /&gt;     subtype Duración is Integer range 1..100;                &lt;br /&gt;     package RandomDuración is new Ada.Numerics.Discrete_Random (Duración);           &lt;br /&gt;     use RandomDuración;              &lt;br /&gt;------------------------------------                     &lt;br /&gt;     type Nodo;                  &lt;br /&gt;     type PCola is access Nodo;            &lt;br /&gt;     type Nodo is record          &lt;br /&gt;      Info: Integer;         &lt;br /&gt;         Sig: PCola:=null;          &lt;br /&gt;     end record;             &lt;br /&gt;                             &lt;br /&gt;     type Cola is record         &lt;br /&gt;        Pri: PCola:=null;          &lt;br /&gt;       Ult: PCola:=null;       &lt;br /&gt;     end record;                                    &lt;br /&gt;---------------------------------------          &lt;br /&gt;                     &lt;br /&gt;      &lt;br /&gt;     -- Implemente la especificación de las Tareas.           &lt;br /&gt;     task type LlenaCola;            &lt;br /&gt;     task type VacíaCola;           &lt;br /&gt;                    &lt;br /&gt;     -- Implemente la especificación de MonitorCola.                   &lt;br /&gt;     protected type MonitorCola is           &lt;br /&gt;     entry AñadirTrabajo(NumeroPaginas: in Páginas);          &lt;br /&gt;     entry ImprimirTrabajo(NumPaginas: out integer);         &lt;br /&gt;     procedure mostrar;                           &lt;br /&gt;     private                           &lt;br /&gt;      C: Cola;                       &lt;br /&gt;      EnCola: Integer:=0;                 &lt;br /&gt;     end MonitorCola;                                              &lt;br /&gt;                &lt;br /&gt;                       &lt;br /&gt;     procedure Libera is new Unchecked_Deallocation(Nodo,PCola);        &lt;br /&gt;                         &lt;br /&gt;     ColaImpresión : MonitorCola; -- Variable de tipo protegido (protected).         &lt;br /&gt;  &lt;br /&gt;    &lt;br /&gt;  -- Implemente el cuerpo de MonitorCola.&lt;br /&gt;  --------------------------------------------------------------------------        &lt;br /&gt;     protected body MonitorCola is  &lt;br /&gt;  ----------------------------------------------    &lt;br /&gt;       entry AñadirTrabajo(NumeroPaginas: in Páginas) when EnCola &lt; 20 is                      &lt;br /&gt;       begin               &lt;br /&gt;      if EnCola=0 then                                     &lt;br /&gt;       C.Pri:=new Nodo;            &lt;br /&gt;       C.Pri.Info:=NumeroPaginas;         &lt;br /&gt;      C.Ult:=C.Pri;               &lt;br /&gt;          else             &lt;br /&gt;      C.Ult.Sig:=new Nodo;       &lt;br /&gt;      C.Ult:=C.Ult.Sig;         &lt;br /&gt;      C.Ult.Info:=NumeroPaginas;         &lt;br /&gt;     end if;        &lt;br /&gt;     EnCola:=EnCola+1;        &lt;br /&gt;     Mostrar;        &lt;br /&gt;     end AñadirTrabajo;                &lt;br /&gt;  ----------------------------------------------                            &lt;br /&gt;     entry ImprimirTrabajo(NumPaginas: out integer) when EnCola&gt;0 is            &lt;br /&gt;      Aux: PCola:=C.Pri;   &lt;br /&gt;     &lt;br /&gt;&lt;br /&gt;        begin       &lt;br /&gt;       C.Pri:=C.Pri.Sig;                      &lt;br /&gt;     NumPaginas:=Aux.Info;        &lt;br /&gt;     Libera(Aux);         &lt;br /&gt;     EnCola:=EnCola-1;        &lt;br /&gt;     Mostrar;                 &lt;br /&gt;     end ImprimirTrabajo;           &lt;br /&gt;  ----------------------------------------------                              &lt;br /&gt;  ----------------------------------------------                       &lt;br /&gt;     procedure mostrar is        &lt;br /&gt;      Aux: PCola:=C.Pri;         &lt;br /&gt;      begin       &lt;br /&gt;      Put("Cola[");                               &lt;br /&gt;     Put(EnCola,2);         &lt;br /&gt;     Put("]-&gt;");         &lt;br /&gt;        while Aux/=null loop         &lt;br /&gt;       Put(Aux.Info,3);        &lt;br /&gt;      Aux:=Aux.Sig;          &lt;br /&gt;      if Aux/=null then        &lt;br /&gt;       Put(",");                                 &lt;br /&gt;      end if;       &lt;br /&gt;       end loop;           &lt;br /&gt;      New_Line;                   &lt;br /&gt;      end Mostrar;  &lt;br /&gt;  ----------------------------------------------    &lt;br /&gt;     end MonitorCola;                                          &lt;br /&gt;          &lt;br /&gt;  -------------------------------------------------------------------------- &lt;br /&gt;     -- Implemente el cuerpo de la Tarea VacíaCola.          &lt;br /&gt;     task body VacíaCola is         &lt;br /&gt;       N: Integer;          &lt;br /&gt;     begin            &lt;br /&gt;       loop         &lt;br /&gt;       ColaImpresión.ImprimirTrabajo(N);          &lt;br /&gt;      delay 0.02*N;       &lt;br /&gt;     end loop;        &lt;br /&gt;     end VacíaCola;                         &lt;br /&gt;&lt;br /&gt;                                            &lt;br /&gt;     -- Implementación del cuerpo de LLenaCola. Esta tarea envía trabajos a la cola de impresión         &lt;br /&gt;     -- con una frecuencia de 0.7 trabajos por segundo como media. Asímismo dichos trabajos poseen        &lt;br /&gt;     -- 50 páginas como media. Si se desea puede modificar el número 35 para comprobar como se llena o       &lt;br /&gt;     -- se mantiene vacía la cola, dado que se modifica la frecuencia de envío de los trabajos.              &lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;      TASK BODY LlenaCola IS              &lt;br /&gt;         G1: RandomDuración.generator;        &lt;br /&gt;         G2: RandomPáginas.generator;                                &lt;br /&gt;     BEGIN                             &lt;br /&gt;         reset(G1);                      &lt;br /&gt;         reset(G2);                                  &lt;br /&gt;         LOOP             &lt;br /&gt;            ColaImpresión.AñadirTrabajo(random(G2));        &lt;br /&gt;            delay Duration(1);         &lt;br /&gt;         END LOOP;                                  &lt;br /&gt;     END LlenaCola;             &lt;br /&gt;&lt;br /&gt;                                &lt;br /&gt;-- Variables de tipo tarea (task).       &lt;br /&gt;  A:LlenaCola;       &lt;br /&gt;  B:VacíaCola;                   &lt;br /&gt;  BEGIN           &lt;br /&gt;     null;        &lt;br /&gt;  END Principal;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-6501480709824259184?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/6501480709824259184/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=6501480709824259184' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6501480709824259184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6501480709824259184'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/programa-que-simula-una-cola-de.html' title='Programa que simula una cola de Impresión en lenguaje ADA'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-4353140753487765291</id><published>2008-01-23T23:33:00.000Z</published><updated>2008-02-07T18:59:13.619Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Analisis Numerico'/><title type='text'>Cálculo de raices únicas reales en lenguaje C</title><content type='html'>Desarrolle en TurboPascal y en C una función que lleve a cabo el cálculo de las raíces únicas reales de una función continua en un intervalo cerrado [a,b] mediante el método de la bisección con una precisión delta -se supone que la longitud del intervalo es múltiplo de delta.&lt;br /&gt;&lt;br /&gt;Para ello realice una función llamada raices que tenga como parámetros una función de reales en reales, dos reales que establezcan el intervalo de cálculo, un delta de precisión, y un vector con las soluciones, y que devuelva un entero indicando el número de raíces encontradas. Pruebe esta función creando un programa principal que muestre las raíces en el intervalo [-10,10] de las siguientes funciones matemáticas de reales en reales que también deberá implementar:&lt;br /&gt;f1(x) = x2+x-12&lt;br /&gt;f2(x) = x2-3x+2&lt;br /&gt;f3(x) = x2-2x&lt;br /&gt;f4(x)=sen(x)/(x+11) {seno en radianes}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;conio.h&gt;&lt;br /&gt;#include &lt;math.h&gt;&lt;br /&gt;&lt;br /&gt;float linf;float lsup;&lt;br /&gt;float f1(float x) { return       (x*x+x-12     ); }&lt;br /&gt;float f2(float x) { return       (x*x-3*x+2    ); }  &lt;br /&gt;float f3(float x) { return       (x*x-2*x      ); }&lt;br /&gt;float f4(float x) { return       ((float)(sin(x)/(11+x))); }&lt;br /&gt;&lt;br /&gt;int Raices(float(*fx)(float),float delta,float linf,&lt;br /&gt;    float lsup,float *soluciones)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt; float aux,y,paso,inf,sup,medio,limite;&lt;br /&gt; int   nraices=0;&lt;br /&gt; if (linf&gt;lsup)&lt;br /&gt;  {&lt;br /&gt; aux  = linf;&lt;br /&gt; linf = lsup;&lt;br /&gt; lsup = aux;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; y    = linf;&lt;br /&gt; paso = delta*100;&lt;br /&gt; while (y&lt;lsup)&lt;br /&gt;  {&lt;br /&gt;  if (  (fabs(fx(y))) &lt; delta ){&lt;br /&gt;   nraices++;&lt;br /&gt;   soluciones[nraices-1]=y;&lt;br /&gt;   y+=paso;&lt;br /&gt;  }&lt;br /&gt;  else{&lt;br /&gt;   if ( ( fx(y)*fx(y+paso) ) &lt; 0 ) {&lt;br /&gt;    nraices++;&lt;br /&gt;    inf   = y;&lt;br /&gt;    sup   = y + paso;&lt;br /&gt;    medio = ( y + (y+paso) )/2;&lt;br /&gt;    limite= medio - inf;&lt;br /&gt;    while ( (limite&gt;delta) &amp;&amp; (fx(medio)!=0) ){&lt;br /&gt;     if (fx(inf)*fx(medio)&lt;0)&lt;br /&gt;      sup = medio;&lt;br /&gt;     else&lt;br /&gt;         inf = medio;&lt;br /&gt;     medio  = (sup + inf)/2;&lt;br /&gt;                 limite = medio - inf;&lt;br /&gt;    }&lt;br /&gt;    soluciones[nraices-1] = medio;&lt;br /&gt;   }&lt;br /&gt;   y+=paso;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; if (  fabs(fx(lsup)) &lt; delta ){&lt;br /&gt;  nraices++;&lt;br /&gt;     soluciones[nraices-1]=sup;&lt;br /&gt; }&lt;br /&gt; return nraices;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void main()&lt;br /&gt;{&lt;br /&gt;  float inferior,superior,delta,Sol[10];&lt;br /&gt;  char opcion;&lt;br /&gt;  int nsol,i;&lt;br /&gt;&lt;br /&gt;  printf("comienza el programa de Raices\n");&lt;br /&gt;  printf("Dame el limite inferior del intervalo: ");&lt;br /&gt;  scanf("%f",&amp;inferior);&lt;br /&gt;  printf("Dame el limite superior del intervalo: ");&lt;br /&gt;  scanf("%f",&amp;superior);&lt;br /&gt;  printf("Dame los incrementos de subdivision del intervalo(delta): ");&lt;br /&gt;  scanf("%f",&amp;delta);&lt;br /&gt;  do&lt;br /&gt;  {&lt;br /&gt;  printf("Opciones        \n");&lt;br /&gt;  printf("    1 . (x*x+x-12 )  \n");&lt;br /&gt;  printf("    2 . (x*x-3*x+2)     \n");&lt;br /&gt;  printf("    3 . (x*x-2*x  )        \n");&lt;br /&gt;  printf("    4 . (sin(x)/(11+x))    \n");&lt;br /&gt;  printf("Dame el tipo de funcion a utilizar:\n");&lt;br /&gt;  opcion=getch();&lt;br /&gt;  }&lt;br /&gt;  while ((opcion&gt;'5')||(opcion&lt;'0'));&lt;br /&gt;  switch (opcion){&lt;br /&gt;  case '1'  : &lt;br /&gt;   {&lt;br /&gt;     nsol = Raices(f1,delta,inferior,superior,Sol);&lt;br /&gt;     printf("Existen %d soluciones\n",nsol);&lt;br /&gt;     for (i=0;i&lt;nsol;i++){&lt;br /&gt;      printf("la %d solucion es %f\n",i+1,Sol[i]); &lt;br /&gt;     }&lt;br /&gt;     break;&lt;br /&gt;   }&lt;br /&gt;  case '2'  : &lt;br /&gt;   {&lt;br /&gt;     nsol = Raices(f2,delta,inferior,superior,Sol); &lt;br /&gt;     printf("Existen %d soluciones\n",nsol);&lt;br /&gt;     for (i=0;i&lt;nsol;i++){&lt;br /&gt;      printf("la %d solucion es %f\n",i+1,Sol[i]); &lt;br /&gt;     }&lt;br /&gt;     break;&lt;br /&gt;   }&lt;br /&gt;  case '3'  : &lt;br /&gt;   {&lt;br /&gt;     nsol = Raices(f3,delta,inferior,superior,Sol); &lt;br /&gt;     printf("Existen %d soluciones\n",nsol);&lt;br /&gt;     for (i=0;i&lt;nsol;i++){&lt;br /&gt;      printf("la %d solucion es %f\n",i+1,Sol[i]); &lt;br /&gt;     }&lt;br /&gt;     break;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;  case '4'  : &lt;br /&gt;   {&lt;br /&gt;     nsol = Raices(f4,delta,inferior,superior,Sol); &lt;br /&gt;     printf("Existen %d soluciones\n",nsol);&lt;br /&gt;     for (i=0;i&lt;nsol;i++){&lt;br /&gt;      printf("la %d solucion es %f\n",i+1,Sol[i]); &lt;br /&gt;     }&lt;br /&gt;     break;&lt;br /&gt;   }&lt;br /&gt;  default : printf("Hay Problemas");&lt;br /&gt;  }&lt;br /&gt;  printf("Fin. Pulsa una tecla.....");&lt;br /&gt;  getch();&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-4353140753487765291?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/4353140753487765291/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=4353140753487765291' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4353140753487765291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4353140753487765291'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/clculo-de-raices-nicas-reales-en_23.html' title='Cálculo de raices únicas reales en lenguaje C'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-3153314447227599649</id><published>2008-01-23T23:31:00.000Z</published><updated>2008-01-23T23:32:50.885Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='TurboPascal'/><title type='text'>Cálculo de raices únicas reales en lenguaje TurboPascal</title><content type='html'>Desarrolle en TurboPascal una función que lleve a cabo el cálculo de las raíces únicas reales de una función continua en un intervalo cerrado [a,b] mediante el método de la bisección con una precisión delta -se supone que la longitud del intervalo es múltiplo de delta.&lt;br /&gt;&lt;br /&gt;Para ello realice una función llamada raices que tenga como parámetros una función de reales en reales, dos reales que establezcan el intervalo de cálculo, un delta de precisión, y un vector con las soluciones, y que devuelva un entero indicando el número de raíces encontradas. Pruebe esta función creando un programa principal que muestre las raíces en el intervalo [-10,10] de las siguientes funciones matemáticas de reales en reales que también deberá implementar:&lt;br /&gt;f1(x) = x2+x-12&lt;br /&gt;f2(x) = x2-3x+2&lt;br /&gt;f3(x) = x2-2x&lt;br /&gt;f4(x)=sen(x)/(x+11) {seno en radianes}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;    El problema se puede resolver considerando pares de valores&lt;br /&gt; f(xi) y f(xi+1) con i desde 1 hasta n-1, donde x1=linf, xn=lsup&lt;br /&gt; y xi+1=xi+épsilon, siendo épsilon=100*delta. Para determinar los&lt;br /&gt; pasos por cero de la función (raíces) se deben tratar los subintervalos&lt;br /&gt; [xk, xk+1] para los que los signos de f(xk) y f(xk+1) sean distintos.&lt;br /&gt; En dichos intervalos se debe buscar un valor de x para el que f(x) sea&lt;br /&gt; igual o aproximado a cero. Esta búsqueda se realiza subdividiendo el&lt;br /&gt; intervalo actual en dos de igual tamaño, y escogiendo aquél en el que&lt;br /&gt; los valores de la función en los extremos del intervalo tengan distinto&lt;br /&gt; signo. Este proceso se repite hasta que el valor de la función en el&lt;br /&gt; centro del intervalo sea 0, o el tamaño del intervalo sea inferior a la&lt;br /&gt; precisión requerida (delta). En ambos casos se debe devolver el punto&lt;br /&gt; medio del intervalo.&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; {$F+}&lt;br /&gt; uses crt;&lt;br /&gt;&lt;br /&gt; Type TipoVector = array[1..10] of real;&lt;br /&gt;&lt;br /&gt;      TipoFun    = function   (R:Real):Real;&lt;br /&gt;&lt;br /&gt;                   function f1(x:real):real; begin f1 := x*x + x - 12;   end;&lt;br /&gt;&lt;br /&gt;                   function f2(x:real):real; begin f2 := x*x -3*x + 2;   end;&lt;br /&gt;&lt;br /&gt;                   function f3(x:real):real; begin f3 := x*x -2*x;       end;&lt;br /&gt;&lt;br /&gt;                   function f4(x:real):real; begin f4 := sin(x)/(x+11);  end;&lt;br /&gt;&lt;br /&gt;  function Raices(f:TipoFun;linf,lsup,delta:real;&lt;br /&gt;                       var soluciones:TipoVector):integer;&lt;br /&gt;  var&lt;br /&gt;    x       : real;&lt;br /&gt;    i       : real;&lt;br /&gt;    nraices : integer;&lt;br /&gt;    y       : real;&lt;br /&gt;    paso    : real;&lt;br /&gt;    inf,sup,medio,limite:real;&lt;br /&gt;  begin&lt;br /&gt;    nraices :=0;&lt;br /&gt;    {en caso de que los limites esten invertidos los cambio}&lt;br /&gt;    if linf &gt; lsup then&lt;br /&gt;      begin&lt;br /&gt;        i:=linf;&lt;br /&gt;        linf:=lsup;&lt;br /&gt;        lsup:=i;&lt;br /&gt;      end;&lt;br /&gt;&lt;br /&gt;    y    := linf     ;&lt;br /&gt;    paso := delta*100;&lt;br /&gt;    while y &lt; lsup do&lt;br /&gt;      begin&lt;br /&gt;         if ( abs( f(y) ) &lt; delta ) then&lt;br /&gt;         begin&lt;br /&gt;          nraices := nraices + 1;&lt;br /&gt;          soluciones[nraices]:=y;&lt;br /&gt;          y:=y+paso;&lt;br /&gt;         end&lt;br /&gt;         else&lt;br /&gt;           begin&lt;br /&gt;           if ((f(y)*f(y+paso))&lt;0) then&lt;br /&gt;           begin&lt;br /&gt;             nraices := nraices + 1;&lt;br /&gt;             inf   := y;&lt;br /&gt;             sup   := y+paso;&lt;br /&gt;             medio := (y+(y+paso))/2;&lt;br /&gt;             limite:= medio - inf;&lt;br /&gt;             while ( (limite&gt;delta) and (f(medio)&lt;&gt;0) ) do&lt;br /&gt;             begin&lt;br /&gt;               if (f(inf)*f(medio)&lt;0) then&lt;br /&gt;                 sup   := medio&lt;br /&gt;               else&lt;br /&gt;                 inf    := medio;&lt;br /&gt;               medio  := (sup + inf)/2;&lt;br /&gt;               limite := medio - inf;&lt;br /&gt;             end;&lt;br /&gt;             soluciones[nraices]:=medio;&lt;br /&gt;           end;&lt;br /&gt;         y:=y+paso;&lt;br /&gt;         end;&lt;br /&gt;      end;&lt;br /&gt;      if ( abs( f(lsup) ) &lt; delta ) then&lt;br /&gt;      begin&lt;br /&gt;         nraices := nraices + 1;&lt;br /&gt;         soluciones[nraices]:=sup;&lt;br /&gt;      end;&lt;br /&gt;     Raices := nraices;&lt;br /&gt;  end;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; var&lt;br /&gt;  nsol           : integer;&lt;br /&gt;  x,linf,lsup,ti : real;&lt;br /&gt;  Sol            : TipoVector;&lt;br /&gt;  i              : integer;&lt;br /&gt; begin&lt;br /&gt;   clrscr;&lt;br /&gt;   { Peticion de los parametros        }&lt;br /&gt;   write('Dame el limite inferior      : '); readln(linf);&lt;br /&gt;   write('Dame el limite superior      : '); readln(lsup);&lt;br /&gt;   write('Dame el rango de subdivision : '); readln(ti);&lt;br /&gt;   {Calculo de las raices para cada una de las cuatro funciones }&lt;br /&gt;   nsol := Raices(f1,linf,lsup,ti,Sol);&lt;br /&gt;   writeln('Funcion 1. Numero de Soluciones : ', nsol);&lt;br /&gt;   for i := 1 to nsol do&lt;br /&gt;   begin&lt;br /&gt;     writeln('Solucion ',i,' : ',Sol[i]);&lt;br /&gt;   end;&lt;br /&gt;&lt;br /&gt;   nsol := Raices(f2,linf,lsup,ti,Sol);&lt;br /&gt;   writeln('Funcion 2. Numero de Soluciones : ', nsol);&lt;br /&gt;   for i := 1 to nsol do&lt;br /&gt;   begin&lt;br /&gt;     writeln('Solucion ',i,' : ',Sol[i]);&lt;br /&gt;   end;&lt;br /&gt;&lt;br /&gt;   nsol := Raices(f3,linf,lsup,ti,Sol);&lt;br /&gt;   writeln('Funcion 3. Numero de Soluciones : ', nsol);&lt;br /&gt;   for i := 1 to nsol do&lt;br /&gt;   begin&lt;br /&gt;     writeln('Solucion ',i,' : ',Sol[i]);&lt;br /&gt;   end;&lt;br /&gt;&lt;br /&gt;   nsol := Raices(f4,linf,lsup,ti,Sol);                  &lt;br /&gt;   writeln('Funcion 4. Numero de Soluciones : ', nsol);&lt;br /&gt;   for i := 1 to nsol do                &lt;br /&gt;   begin                &lt;br /&gt;     writeln('Solucion ',i,' : ',Sol[i]);                         &lt;br /&gt;   end;&lt;br /&gt;                  &lt;br /&gt;   {Se para un momento para la visualizacion de los resultados}                    &lt;br /&gt;   write('Pulsa una tecla...');                          &lt;br /&gt;   Readkey;                    &lt;br /&gt;end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-3153314447227599649?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/3153314447227599649/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=3153314447227599649' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3153314447227599649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3153314447227599649'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/clculo-de-raices-nicas-reales-en.html' title='Cálculo de raices únicas reales en lenguaje TurboPascal'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-3021408475526687724</id><published>2008-01-23T23:27:00.003Z</published><updated>2008-02-07T19:01:25.069Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='LP'/><category scheme='http://www.blogger.com/atom/ns#' term='JAVA'/><title type='text'>Programa que solicita datos personales y los muestra por pantalla en lenguaje JAVA</title><content type='html'>*  Desarrollar un programa que solicite los datos personales, en el orden que se indica, y los muestre por pantalla ( Nombre, Apellidos,  Titulación y Grupo). &lt;br /&gt;&lt;br /&gt;   1. Los datos deben ser privados y estar encapsulados en una clase distinta de la principal, llamada personal. Son todos de tipo ristra excepto Grupo que es tipo entero.&lt;br /&gt;   2. Debe poseer un constructor que permita la inicialización de dichos datos en el momento de la creación de un objeto de esa clase.&lt;br /&gt;   3. En la misma clase de los datos se debe implementar un método, llamado muestra, para mostrar por pantalla todos los datos, en el mismo orden que se introdujeron. &lt;br /&gt;&lt;br /&gt;   import java.io.*;&lt;br /&gt;   class personal&lt;br /&gt;   {&lt;br /&gt;      private String Nombre,Apellidos,Titulación;&lt;br /&gt;      private int Grupo;&lt;br /&gt;   &lt;br /&gt;      //CONSTRUCTOR&lt;br /&gt;      public personal (String n,String a,String t,int g){&lt;br /&gt;         Grupo=g;&lt;br /&gt;         Nombre=n;&lt;br /&gt;         Apellidos=a;&lt;br /&gt;         Titulación=t;&lt;br /&gt;      }&lt;br /&gt;      //MÉTODO  &lt;br /&gt;      public void muestra(){&lt;br /&gt;         System.out.println("El nombre introducido es: " );&lt;br /&gt;         System.out.println(Nombre);&lt;br /&gt;         System.out.println("Los apellidos introducido son: " );&lt;br /&gt;         System.out.println(Apellidos);&lt;br /&gt;         System.out.println("Su titulacion introducido es: " );&lt;br /&gt;         System.out.println(Titulación);&lt;br /&gt;         System.out.println("Esta en el grupo: " );&lt;br /&gt;         System.out.println(Grupo);&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;   public class prac03{&lt;br /&gt;      //PROGRAMA PRINCIPAL, SE INTRODUCEN LOS DATOS&lt;br /&gt;      public static void main(String args[])throws IOException{&lt;br /&gt;      &lt;br /&gt;         String g,n,t,a;&lt;br /&gt;         InputStreamReader k = new InputStreamReader(System.in);//ENTRADA POR TECLADO LÍNEA A LÍNEA &lt;br /&gt;         BufferedReader q = new BufferedReader(k);      &lt;br /&gt;         System.out.println("Por favor intrduzca el nombre: ");&lt;br /&gt;         n=q.readLine();&lt;br /&gt;         System.out.println("Por favor introduzca sus apellidos: ");&lt;br /&gt;         a=q.readLine();&lt;br /&gt;         System.out.println("Por favor introduzca su titulacion: ");&lt;br /&gt;         t=q.readLine();&lt;br /&gt;         System.out.println("Por favor introduzca su grupo: ");&lt;br /&gt;         g=q.readLine();&lt;br /&gt;         personal Alumno= new personal(n,a,t,Integer.parseInt(g));&lt;br /&gt;         Alumno.muestra();&lt;br /&gt;      }&lt;br /&gt;   }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-3021408475526687724?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/3021408475526687724/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=3021408475526687724' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3021408475526687724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3021408475526687724'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/programa-que-solicita-datos-personales.html' title='Programa que solicita datos personales y los muestra por pantalla en lenguaje JAVA'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-2039304986706781093</id><published>2008-01-23T23:27:00.001Z</published><updated>2008-02-07T19:03:22.294Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='LP'/><category scheme='http://www.blogger.com/atom/ns#' term='Prolog'/><title type='text'>Operaciones con Listas en lenguaje Prolog (Invierte, Palindroma, Sublista, Ultimo)</title><content type='html'>Listas: ultimo, invierte, palindroma, busca, sublista&lt;br /&gt;&lt;br /&gt; ultimo([],E,[E|[]]).&lt;br /&gt; ultimo([H|T],E,[H|R]) :- ultimo(T,E,R).&lt;br /&gt;&lt;br /&gt; invierte([],[])   :- !.&lt;br /&gt; invierte([H|T],R) :- invierte(T,R1), ultimo(R1,H,R), !.&lt;br /&gt; invierte(L,R)     :- invierte(R,L) , !. &lt;br /&gt;&lt;br /&gt; palindroma([]).&lt;br /&gt; palindroma([_|[]]).&lt;br /&gt; palindroma([H|T]) :- ultimo(P,H,T), palindroma(P). &lt;br /&gt; %p2(T) :- invierte(T,T).&lt;br /&gt;&lt;br /&gt; b2([],_).&lt;br /&gt; b2([H|T],[H|T2]) :- b2(T,T2).&lt;br /&gt; busca([],[]).&lt;br /&gt; busca([H|T],[H|T2]) :- b2(T,T2),!.&lt;br /&gt; busca(L,[_|T])      :- busca(L,T).&lt;br /&gt; &lt;br /&gt; sublista([H|_],1,1,[H|[]]).&lt;br /&gt; sublista([H|T],1,S,[H|T2]) :- S&gt;1,S2 is S-1, sublista(T,1 ,S2,T2).&lt;br /&gt; sublista([_|T],I,S,R     ) :- I&gt;1,I2 is I-1, sublista(T,I2,S ,R ).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-2039304986706781093?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/2039304986706781093/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=2039304986706781093' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2039304986706781093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2039304986706781093'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/operaciones-con-listas-en-lenguaje.html' title='Operaciones con Listas en lenguaje Prolog (Invierte, Palindroma, Sublista, Ultimo)'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-8409186995923564025</id><published>2008-01-23T23:25:00.000Z</published><updated>2008-02-07T19:03:22.295Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='LP'/><category scheme='http://www.blogger.com/atom/ns#' term='Prolog'/><title type='text'>Métodos de Ordenación en lenguaje Prolog</title><content type='html'>%%%%%%%%%%%%%%%%%%%  ORDENACION %%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;% Ordenacion por permutacion.&lt;br /&gt;&lt;br /&gt;ordena1(L,S):-permutacion(L,S),ordenada(S).&lt;br /&gt;&lt;br /&gt;permutacion([],[]).&lt;br /&gt;permutacion([H|T],S):-permutacion(T,T1),guarda(H,T1,S).&lt;br /&gt;&lt;br /&gt;guarda(X,L,[X|L]).&lt;br /&gt;guarda(X,[H|T],[H|S]):-guarda(X,T,S).&lt;br /&gt;&lt;br /&gt;ordenada([]).&lt;br /&gt;ordenada([_]).&lt;br /&gt;ordenada([A,B|T]):-A&gt;=B,ordenada([B|T]).&lt;br /&gt;&lt;br /&gt;% ----------------------------------------------------&lt;br /&gt;&lt;br /&gt;% Ordenacion por insercion.&lt;br /&gt;&lt;br /&gt;ordena2([],[]).&lt;br /&gt;ordena2([H|T],S):-ordena2(T,R),inserta(H,R,S).&lt;br /&gt;&lt;br /&gt;inserta(X,[],[X]).&lt;br /&gt;inserta(X,[H|T],[X,H|T]):-X&gt;=H,!.&lt;br /&gt;inserta(X,[H|T],[H|S]):-inserta(X,T,S).&lt;br /&gt;&lt;br /&gt;% ----------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;% Ordenacion por el metodo de la burbuja.&lt;br /&gt;&lt;br /&gt;ordena3(L1,L2):-append(U,[A,B|V],L1),B&lt;A,append(U,[B,A|V],M),ordena3(M,L2),!.&lt;br /&gt;ordena3(L1,L1).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-8409186995923564025?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/8409186995923564025/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=8409186995923564025' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8409186995923564025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8409186995923564025'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/mtodos-de-ordenacin-en-lenguaje-prolog.html' title='Métodos de Ordenación en lenguaje Prolog'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-8243594133468528449</id><published>2008-01-23T23:22:00.001Z</published><updated>2008-02-07T19:03:22.295Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='LP'/><category scheme='http://www.blogger.com/atom/ns#' term='Prolog'/><title type='text'>Cálculos Numéricos con Listas en Lenguaje Prolog (Primos, MCD, Combinatorios, ..)</title><content type='html'>%%%%%%%%%%%%%% CALCULOS NUMERICOS CON LISTAS %%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;% Lista de naturales&lt;br /&gt;&lt;br /&gt;lnat([0]).&lt;br /&gt;lnat([A,B|C]):-lnat([B|C]),A is B+1.&lt;br /&gt;&lt;br /&gt;%-----------------------------------------------------&lt;br /&gt;&lt;br /&gt;% Ejercicio 3.2. Lista infinita de a's.&lt;br /&gt;&lt;br /&gt;lia([a]).&lt;br /&gt;lia([a|R]):-lia(R).&lt;br /&gt;&lt;br /&gt;%-----------------------------------------------------&lt;br /&gt;&lt;br /&gt;% Ejercicio 3.3. Lista de negativos.&lt;br /&gt;&lt;br /&gt;l3([-1]).&lt;br /&gt;l3([A,B|C]):-l3([B|C]), A is B-1.&lt;br /&gt;&lt;br /&gt;%-----------------------------------------------------&lt;br /&gt;&lt;br /&gt;% Ejercicio 7.7. Lista de multiplos&lt;br /&gt;&lt;br /&gt;lmul(N,[N]).&lt;br /&gt;lmul(N,[A,B|C]):-lmul(N,[B|C]),A is B + N.&lt;br /&gt;&lt;br /&gt;%-----------------------------------------------------&lt;br /&gt;&lt;br /&gt;% Ejercicio 3.12. N-esimo numero triangular&lt;br /&gt;&lt;br /&gt;e312(N,M):-lnat([H|T]), len(T,N), sumalist([H|T],M).&lt;br /&gt;&lt;br /&gt;sumalist([],0).&lt;br /&gt;sumalist([H|T],N):-sumalist(T,M),N is H + M.&lt;br /&gt;&lt;br /&gt;% o bien&lt;br /&gt;&lt;br /&gt;e3122(0,0):-!.&lt;br /&gt;e3122(X,Y):-X1 is X-1, e3122(X1,Y1), Y is Y1+X.&lt;br /&gt;&lt;br /&gt;%-----------------------------------------------------&lt;br /&gt;&lt;br /&gt;% Ejercicio 7.8. Lista de fibonaccis&lt;br /&gt;&lt;br /&gt;lfib([1]).&lt;br /&gt;lfib([1,1]).&lt;br /&gt;lfib([A,B,C|R]):-lfib([B,C|R]), A is B+C.&lt;br /&gt;&lt;br /&gt;% Para obtener un numero de fibonacci hay dos metodos ineficientes.&lt;br /&gt;&lt;br /&gt;fib(0,1).&lt;br /&gt;fib(1,1).&lt;br /&gt;fib(N,M):-N&gt;1,N1 is N-1, N2 is N-2, fib(N1,M1),fib(N2,M2),M is M1 + M2.&lt;br /&gt;&lt;br /&gt;% o bien&lt;br /&gt;&lt;br /&gt;fib2(N,M):-lfib([M|L]),len(L,N).&lt;br /&gt;&lt;br /&gt;% La version eficiente es&lt;br /&gt;&lt;br /&gt;fib3(N,M):-auxfib(N,M,_).&lt;br /&gt;&lt;br /&gt;auxfib(0,1,_).&lt;br /&gt;auxfib(1,1,1).&lt;br /&gt;auxfib(N,M,M1):-N1 is N-1, auxfib(N1,M1,M2), M is M1+M2.&lt;br /&gt;&lt;br /&gt;%-----------------------------------------------------&lt;br /&gt;&lt;br /&gt;%Ejercicio  3.4   . Lista de numeros Primos&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;nat(0).&lt;br /&gt;nat(X):-nat(Y), X is Y +1.&lt;br /&gt;&lt;br /&gt;nodiv(_,[]).&lt;br /&gt;nodiv(N,[H|T]):-X is N mod H,X\==0,nodiv(N,T).&lt;br /&gt;&lt;br /&gt;sigprimo([H|T],N):-nat(R),N is H + R,nodiv(N,[H|T]),!.&lt;br /&gt;&lt;br /&gt;primos([2]).&lt;br /&gt;primos([A,B|T]):-primos([B|T]),sigprimo([B|T],A).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;%  Factores Primos de un numero&lt;br /&gt;  &lt;br /&gt;factores(N,L):-factores(N,[2],L).&lt;br /&gt;&lt;br /&gt;factores(N,_,[]):-(N=0;N=1;N=1.0),!.&lt;br /&gt;factores(N,[H|T],[H|L]):- 0 is N mod H,!,N1 is N / H,factores(N1,[H|T],L).&lt;br /&gt;factores(N,[H|T],L):-sigprimo([H|T],H1),factores(N,[H1,H|T],L).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;% maximo comun divisor de dos numeros&lt;br /&gt;&lt;br /&gt;mcd(N1,N2,N3):-factores(N1,L1),factores(N2,L2),mcd(L1,L2,N3,1).&lt;br /&gt;&lt;br /&gt;mcd([],_,N,N).&lt;br /&gt;mcd(_,[],N,N).&lt;br /&gt;mcd([H|T1],[H|T2],N,M):-M1 is M*H, mcd(T1,T2,N,M1).&lt;br /&gt;mcd([H1|T1],[H2|T2],N,M):-H1&lt;H2,mcd(T1,[H2|T2],N,M).&lt;br /&gt;mcd([H1|T1],[H2|T2],N,M):-H2&lt;H1,mcd([H1|T1],T2,N,M).&lt;br /&gt;&lt;br /&gt;%-----------------------------------------------------&lt;br /&gt;&lt;br /&gt;% Ejercicio 2.14. Numeros combinatorios y triangulo de Pascal.&lt;br /&gt;&lt;br /&gt;% a)&lt;br /&gt;&lt;br /&gt;c(_,0,1):-!.&lt;br /&gt;c(M,M,1):-!.&lt;br /&gt;c(M,N,R):-M1 is M-1, N1 is N-1,c(M1,N,A),c(M1,N1,B),R is A+B.&lt;br /&gt;&lt;br /&gt;% b)&lt;br /&gt;&lt;br /&gt;tr([X],[X]).&lt;br /&gt;tr([X,Y|L],[H|T]):-H is X+Y,tr([Y|L],T).&lt;br /&gt;&lt;br /&gt;f(0,[1]):-!.&lt;br /&gt;f(M,[1|L]):- M1 is M-1, f(M1,L1), tr(L1,L).&lt;br /&gt;&lt;br /&gt;% Version mas eficiente porque no se repiten calculos&lt;br /&gt;&lt;br /&gt;c2(M,N,R):-f(M,L), ele(N,L,R).&lt;br /&gt;ele(0,[H|_],H).&lt;br /&gt;ele(N,[_|T],X):- N&gt;0,N1 is N-1, ele(N1,T,X).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-8243594133468528449?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/8243594133468528449/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=8243594133468528449' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8243594133468528449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8243594133468528449'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/clculos-numricos-con-listas-en-lenguaje.html' title='Cálculos Numéricos con Listas en Lenguaje Prolog (Primos, MCD, Combinatorios, ..)'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-6976492420485358508</id><published>2008-01-23T23:20:00.002Z</published><updated>2008-02-07T19:03:22.295Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='LP'/><category scheme='http://www.blogger.com/atom/ns#' term='Prolog'/><title type='text'>Aplanar una lista (de listas) en Lenguaje Prolog</title><content type='html'>Aplanar una lista (de listas).&lt;br /&gt;&lt;br /&gt;aplana([],[]).&lt;br /&gt;aplana([[H|T]|R],S):-aplana([H|T],T1),aplana(R,R1),append(T1,R1,S),!.&lt;br /&gt;aplana([[]|T],S):-aplana(T,S),!.&lt;br /&gt;aplana([H|T],[H|S]):-aplana(T,S).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-6976492420485358508?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/6976492420485358508/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=6976492420485358508' title='11 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6976492420485358508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6976492420485358508'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/aplanar-una-lista-de-listas-en-lenguaje.html' title='Aplanar una lista (de listas) en Lenguaje Prolog'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-4740483735492551045</id><published>2008-01-23T23:20:00.001Z</published><updated>2008-02-07T19:03:22.296Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='LP'/><category scheme='http://www.blogger.com/atom/ns#' term='Prolog'/><title type='text'>Eliminar Elementos Repeditos de dos Listas en Lenguaje Prolog</title><content type='html'>Eliminación de elementos repetidos.&lt;br /&gt;&lt;br /&gt;elim([],[]).&lt;br /&gt;elim([H|T],S):-member(H,T),!,elim(T,S).&lt;br /&gt;elim([H|T],[H|S]):-elim(T,S).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-4740483735492551045?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/4740483735492551045/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=4740483735492551045' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4740483735492551045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4740483735492551045'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/eliminar-elementos-repeditos-de-dos.html' title='Eliminar Elementos Repeditos de dos Listas en Lenguaje Prolog'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-1519650116080004265</id><published>2008-01-23T23:19:00.001Z</published><updated>2008-02-07T19:03:22.297Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='LP'/><category scheme='http://www.blogger.com/atom/ns#' term='Prolog'/><title type='text'>Trenzar Dos o mas Listas en Prolog</title><content type='html'>% Trenzar dos listas.&lt;br /&gt;&lt;br /&gt;trenza([],L,L).&lt;br /&gt;trenza([H|T],R,[H|S]):-trenza(R,T,S).&lt;br /&gt;&lt;br /&gt;%----------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;% Trenzar varias listas.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;trenza2([],[]).&lt;br /&gt;trenza2([[]|T],R):-trenza2(T,R).&lt;br /&gt;trenza2([[H|T]|R],[H|S]):-append(R,[T],U),trenza2(U,S).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-1519650116080004265?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/1519650116080004265/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=1519650116080004265' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1519650116080004265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1519650116080004265'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/trenzar-dos-o-mas-listas-en-prolog.html' title='Trenzar Dos o mas Listas en Prolog'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-2775978064763863326</id><published>2008-01-23T23:18:00.000Z</published><updated>2008-02-07T19:03:22.298Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='LP'/><category scheme='http://www.blogger.com/atom/ns#' term='Prolog'/><title type='text'>Invertir Lista en Lenguaje Prolog</title><content type='html'>Inversion de una lista&lt;br /&gt;&lt;br /&gt;reverse([],[]).&lt;br /&gt;reverse([H|T],L):-reverse(T,S),append(S,[H],L).&lt;br /&gt;&lt;br /&gt;% o bien mas eficiente, utilizando un parametro acumulador.&lt;br /&gt;&lt;br /&gt;rev(L1,L2):-rev(L1,L2,[]).&lt;br /&gt;&lt;br /&gt;rev([],L,L).&lt;br /&gt;rev([H|T],L,S):-rev(T,L,[H|S]).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-2775978064763863326?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/2775978064763863326/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=2775978064763863326' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2775978064763863326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2775978064763863326'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/invertir-lista-en-lenguaje-prolog.html' title='Invertir Lista en Lenguaje Prolog'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-7975306662951481714</id><published>2008-01-23T23:12:00.000Z</published><updated>2008-02-07T19:03:22.299Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='LP'/><category scheme='http://www.blogger.com/atom/ns#' term='Prolog'/><title type='text'>Sustituir un Elemento por otro En lenguaje Prolog</title><content type='html'>% Sustituir un elemento por otro.&lt;br /&gt;&lt;br /&gt;sus(_,_,[],[]).&lt;br /&gt;sus(X,Y,[X|T],[Y|S]):-!,sus(X,Y,T,S).&lt;br /&gt;sus(X,Y,[Z|T],[Z|S]):-sus(X,Y,T,S).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-7975306662951481714?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/7975306662951481714/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=7975306662951481714' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7975306662951481714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7975306662951481714'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/sustituir-un-elemento-por-otro-en.html' title='Sustituir un Elemento por otro En lenguaje Prolog'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-3906659196514196351</id><published>2008-01-23T17:28:00.000Z</published><updated>2008-02-07T19:03:22.299Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='LP'/><category scheme='http://www.blogger.com/atom/ns#' term='Prolog'/><title type='text'>Funciones Fibonacci y Cálculo de la Suma en Lenguaje Prolog</title><content type='html'>/*a) Escriba un predicado suma(N,R) que sea cierto cuando R sea la suma de los naturales desde el 1 hasta N. */&lt;br /&gt;&lt;br /&gt;     suma(1,1).&lt;br /&gt;     suma(N,R):- not(N=0),L is N-1,K is R-N,suma(L,K).&lt;br /&gt;&lt;br /&gt;/*b) Escriba un predicado fibo(N,R) que sea cierto cuando R sea el enésimo elemento de la serie de Fibonacci. */&lt;br /&gt;&lt;br /&gt;     fibo(1,1).&lt;br /&gt;     fibo(2,1).&lt;br /&gt;     fibo(N,R):- not(N=0),L is N-1,H is N-2,fibo(L,T),fibo(H,S),R is T+S.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-3906659196514196351?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/3906659196514196351/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=3906659196514196351' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3906659196514196351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3906659196514196351'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/funciones-fibonacci-y-clculo-de-la-suma.html' title='Funciones Fibonacci y Cálculo de la Suma en Lenguaje Prolog'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-3337663809461264650</id><published>2008-01-23T17:27:00.000Z</published><updated>2008-02-07T19:03:22.301Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='LP'/><category scheme='http://www.blogger.com/atom/ns#' term='Prolog'/><title type='text'>Operaciones Sobre Conjuntos en Lenguaje Prolog (Miembro, Subconjunto, Disjuntos, Interseccion, Diferencia, ...)</title><content type='html'>/* Parte a) miembro(X,L), el cual es cierto si el elemento X está en la lista L */&lt;br /&gt;miembro(X,[X|_]):- !.&lt;br /&gt;miembro(X,[_|Y]):- miembro(X,Y).&lt;br /&gt;&lt;br /&gt;/*Parte b) subconjunto (L,K), el cual es válido si L es un subconjunto de K*/ &lt;br /&gt;subconjunto([],_).&lt;br /&gt;subconjunto([A|B],K):- miembro(A,K), subconjunto(B,K).&lt;br /&gt;&lt;br /&gt;/*Parte c) disjuntos (L,K), el cual es cierto si L y K son conjuntos disjuntos (no tienen elementos en común).*/&lt;br /&gt;disjuntos([],_):- not(fail).&lt;br /&gt;disjuntos([A|B],K):- not(miembro(A,K)), disjuntos(B,K). &lt;br /&gt;&lt;br /&gt;/*Parte e) interseccion(A,B,R), el cual es válido si R es la intersección de A y B*/ &lt;br /&gt;interseccion([],_,[]).&lt;br /&gt;interseccion([A|B],D,[A|R]):- miembro(A,D), interseccion(B,D,R).&lt;br /&gt;interseccion([A|B],D,R):- not(miembro(A,D)), interseccion(B,D,R).&lt;br /&gt;&lt;br /&gt;/*Parte d) diferencia (L,K,M), el cual es válido si M es la diferencia de L y K*/ &lt;br /&gt;diferencia([],_,[]).&lt;br /&gt;diferencia([A|B],K,M):- miembro(A,K), diferencia(B,K,M).&lt;br /&gt;diferencia([A|B],K,[A|M]):- not(miembro(A,K)), diferencia(B,K,M).&lt;br /&gt;&lt;br /&gt;/*Ejercicio7): Defina un predicado reemplaza (L, X, Y, Z) el cuál es válido si la lista Z es igual a la lista L sustituyendo el elemento X por el elemento Y*/&lt;br /&gt;reemplaza([],_,_,[]).&lt;br /&gt;reemplaza([X],X,Y,[Y]).&lt;br /&gt;reemplaza([A|B],A,Y,[Y|L]):- reemplaza(B,A,Y,L).&lt;br /&gt;reemplaza([A|B],X,Y,[A|L]):- A\=X, reemplaza(B,X,Y,L).&lt;br /&gt;&lt;br /&gt;/*Ejercicio8): Define un predicado borra(L, X, Z) el cual es cierto si Z es igual a la lista L tras eliminar todas las ocurrencias del elemento X*/&lt;br /&gt;borra([X],X,[]).&lt;br /&gt;borra([A|B],A,Z):- borra(B,A,Z).&lt;br /&gt;borra([A|B],X,[A|Z]):- A\=X, borra(B,X,Z).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-3337663809461264650?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/3337663809461264650/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=3337663809461264650' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3337663809461264650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3337663809461264650'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/operaciones-sobre-conjuntos-en-lenguaje.html' title='Operaciones Sobre Conjuntos en Lenguaje Prolog (Miembro, Subconjunto, Disjuntos, Interseccion, Diferencia, ...)'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-8572753807334117327</id><published>2008-01-23T17:24:00.000Z</published><updated>2008-02-07T19:03:22.301Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='LP'/><category scheme='http://www.blogger.com/atom/ns#' term='Prolog'/><title type='text'>Longitud, Ocurrencia, Posicion y Concatenar Listas en Lenguaje Prolog</title><content type='html'>/*Ejercicio2): Defina un predicado longitud(L,N) el cual es válido si N contiene la longitud de la lista L*/             &lt;br /&gt;longuitud([],0).                                 &lt;br /&gt;longuitud([_|A],N):- longuitud(A,B), N is B+1.                           &lt;br /&gt;&lt;br /&gt;/*Ejercicio3): Defina un predicado ocurrencia(X,L,N) el cual es válido si el elemento X aparece N veces en la lista L*/&lt;br /&gt;ocurrencia(_,[],0).&lt;br /&gt;ocurrencia(X,[A|C],N):- X\=A, ocurrencia(X,C,N).&lt;br /&gt;ocurrencia(X,[A|C],N):- X=A, B is N-1, ocurrencia(X,C,B).&lt;br /&gt;&lt;br /&gt;/*Ejercicio4): Defina un predicado posicion(N,L,X) el cual es válido si X es el elemento que ocupa la posición N de la lista L*/&lt;br /&gt;posicion(1,[A|_],A).&lt;br /&gt;posicion(N,[_|B],A):- Aux is N-1, posicion(Aux,B,A).&lt;br /&gt;&lt;br /&gt;/*Ejercicio5): Defina un predicado concatena(L, M, N) el cuál es válido si la lista N es la concatenación de las listas L y M*/&lt;br /&gt;concatena([],L,L).&lt;br /&gt;concatena([_|A],M,[_|N]):- concatena(A,M,N).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-8572753807334117327?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/8572753807334117327/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=8572753807334117327' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8572753807334117327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8572753807334117327'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/longitud-ocurrencia-posicion-y.html' title='Longitud, Ocurrencia, Posicion y Concatenar Listas en Lenguaje Prolog'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-1390327761580479412</id><published>2008-01-23T16:59:00.000Z</published><updated>2008-02-07T19:03:22.304Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='LP'/><category scheme='http://www.blogger.com/atom/ns#' term='Prolog'/><title type='text'>Rama Familiar en Lenguaje Prolog (Hermano, Primo, Nieto..)</title><content type='html'>Dados un conjunto de hechos de la forma padre(nombre1,nombre2), donde nombre1 es el padre de nombre2:&lt;br /&gt;&lt;br /&gt;    * padre(antonio,juan).&lt;br /&gt;    * padre(antonio,carlos).&lt;br /&gt;    * padre(juan,diana).&lt;br /&gt;    * padre(juan,elena).&lt;br /&gt;    * padre(carlos,felipe). &lt;br /&gt;&lt;br /&gt;Defina los siguientes predicados:&lt;br /&gt;&lt;br /&gt;    * hermano(X,Y) el cual es válido si X e Y son hermanos/as.&lt;br /&gt;    * primo(X,Y) el cual es válido si X e Y son primos.&lt;br /&gt;    * nieto(X,Y) el cual es válido si X es nieto/a de Y.&lt;br /&gt;    * descendiente(X,Y) el cual es verdadero si X es descendiente de Y. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*A)hermano(X,Y) verdadero si X es hemano/a de Y. Hijos de igual madre y padre.*/   &lt;br /&gt;     hermano(X,Y):-padre(A,X), padre(A,Y), not(X=Y).                   &lt;br /&gt;&lt;br /&gt;/*B)primo(X,Y) verdadero si X es primo de Y.*/                    &lt;br /&gt;     primo(X,Y):-hermano(A,B), padre(A,X), padre(B,Y), not(X=Y).             &lt;br /&gt;&lt;br /&gt;/*C)nieto(X,Y) verdadero si X es nieto de Y.*/               &lt;br /&gt;     nieto(X,Y):-padre(Y,A), padre(A,X), not(X=Y).            &lt;br /&gt;&lt;br /&gt;/*D)descendiente(X,Y) verdadero si X es descendiente de Y.*/          &lt;br /&gt;     descendiente(X,Y):-padre(Y,X).                &lt;br /&gt;     descendiente(X,Y):-nieto(Y,X).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-1390327761580479412?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/1390327761580479412/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=1390327761580479412' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1390327761580479412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1390327761580479412'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/rama-familiar-en-lenguaje-prolog.html' title='Rama Familiar en Lenguaje Prolog (Hermano, Primo, Nieto..)'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-7873793156856114692</id><published>2008-01-21T15:41:00.000Z</published><updated>2008-01-21T15:42:19.509Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Funcion Sublista desde dos posiciones en Lenguaje Scheme</title><content type='html'>Defina una función sublista a la que pasándole una lista: L, y dos enteros: ini y lon, devuelva una lista formada por los elementos de L desde el ini hasta el ini+lon -1. Suponga que los elementos están numerados desde el 1 hasta n. Si se solicitan tantos elementos que se sobrepasa el final de la lista devolver el máximo posible.&lt;br /&gt; &lt;br /&gt; (define (sublista Lista1 ini long)&lt;br /&gt;  (cond&lt;br /&gt;    ((null? Lista1) null)&lt;br /&gt;    ((= long 0) null)&lt;br /&gt;    ((&gt; ini 1) (sublista (cdr Lista1) (- ini 1) long))                                  &lt;br /&gt;    ((= ini 1)(cons (car Lista1)(sublista (cdr Lista1) ini (- long 1))))))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-7873793156856114692?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/7873793156856114692/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=7873793156856114692' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7873793156856114692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7873793156856114692'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/funcion-sublista-desde-dos-posiciones.html' title='Funcion Sublista desde dos posiciones en Lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-8099022816579626612</id><published>2008-01-21T15:39:00.000Z</published><updated>2008-01-21T15:40:50.034Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Fusionar Dos Listas en Una en Lenguaje Scheme</title><content type='html'>Defina una función llamada fusiona que, pasándole dos listas de enteros ordenados, devuelva una sóla lista con todos los enteros ordenados.&lt;br /&gt;&lt;br /&gt; (define (fusiona Lista1 Lista2)    &lt;br /&gt;  (cond&lt;br /&gt;   ((null? Lista1) Lista2)&lt;br /&gt;   ((null? Lista2) Lista1)&lt;br /&gt;   ((&gt;= (car Lista1)(car Lista2)) (cons (car Lista2)(fusiona Lista1 (cdr Lista2))))&lt;br /&gt;   ((&lt;(car Lista1)(car Lista2)) (cons (car Lista1)(fusiona (cdr Lista1) Lista2)))))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-8099022816579626612?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/8099022816579626612/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=8099022816579626612' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8099022816579626612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/8099022816579626612'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/fusionar-dos-listas-en-una-en-lenguaje.html' title='Fusionar Dos Listas en Una en Lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-1313608745225638389</id><published>2008-01-21T15:38:00.000Z</published><updated>2008-01-21T15:39:42.111Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Buscar un Lista en otra en Lenguaje Scheme</title><content type='html'>Escriba una función busca que, pasándole dos listas: L1 y L2, devuelva verdadero si la lista L1 está contenida en L2, o sea, si la lista L1 es una sublista de L2 y falso en caso contrario. La sublista vacía está contenida en cualquier lista.&lt;br /&gt; (define (busca Lista1 Lista2)&lt;br /&gt;  (cond&lt;br /&gt;    ((null? Lista1) #t)&lt;br /&gt;    ((null? Lista2) #f)    &lt;br /&gt;    ((eq? (car Lista1)(car Lista2))&lt;br /&gt;    (busca(cdr Lista1) (cdr Lista2))) &lt;br /&gt;    (else (busca Lista1(cdr Lista2)))))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-1313608745225638389?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/1313608745225638389/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=1313608745225638389' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1313608745225638389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/1313608745225638389'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/buscar-un-lista-en-otra-en-lenguaje.html' title='Buscar un Lista en otra en Lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-4290710199548566304</id><published>2008-01-21T15:36:00.000Z</published><updated>2008-01-21T15:37:43.531Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Añadir al Final un Elemento en Lenguaje Scheme</title><content type='html'>Defina una función snoc que, pasándole como parámetro una lista y un elemento, devuelve una lista formada por la lista pasada como primer parámetro a la que se le ha añadido como último elemento el segundo parámetro.&lt;br /&gt;&lt;br /&gt;(define(snoc Lista1 Aux)               &lt;br /&gt;  (if (null?  Lista1)     &lt;br /&gt;      (cons Aux null)           &lt;br /&gt;       (cons (car Lista1) (snoc(cdr Lista1) Aux))))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-4290710199548566304?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/4290710199548566304/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=4290710199548566304' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4290710199548566304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4290710199548566304'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/aadir-al-final-un-elemento-en-lenguaje.html' title='Añadir al Final un Elemento en Lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-3413198830428464020</id><published>2008-01-21T15:35:00.001Z</published><updated>2008-01-21T15:35:55.299Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Funcion Palíndroma en lenguaje Scheme</title><content type='html'>(define (palindroma Lista)      &lt;br /&gt;    (cond&lt;br /&gt;    ((null? Lista) #t)&lt;br /&gt;    ((null? (cdr Lista)) #t)&lt;br /&gt;    ((eq? (car Lista) (rac Lista)) (palindroma (rdc (cdr Lista))))  &lt;br /&gt;    (else #f)))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-3413198830428464020?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/3413198830428464020/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=3413198830428464020' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3413198830428464020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3413198830428464020'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/funcion-palndroma-en-lenguaje-scheme.html' title='Funcion Palíndroma en lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-2888065742191654090</id><published>2008-01-21T15:33:00.001Z</published><updated>2008-01-21T15:33:49.135Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Devolver el Ultimo Elemento de un Lista en Lenguaje Scheme</title><content type='html'>Defina una función rac que, pasándole como parámetro una lista con al menos un elemento, devuelve el último elemento de la lista.&lt;br /&gt;  &lt;br /&gt; (define (rac L)&lt;br /&gt;   (cond&lt;br /&gt;        ((null? L)       #f           )&lt;br /&gt;        ((not(list? L))  L            )&lt;br /&gt;        (else           (rac (cdr L)))))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-2888065742191654090?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/2888065742191654090/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=2888065742191654090' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2888065742191654090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/2888065742191654090'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/devolver-el-ultimo-elemento-de-un-lista.html' title='Devolver el Ultimo Elemento de un Lista en Lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-3940487870966612405</id><published>2008-01-21T15:32:00.001Z</published><updated>2008-01-21T15:32:54.631Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Funcion Ackerman en Lenguaje Scheme</title><content type='html'>La función de Ackermann se define como: &lt;br /&gt;A(m,n) = n+1 si m=0&lt;br /&gt;A(m,n) = A(m-1,1) si m &gt; 0 y n = 0&lt;br /&gt;A(m,n) = A(m-1,A(m,n-1)) en otro caso&lt;br /&gt;Implemente dicha función en Scheme. No pruebe la función para  valores grandes ya que crece muy deprisa.&lt;br /&gt;&lt;br /&gt;(define (Ackermann m n) &lt;br /&gt;        (if(= m 0) (+ n 1)&lt;br /&gt; (if(= n 0) (Ackermann (- m 1) 1)  &lt;br /&gt;        (Ackermann (- m 1) (Ackermann m (- n 1)))&lt;br /&gt;        )))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-3940487870966612405?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/3940487870966612405/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=3940487870966612405' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3940487870966612405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/3940487870966612405'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/funcion-ackerman-en-lenguaje-scheme.html' title='Funcion Ackerman en Lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-7145521744790557820</id><published>2008-01-21T15:26:00.000Z</published><updated>2008-01-21T15:27:27.368Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Resta de dos conjuntos en Lenguaje Scheme</title><content type='html'>Definir una función resta con dos parámetros del tipo lista l1 y l2, que devuelva una lista con el conjunto resta del primer parámetro menos el segundo. La resta del A-B se define como los elementos en A que no están en B. &lt;br /&gt;&lt;br /&gt;   (define (resta L1 L2)&lt;br /&gt;       (if (null? L1) null&lt;br /&gt;           (if (null? L2) L1&lt;br /&gt;               (if (esta (car L1) (interseccion L1 L2))&lt;br /&gt;                  (resta (cdr L1) L2)&lt;br /&gt;               (cons (car L1) (resta (cdr L1) L2))))))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-7145521744790557820?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/7145521744790557820/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=7145521744790557820' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7145521744790557820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7145521744790557820'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/resta-de-dos-conjuntos-en-lenguaje.html' title='Resta de dos conjuntos en Lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-4561433332446684616</id><published>2008-01-21T15:25:00.000Z</published><updated>2008-01-21T15:26:17.063Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Intersección de dos Conjuntos en Lenguaje Scheme</title><content type='html'>Definir una función interseccion con dos parámetros del tipo lista l1 y l2, que devuelva una lista con el conjunto intersección. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  (define (interseccion L1 L2)&lt;br /&gt;    (if (null? L1) null&lt;br /&gt;        (if (null? L2) null&lt;br /&gt;           (if (esta (car L1) L2) &lt;br /&gt;               (cons (car L1) (interseccion (cdr L1) L2))&lt;br /&gt;               (interseccion (cdr L1) L2)))))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-4561433332446684616?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/4561433332446684616/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=4561433332446684616' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4561433332446684616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4561433332446684616'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/interseccin-de-dos-conjuntos-en.html' title='Intersección de dos Conjuntos en Lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-7791121005727273394</id><published>2008-01-21T15:24:00.001Z</published><updated>2008-01-21T15:25:06.404Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Union de dos listas en lenguaje Scheme</title><content type='html'>Defina una función union con dos parámetros del tipo lista l1 y l2, que devuelva una lista con el conjunto unión. &lt;br /&gt; &lt;br /&gt;  (define (union L1 L2)&lt;br /&gt;     (if(null? L1)&lt;br /&gt;        L2&lt;br /&gt;       (if (esta (car L1) L2) (union (cdr L1) L2)&lt;br /&gt;        (cons (car L1) (union (cdr L1) L2)))))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-7791121005727273394?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/7791121005727273394/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=7791121005727273394' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7791121005727273394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7791121005727273394'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/union-de-dos-listas-en-lenguaje-scheme.html' title='Union de dos listas en lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-7561052495635082480</id><published>2008-01-21T15:22:00.000Z</published><updated>2008-01-21T15:23:38.727Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Elementos repetidos en un lista en Lenguaje Scheme</title><content type='html'>Defina una función esconjunto con un parámetro del tipo lista l que devuelva falso si la lista tiene elementos repetidos y verdadero en otro caso. &lt;br /&gt;&lt;br /&gt; (define (esconjunto L) &lt;br /&gt;  (if(null? L)#t&lt;br /&gt;    (if(esta (car L) (cdr L) )#f&lt;br /&gt;      (esconjunto (cdr L))&lt;br /&gt;    )))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-7561052495635082480?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/7561052495635082480/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=7561052495635082480' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7561052495635082480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/7561052495635082480'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/elementos-repetidos-en-un-lista-en.html' title='Elementos repetidos en un lista en Lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-5096452809284834343</id><published>2008-01-21T15:20:00.000Z</published><updated>2008-01-21T15:21:55.383Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Función Fibonacci en Lenguaje Scheme</title><content type='html'>Defina una función fibo que acepte un entero n como parámetro y que devuelva el elemento ;enésimo de la serie de Fibonacci. &lt;br /&gt;&lt;br /&gt;(define (fibo n) &lt;br /&gt;        (if(&lt;= n 1) 1 &lt;br /&gt;        (+ (fibo(- n 1)) (fibo(- n 2)))&lt;br /&gt;           )&lt;br /&gt; )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-5096452809284834343?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/5096452809284834343/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=5096452809284834343' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/5096452809284834343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/5096452809284834343'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/funcin-fibonacci-en-lenguaje-scheme.html' title='Función Fibonacci en Lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-5505743805575123865</id><published>2008-01-21T15:19:00.000Z</published><updated>2008-01-21T15:20:08.522Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Extrae desde dos posiciones en Lenguaje Scheme</title><content type='html'>Escriba una función extrae la cuál debe constar de tres argumentos: una lista, un número de posición inicial y otro número de posición final. La función deberá devolver la lista formada sólo por las letras comprendidas entre la posición inicio y final. En el caso que la lista esté vacía o bien inicio sea mayor que final se devolverá la lista vacía. Si final sobrepasa el tamaño de la lista se devolverán todos los elementos posibles&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(define (extrae Lista1 inicio final)&lt;br /&gt;    (if (zero? final) null                   &lt;br /&gt;    (if (zero? inicio) null                        &lt;br /&gt;    (if (null? Lista1) Lista1                             &lt;br /&gt;    (if(= inicio 1) (cons (car Lista1) (extrae (cdr Lista1) 1 (- final 1)))         &lt;br /&gt;    (extrae (cdr Lista1) (- inicio 1) (- final 1)))))))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-5505743805575123865?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/5505743805575123865/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=5505743805575123865' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/5505743805575123865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/5505743805575123865'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/extrae-desde-dos-posiciones-en-lenguaje.html' title='Extrae desde dos posiciones en Lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-6686949253098901866</id><published>2008-01-21T15:18:00.001Z</published><updated>2008-01-21T15:18:56.468Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Número de veces que aparece un valor en un lista en Lenguaje Scheme</title><content type='html'>Defina en Scheme una función ocurrencia que permita contar el número de veces que aparece un determinado valor dentro de una lista. Utilice para ello la función let&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(define (ocurrencia x Lista1)         &lt;br /&gt;    (if(null? Lista1) 0                       &lt;br /&gt;    (if(eq? x (car Lista1)) (+ 1 (ocurrencia x (cdr Lista1)))&lt;br /&gt;      (ocurrencia x (cdr Lista1)))))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-6686949253098901866?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/6686949253098901866/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=6686949253098901866' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6686949253098901866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6686949253098901866'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/nmero-de-veces-que-aparece-un-valor-en.html' title='Número de veces que aparece un valor en un lista en Lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-162256634553310819</id><published>2008-01-21T15:16:00.000Z</published><updated>2008-01-21T15:17:47.940Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Elimina elementos repetidos de una lista en Lenguaje Scheme</title><content type='html'>Escriba una función repetidos que recibe como único argumento una lista y retorna otra lista a la que se ha eliminado los elementos repetidos de la lista de entrada (dejando únicamente la última aparición). Puede utilizar para ello la función miembro? (en otro post)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(define (repetidos Lista1)                   &lt;br /&gt;  (cond                  &lt;br /&gt;   ((null? Lista1) Lista1)                 &lt;br /&gt;   ((miembro? (car Lista1) (cdr Lista1)) (repetidos (cdr Lista1)))&lt;br /&gt;   (else (concatena (list (car Lista1)) (repetidos (cdr Lista1))))))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-162256634553310819?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/162256634553310819/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=162256634553310819' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/162256634553310819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/162256634553310819'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/elimina-elementos-repetidos-de-una.html' title='Elimina elementos repetidos de una lista en Lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-6088671802730748154</id><published>2008-01-21T15:15:00.000Z</published><updated>2008-01-21T15:16:33.743Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Ver si un Elemento esta en la Lista en lenguaje Scheme</title><content type='html'>Escriba una función miembro? que permita verificar (verdadero o falso) si x es un elemento que está en la lista ls usando equal? para comparar (no puede usar el procedimiento member de scheme)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(define (miembro? x Lista1)     &lt;br /&gt;  (if (null? Lista1)              &lt;br /&gt;        #f                       &lt;br /&gt;   (if (eq? x (car Lista1)) &lt;br /&gt;       #t              &lt;br /&gt;       (miembro? x (cdr Lista1)))))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-6088671802730748154?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/6088671802730748154/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=6088671802730748154' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6088671802730748154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/6088671802730748154'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/ver-si-un-elemento-esta-en-la-lista-en.html' title='Ver si un Elemento esta en la Lista en lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-4241829551012613942</id><published>2008-01-21T15:14:00.000Z</published><updated>2008-01-21T15:15:30.551Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Elimina apariciones de un elemento en un lista en Lenguaje Scheme</title><content type='html'>Utilizando la función equal?, defina una función elimina que dado un elemento y una lista, devuelva dicha lista en la cual se han eliminado todas las apariciones del elemento&lt;br /&gt;&lt;br /&gt;(define (elimina x Lista1)&lt;br /&gt; (if (null? Lista1)&lt;br /&gt;      '()     &lt;br /&gt; (if (eq? x (car Lista1))      &lt;br /&gt;      (elimina x (cdr Lista1))      &lt;br /&gt;      (cons (car Lista1) (elimina x (cdr Lista1))))))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-4241829551012613942?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/4241829551012613942/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=4241829551012613942' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4241829551012613942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4241829551012613942'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/elimina-apariciones-de-un-elemento-en.html' title='Elimina apariciones de un elemento en un lista en Lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1501330941728261169.post-4247188802612522526</id><published>2008-01-21T15:12:00.000Z</published><updated>2008-01-21T15:13:57.063Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scheme'/><title type='text'>Invierte Lista en lenguaje Scheme</title><content type='html'>Utilizando la función concatena (esta en otro post), defina una función invierte que dada una lista devuelva dicha lista con sus elementos en orden inverso.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(define (invierte Lista1)&lt;br /&gt;  (cond           &lt;br /&gt;    ((null? Lista1) '())              &lt;br /&gt;    ((list? Lista1)  (concatena (invierte(cdr Lista1))(list(car Lista1))))&lt;br /&gt;    (else (display '(Debe pasar una lista como parametro)))))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1501330941728261169-4247188802612522526?l=lineaalinea.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lineaalinea.blogspot.com/feeds/4247188802612522526/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1501330941728261169&amp;postID=4247188802612522526' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4247188802612522526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1501330941728261169/posts/default/4247188802612522526'/><link rel='alternate' type='text/html' href='http://lineaalinea.blogspot.com/2008/01/invierte-lista-en-lenguaje-scheme.html' title='Invierte Lista en lenguaje Scheme'/><author><name>Serch</name><uri>http://www.blogger.com/profile/00400149766399041968</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp3.blogger.com/_ZfZzxd8j2oQ/R1yc3SgwmRI/AAAAAAAAAAg/6CW39kMkukk/S220/DSC02745.JPG'/></author><thr:total>0</thr:total></entry></feed>
