<?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:blogger='http://schemas.google.com/blogger/2008' 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-2827804973871198688</id><updated>2026-09-20T14:57:56.390+05:30</updated><category term="Champak"/><category term="Champak Roy"/><category term="Varanasi"/><category term="Pandepur"/><category term="Nai Basti"/><category term="C#"/><category term="Java"/><category term="Basics of C#"/><category term="MS SQL Server"/><category term="Android"/><category term="C"/><category term="Matlab"/><category term="Oracle"/><category term=".NET"/><category term="ASP.NET"/><category term="Handling Pictures in C#"/><category term="Expressions in Matlab"/><category term="Java Interfaces"/><category term="JavaScript"/><category term="MySQL"/><category term="Net Beans"/><category term="PHP"/><category term="Pictures"/><category term="Web Services"/><category term="1&#39;s Complement"/><category term="ASP.NET Membership Provider"/><category term="Accessing Web Camera from C#"/><category term="Android Graphics"/><category term="Android Web Services"/><category term="Attachments"/><category term="Binary Trees"/><category term="Bitmaps"/><category term="Blobs"/><category term="Breadth First Traversal"/><category term="Capturing the Desktop"/><category term="E Mailing"/><category term="JDBC"/><category term="Mailing with Attachments"/><category term="Matrix Multiplication"/><category term="Pictures in Database"/><category term="Plots in Matlab"/><category term="Pointers in C"/><category term="Queue"/><category term="Swapping Variables"/><category term="T-SQL"/><category term="Triggers"/><category term="WCF"/><category term="Windows Applications in C#"/><category term="Windows Communication Foundation"/><category term="2&#39;s Complement"/><category term="3D Plots in Matlab"/><category term="AJAX"/><category term="AJAX Extenders"/><category term="Android Animation"/><category term="Android Database"/><category term="Apache Tomcat"/><category term="Arrays and Pointers"/><category term="Arrays in Javascript"/><category term="Auto Suggestions"/><category term="AutoCompleteExtender"/><category term="Backtracking"/><category term="Binary Addition"/><category term="Binary Subtraction"/><category term="Boolean Algebra"/><category term="C# Windows Application"/><category term="C++"/><category term="Canvas"/><category term="Combinatorial Problem"/><category term="Create As"/><category term="Create Table"/><category term="Cross Join"/><category term="Currency Class in C#"/><category term="Cursor"/><category term="Custom Tags"/><category term="DDL Triggers"/><category term="Database"/><category term="Database Triggers"/><category term="Desktop Draw"/><category term="Djikstra&#39;s Algorithm"/><category term="Eight Queens"/><category term="Eight Queens Problem"/><category term="Encryption"/><category term="Equations"/><category term="Exchanging Variables"/><category term="GDI"/><category term="GDI32"/><category term="Generic Programming in C#"/><category term="Genetic Algorithm in Matlab"/><category term="Graphics Device Interface"/><category term="HTML"/><category term="IComparable"/><category term="Image Filters"/><category term="Inner Join"/><category term="Instead Off Triggers"/><category term="JBOSS"/><category term="JSP"/><category term="Java Beans"/><category term="Java RMI"/><category term="Java Servlets"/><category term="Java Swing"/><category term="Joins"/><category term="Left Join"/><category term="MS Access"/><category term="Matrices in Matlab"/><category term="MousePositions"/><category term="Nain Basti"/><category term="Nested for loops"/><category term="OnDraw"/><category term="Operations Research in Matlab"/><category term="Operator Overloading in C#"/><category term="PDF Document through C#"/><category term="PDF Document through Java"/><category term="PL/SQL"/><category term="Paint"/><category term="Parameter Passing in Android Web Services"/><category term="Params"/><category term="Pass by Reference"/><category term="Pass by Value"/><category term="Pictures in Oracle 10G"/><category term="Polynomials"/><category term="Pyramids in C"/><category term="Right Join"/><category term="Rotating Variables"/><category term="Running Time in Web Page"/><category term="SQL"/><category term="SQLite"/><category term="Select into"/><category term="Session"/><category term="Session Listener"/><category term="Soap"/><category term="Sorting"/><category term="Stack"/><category term="Stored Functions"/><category term="Stored Procedures"/><category term="Strings"/><category term="System.in"/><category term="TLD"/><category term="Tag Handler"/><category term="Templates"/><category term="The Hypatia Software Project"/><category term="The Hypatia Software Solutions"/><category term="The ToString method"/><category term="Threaded Matrix Multiplication"/><category term="Unsafe Code"/><category term="VarArgs"/><category term="Variable No of Parameters"/><category term="Video Capture"/><category term="Weather Web Service"/><category term="Web Camera"/><category term="Windows API in C#"/><category term="strcat"/><category term="strlen"/><category term="web.xml"/><category term="window.setInterval"/><title type='text'>Champak&#39;s Blog</title><subtitle type='html'>I can be contacted at my residence&#xa;Sa -18/132, Nai Basti, Pandepur, Varanasi.&#xa;Phone:+91-9335874326&#xa;E Mail:champak5501@yahoo.com</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Champak Roy</name><uri>http://www.blogger.com/profile/10752392803353895959</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>63</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-999817174977937350</id><published>2026-09-12T09:17:00.910+05:30</published><updated>2026-09-12T09:35:08.728+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arrays in Javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Backtracking"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Combinatorial Problem"/><category scheme="http://www.blogger.com/atom/ns#" term="Eight Queens"/><category scheme="http://www.blogger.com/atom/ns#" term="Eight Queens Problem"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>The Eight Queens Problem : Explanation</title><content type='html'>&lt;div class=&quot;lwc-queens-post&quot;&gt;
  &lt;h1&gt;Eight Queens Problem Using Backtracking&lt;/h1&gt;

  &lt;p&gt;
    The Eight Queens problem is a classic combinatorial problem. The objective
    is to place eight queens on an 8 × 8 chessboard so that no two queens can
    attack each other.
  &lt;/p&gt;

  &lt;p&gt;Therefore, no two queens may share:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;The same row&lt;/li&gt;
    &lt;li&gt;The same column&lt;/li&gt;
    &lt;li&gt;The same diagonal&lt;/li&gt;
  &lt;/ul&gt;

  &lt;h2&gt;How backtracking solves the problem&lt;/h2&gt;

  &lt;p&gt;
    Backtracking builds a solution one row at a time. A queen is placed in a
    safe column, and the algorithm then advances to the next row. If no safe
    position is available, it returns to the previous row and tries another
    position.
  &lt;/p&gt;

  &lt;p&gt;
    If two queens occupy positions
    &lt;code&gt;(row1, column1)&lt;/code&gt; and &lt;code&gt;(row2, column2)&lt;/code&gt;, they attack
    each other when:
  &lt;/p&gt;

  &lt;pre&gt;&lt;code&gt;column1 === column2

Math.abs(row1 - row2) === Math.abs(column1 - column2)&lt;/code&gt;&lt;/pre&gt;

  &lt;div class=&quot;queens-app&quot;&gt;
    &lt;div class=&quot;queens-toolbar&quot;&gt;
      &lt;button id=&quot;queens-generate&quot; type=&quot;button&quot;&gt;Generate Solutions&lt;/button&gt;
      &lt;button id=&quot;queens-previous&quot; type=&quot;button&quot; disabled&gt;Previous&lt;/button&gt;
      &lt;button id=&quot;queens-next&quot; type=&quot;button&quot; disabled&gt;Next&lt;/button&gt;
      &lt;button id=&quot;queens-play&quot; type=&quot;button&quot; disabled&gt;Play&lt;/button&gt;
      &lt;button id=&quot;queens-pause&quot; type=&quot;button&quot; disabled&gt;Pause&lt;/button&gt;
    &lt;/div&gt;

    &lt;p aria-live=&quot;polite&quot; class=&quot;queens-status&quot; id=&quot;queens-status&quot;&gt;
      Select “Generate Solutions” to begin.
    &lt;/p&gt;

    &lt;div
      aria-label=&quot;Eight Queens chessboard&quot;
      class=&quot;queens-board&quot;
      id=&quot;queens-board&quot;
      role=&quot;grid&quot;&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;h2&gt;JavaScript backtracking algorithm&lt;/h2&gt;

  &lt;pre&gt;&lt;code&gt;function solveQueens(row) {
  if (row === 8) {
    solutions.push([...positions]);
    return;
  }

  for (let column = 0; column &amp;lt; 8; column++) {
    if (isSafe(row, column)) {
      positions[row] = column;
      solveQueens(row + 1);
    }
  }
}&lt;/code&gt;&lt;/pre&gt;

  &lt;p&gt;
    The Eight Queens problem has &lt;strong&gt;92 solutions&lt;/strong&gt;. The interactive
    demonstration above lets you inspect them individually or play them
    automatically.
  &lt;/p&gt;

  &lt;p&gt;
    &lt;strong&gt;Learn With Champak:&lt;/strong&gt; This is an excellent example for
    understanding recursion, constraint checking and backtracking.
  &lt;/p&gt;
&lt;/div&gt;

&lt;style&gt;
  .lwc-queens-post {
    color: #20333d;
    font-family: Arial, sans-serif;
    line-height: 1.7;
  }

  .lwc-queens-post h1,
  .lwc-queens-post h2 {
    color: #0f5670;
    line-height: 1.3;
  }

  .lwc-queens-post code {
    font-family: Consolas, Monaco, monospace;
  }

  .lwc-queens-post pre {
    overflow-x: auto;
    padding: 18px;
    color: #eaf8fc;
    background: #102f3c;
    border-radius: 12px;
  }

  .queens-app {
    max-width: 680px;
    margin: 28px auto;
    padding: 18px;
    background: #f1f9fc;
    border: 1px solid #c9e4ee;
    border-radius: 16px;
    box-shadow: 0 8px 24px rgba(20, 83, 108, 0.12);
  }

  .queens-toolbar {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
    margin-bottom: 14px;
  }

  .queens-toolbar button {
    padding: 10px 14px;
    color: #fff;
    background: #176b87;
    border: 0;
    border-radius: 8px;
    font: inherit;
    font-weight: 700;
    cursor: pointer;
  }

  .queens-toolbar button:hover:not(:disabled) {
    background: #0f4f68;
  }

  .queens-toolbar button:disabled {
    cursor: not-allowed;
    opacity: 0.45;
  }

  .queens-status {
    margin: 12px 0;
    color: #315563;
    font-weight: 700;
    text-align: center;
  }

  .queens-board {
    display: grid;
    grid-template-columns: repeat(8, 1fr);
    width: min(100%, 560px);
    margin: auto;
    overflow: hidden;
    border: 5px solid #174b5f;
    border-radius: 8px;
    aspect-ratio: 1;
  }

  .queens-square {
    display: flex;
    align-items: center;
    justify-content: center;
    aspect-ratio: 1;
    font-size: clamp(24px, 8vw, 52px);
    line-height: 1;
  }

  .queens-square.light {
    background: #d9edf4;
  }

  .queens-square.dark {
    background: #397f98;
  }

  .queens-piece {
    color: #172a32;
    filter: drop-shadow(0 2px 1px rgba(255, 255, 255, 0.4));
  }

  @media (max-width: 520px) {
    .queens-app {
      padding: 12px;
    }

    .queens-toolbar button {
      flex: 1 1 calc(50% - 8px);
    }

    #queens-generate {
      flex-basis: 100%;
    }
  }
&lt;/style&gt;

&lt;script&gt;
  (function () {
    &quot;use strict&quot;;

    const size = 8;
    const solutions = [];
    const positions = new Array(size).fill(-1);

    const board = document.getElementById(&quot;queens-board&quot;);
    const status = document.getElementById(&quot;queens-status&quot;);
    const generateButton = document.getElementById(&quot;queens-generate&quot;);
    const previousButton = document.getElementById(&quot;queens-previous&quot;);
    const nextButton = document.getElementById(&quot;queens-next&quot;);
    const playButton = document.getElementById(&quot;queens-play&quot;);
    const pauseButton = document.getElementById(&quot;queens-pause&quot;);

    let currentSolution = 0;
    let player = null;

    function isSafe(row, column) {
      for (let previousRow = 0; previousRow &lt; row; previousRow++) {
        const previousColumn = positions[previousRow];

        const sameColumn = previousColumn === column;
        const sameDiagonal =
          Math.abs(previousRow - row) ===
          Math.abs(previousColumn - column);

        if (sameColumn || sameDiagonal) {
          return false;
        }
      }

      return true;
    }

    function solveQueens(row) {
      if (row === size) {
        solutions.push([...positions]);
        return;
      }

      for (let column = 0; column &lt; size; column++) {
        if (isSafe(row, column)) {
          positions[row] = column;
          solveQueens(row + 1);
        }
      }
    }

    function renderBoard(solution) {
      board.innerHTML = &quot;&quot;;

      for (let row = 0; row &lt; size; row++) {
        for (let column = 0; column &lt; size; column++) {
          const square = document.createElement(&quot;div&quot;);

          square.className =
            &quot;queens-square &quot; +
            ((row + column) % 2 === 0 ? &quot;light&quot; : &quot;dark&quot;);

          square.setAttribute(&quot;role&quot;, &quot;gridcell&quot;);

          if (solution[row] === column) {
            const queen = document.createElement(&quot;span&quot;);
            queen.className = &quot;queens-piece&quot;;
            queen.textContent = &quot;Q&quot;;
            queen.setAttribute(
              &quot;aria-label&quot;,
              &quot;Queen at row &quot; + (row + 1) + &quot;, column &quot; + (column + 1)
            );

            square.appendChild(queen);
          }

          board.appendChild(square);
        }
      }

      status.textContent =
        &quot;Showing solution &quot; +
        (currentSolution + 1) +
        &quot; of &quot; +
        solutions.length;
    }

    function enableControls() {
      previousButton.disabled = false;
      nextButton.disabled = false;
      playButton.disabled = false;
      pauseButton.disabled = false;
    }

    function showNext() {
      if (!solutions.length) return;

      currentSolution = (currentSolution + 1) % solutions.length;
      renderBoard(solutions[currentSolution]);
    }

    function showPrevious() {
      if (!solutions.length) return;

      currentSolution =
        (currentSolution - 1 + solutions.length) % solutions.length;

      renderBoard(solutions[currentSolution]);
    }

    function startPlayer() {
      if (!solutions.length || player) return;

      player = window.setInterval(showNext, 2000);
      status.textContent = &quot;Playing all 92 solutions automatically.&quot;;
    }

    function stopPlayer() {
      if (player) {
        window.clearInterval(player);
        player = null;
      }

      if (solutions.length) {
        renderBoard(solutions[currentSolution]);
      }
    }

    generateButton.addEventListener(&quot;click&quot;, function () {
      stopPlayer();

      if (!solutions.length) {
        solveQueens(0);
      }

      currentSolution = 0;
      renderBoard(solutions[currentSolution]);
      enableControls();
    });

    previousButton.addEventListener(&quot;click&quot;, showPrevious);
    nextButton.addEventListener(&quot;click&quot;, showNext);
    playButton.addEventListener(&quot;click&quot;, startPlayer);
    pauseButton.addEventListener(&quot;click&quot;, stopPlayer);

    renderBoard(new Array(size).fill(-1));
  })();
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/999817174977937350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2026/09/the-eight-queens-problem-explanation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/999817174977937350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/999817174977937350'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2026/09/the-eight-queens-problem-explanation.html' title='The Eight Queens Problem : Explanation'/><author><name>Champak Roy</name><uri>http://www.blogger.com/profile/10752392803353895959</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-3683025192783312700</id><published>2012-06-16T22:58:00.000+05:30</published><updated>2012-06-16T22:58:08.996+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Sorting"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>Some sorting methods in C</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;BubbleSort&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
int i,j,t,a[]={3,9,7,1,4},n=5;&lt;br /&gt;
for(i=0;i&amp;lt;=(n-2);i++)&lt;br /&gt;
for(j=0;j&amp;lt;5-i-1;j++)&lt;br /&gt;
{ if(a[j]&amp;gt;a[j+1])&lt;br /&gt;
&amp;nbsp; {t=a[j];&lt;br /&gt;
&amp;nbsp;&amp;nbsp; a[j]=a[j+1];&lt;br /&gt;
&amp;nbsp;&amp;nbsp; a[j+1]=t;&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
for(i=0;i&amp;lt;5;i++)&lt;br /&gt;
printf(&quot;%d,&quot;,a[i]);&lt;br /&gt;
return(0);&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;CountingSort&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
int i,t,a[]={8,7,4,1,0,5,9,2},b[]={0,0,0,0,0,0,0,0,0,0},j,k=0;&lt;br /&gt;
for(i=0;i&amp;lt;8;i++)&lt;br /&gt;
printf(&quot;%d,&quot;,a[i]);&lt;br /&gt;
printf(&quot;\n\n&quot;);&lt;br /&gt;
for(i=0;i&amp;lt;8;i++)&lt;br /&gt;
{ t=a[i];&lt;br /&gt;
&amp;nbsp; b[t]=b[t]+1;&lt;br /&gt;
}&lt;br /&gt;
for(i=0;i&amp;lt;10;i++)&lt;br /&gt;
printf(&quot;%d,&quot;,b[i]);&lt;br /&gt;
printf(&quot;\n\n&quot;);&lt;br /&gt;
for(i=0;i&amp;lt;10;i++)&lt;br /&gt;
{ if(b[i]==0)&lt;br /&gt;
&amp;nbsp; continue;&lt;br /&gt;
&amp;nbsp; t=b[i];&lt;br /&gt;
&amp;nbsp; for(j=0;j&amp;lt;t;j++)&lt;br /&gt;
&amp;nbsp; {a[k]=i;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; k++;&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
for(i=0;i&amp;lt;8;i++)&lt;br /&gt;
printf(&quot;%d,&quot;,a[i]);&lt;br /&gt;
printf(&quot;\n\n&quot;);&lt;br /&gt;
/*Time complexity 3n*/&lt;br /&gt;
return(0);&lt;br /&gt;
}&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;HeapSort&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
int i,a[]={0,68,-7,45,6,57},n=6,t,k,l;&lt;br /&gt;
int b[n+1];&lt;br /&gt;
int left,right,pos,j,parent;&lt;br /&gt;
&lt;br /&gt;
for(i=0;i&amp;lt;6;i++)&lt;br /&gt;
{&lt;br /&gt;
b[i+1]=a[i];&lt;br /&gt;
j=i+1;&lt;br /&gt;
while(1)&lt;br /&gt;
{&lt;br /&gt;
parent=j/2;&lt;br /&gt;
if(parent&amp;lt;1)&lt;br /&gt;
break;&lt;br /&gt;
if(b[parent]&amp;gt;=b[j])&lt;br /&gt;
break;&lt;br /&gt;
t=b[parent];&lt;br /&gt;
b[parent]=b[j];&lt;br /&gt;
b[j]=t;&lt;br /&gt;
j=parent;&lt;br /&gt;
} &lt;br /&gt;
}&lt;br /&gt;
for(i=1;i&amp;lt;7;i++)&lt;br /&gt;
printf(&quot;%d,&quot;,b[i]);&lt;br /&gt;
printf(&quot;\n\n&quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for(i=1;i&amp;lt;=n;i++)&lt;br /&gt;
{&lt;br /&gt;
a[n-i]=b[1];&lt;br /&gt;
l=n-i+1;&lt;br /&gt;
b[1]=b[l];&lt;br /&gt;
l--;&lt;br /&gt;
j=1;&lt;br /&gt;
while(1)&lt;br /&gt;
{&lt;br /&gt;
left=2*j;&lt;br /&gt;
right=2*j+1;&lt;br /&gt;
if(left&amp;gt;l)&lt;br /&gt;
break;&lt;br /&gt;
if(right&amp;gt;l)&lt;br /&gt;
{&lt;br /&gt;
if(b[j]&amp;gt;b[left])&lt;br /&gt;
break;&lt;br /&gt;
t=b[j];&lt;br /&gt;
b[j]=b[left];&lt;br /&gt;
b[left]=t;&lt;br /&gt;
break;&lt;br /&gt;
}&lt;br /&gt;
if(b[left]&amp;gt;b[right])&lt;br /&gt;
pos=left;&lt;br /&gt;
else&lt;br /&gt;
pos=right;&lt;br /&gt;
if(b[j]&amp;gt;b[pos])&lt;br /&gt;
break;&lt;br /&gt;
t=b[pos];&lt;br /&gt;
b[pos]=b[j];&lt;br /&gt;
b[j]=t;&lt;br /&gt;
j=pos;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for(i=0;i&amp;lt;6;i++)&lt;br /&gt;
printf(&quot;%d,&quot;,a[i]);&lt;br /&gt;
printf(&quot;\n\n&quot;);&lt;br /&gt;
&lt;br /&gt;
/*Time complexity nlog(base 2)n*/&lt;br /&gt;
/*For Quick and Merge too.*/&lt;br /&gt;
return(0);&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;InsertionSort&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
int i,j,t,a[]={5,9,3,0,1},n=5;&lt;br /&gt;
for(i=0;i&amp;lt;=n-2;i++)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp; if(a[i]&amp;lt;=a[i+1])&lt;br /&gt;
&amp;nbsp; continue;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; j=i+1;&lt;br /&gt;
&amp;nbsp; t=a[j];&lt;br /&gt;
&amp;nbsp; while(j&amp;gt;=1 &amp;amp;&amp;amp; a[j-1]&amp;gt;t)&lt;br /&gt;
&amp;nbsp; { a[j]=a[j-1];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; j--;&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
&amp;nbsp; a[j]=t;&lt;br /&gt;
}&lt;br /&gt;
for(i=0;i&amp;lt;n;i++)&lt;br /&gt;
printf(&quot;%d,&quot;,a[i]);&lt;br /&gt;
return(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;MergeSort&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void mergesort(int a[],int left,int right);&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int i;&lt;br /&gt;
int a[]={9,6,8,2,5,90,-8,4,1,10};&lt;br /&gt;
mergesort(a,0,9);&lt;br /&gt;
for(i=0;i&amp;lt;10;i++)&lt;br /&gt;
printf(&quot;%d,&quot;,a[i]);&lt;br /&gt;
printf(&quot;\n\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
void mergesort(int a[],int left,int right)&lt;br /&gt;
{&lt;br /&gt;
int c[10];&lt;br /&gt;
int p,mid,i,j,k;&lt;br /&gt;
if(left&amp;gt;=right)&lt;br /&gt;
return;&lt;br /&gt;
mid=(left+right)/2;&lt;br /&gt;
mergesort(a,left,mid);&lt;br /&gt;
mergesort(a,mid+1,right);&lt;br /&gt;
i=left;&lt;br /&gt;
j=mid+1;&lt;br /&gt;
k=0;&lt;br /&gt;
while(i&amp;lt;=mid &amp;amp;&amp;amp; j&amp;lt;=right)&lt;br /&gt;
{&lt;br /&gt;
if(a[i]&amp;lt;=a[j])&lt;br /&gt;
{&lt;br /&gt;
c[k]=a[i];&lt;br /&gt;
i++;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
c[k]=a[j];&lt;br /&gt;
j++;&lt;br /&gt;
}&lt;br /&gt;
k++;&lt;br /&gt;
}&lt;br /&gt;
if(i&amp;lt;=mid)&lt;br /&gt;
for(p=i;p&amp;lt;=mid;p++)&lt;br /&gt;
{&lt;br /&gt;
c[k]=a[p];&lt;br /&gt;
k++;&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
for(p=j;p&amp;lt;=right;p++)&lt;br /&gt;
{&lt;br /&gt;
c[k]=a[p];&lt;br /&gt;
k++;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for(i=left;i&amp;lt;=right;i++)&lt;br /&gt;
a[i]=c[i-left];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
printf(&quot;\nleft=%d&amp;nbsp; right=%d\n&quot;,left,right);&lt;br /&gt;
&lt;br /&gt;
for(i=0;i&amp;lt;10;i++)&lt;br /&gt;
printf(&quot;%d,&quot;,a[i]);&lt;br /&gt;
printf(&quot;\n\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;QuickSort&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
void quicksort(int a[],int left,int right);&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
int i,fp,pivot,t,a[]={9,1,17,3,10,-8,5},n=7;&lt;br /&gt;
quicksort(a,0,n-1);&lt;br /&gt;
for(i=0;i&amp;lt;n;i++)&lt;br /&gt;
printf(&quot;%d,&quot;,a[i]);&lt;br /&gt;
return(0);&lt;br /&gt;
}&lt;br /&gt;
void quicksort(int a[],int left,int right)&lt;br /&gt;
{&lt;br /&gt;
int i,fp,pivot,t;&lt;br /&gt;
if(left&amp;gt;=right)&lt;br /&gt;
return;&lt;br /&gt;
fp=left;&lt;br /&gt;
pivot=a[left];&lt;br /&gt;
&lt;br /&gt;
for(i=left + 1;i&amp;lt;=right;i++)&lt;br /&gt;
{&lt;br /&gt;
if(a[i]&amp;gt;=pivot)&lt;br /&gt;
continue;&lt;br /&gt;
&lt;br /&gt;
fp++;&lt;br /&gt;
t=a[i];&lt;br /&gt;
a[i]=a[fp];&lt;br /&gt;
a[fp]=t;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
t=a[fp];&lt;br /&gt;
a[fp]=pivot;&lt;br /&gt;
a[left]=t;&lt;br /&gt;
quicksort(a,left,fp-1);&lt;br /&gt;
quicksort(a,fp+1,right);&lt;br /&gt;
}&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;SelecionSort&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
int i,j,smallpos,a[]={3,9,7,1,4},t;&lt;br /&gt;
for(i=0;i&amp;lt;1;i++)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp; smallpos=i;&lt;br /&gt;
&amp;nbsp; for(j=i+1;j&amp;lt;=4;j++)&lt;br /&gt;
&amp;nbsp; if(a[j]&amp;lt;a[smallpos])&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; smallpos=j;&lt;br /&gt;
&amp;nbsp; t=a[smallpos];&lt;br /&gt;
&amp;nbsp; a[smallpos]=a[i];&lt;br /&gt;
&amp;nbsp; a[i]=t;&lt;br /&gt;
&amp;nbsp; a[0]=a[i];&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
}&lt;br /&gt;
printf(&quot;%d&quot;,a[0]);&lt;br /&gt;
return(0);&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/3683025192783312700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2012/06/some-sorting-methods-in-c.html#comment-form' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/3683025192783312700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/3683025192783312700'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2012/06/some-sorting-methods-in-c.html' title='Some sorting methods in C'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-9157160073226945153</id><published>2012-06-16T22:22:00.000+05:30</published><updated>2012-06-16T22:22:39.551+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="MousePositions"/><title type='text'>Detecting mouse positions through JavaScript</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
document.onmousemove=f1;&lt;br /&gt;
document.onmousedown=f2;&lt;br /&gt;
document.onmouseup=f3;&lt;br /&gt;
function f1(event)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp; var mouseX = event.clientX + document.body.scrollLeft;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var mouseY = event.clientY + document.body.scrollTop;&lt;br /&gt;
document.getElementById(&quot;currentx&quot;).value=mouseX;&lt;br /&gt;
document.getElementById(&quot;currenty&quot;).value=mouseY;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function f2(event)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp; var mouseX = event.clientX + document.body.scrollLeft;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var mouseY = event.clientY + document.body.scrollTop;&lt;br /&gt;
document.getElementById(&quot;downx&quot;).value=mouseX;&lt;br /&gt;
document.getElementById(&quot;downy&quot;).value=mouseY;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function f3(event)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp; var mouseX = event.clientX + document.body.scrollLeft;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var mouseY = event.clientY + document.body.scrollTop;&lt;br /&gt;
document.getElementById(&quot;upx&quot;).value=mouseX;&lt;br /&gt;
document.getElementById(&quot;upy&quot;).value=mouseY;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;table width=&quot;100%&quot; border=&quot;2&quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=&quot;4&quot; align=&quot;center&quot;&amp;gt;Mouse Data&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Current Mouse X&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;input type=&quot;text&quot; id=&quot;currentx&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Current Mouse Y&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;input type=&quot;text&quot; id=&quot;currenty&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Down Mouse X&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;input type=&quot;text&quot; id=&quot;downx&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Down Mouse Y&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;input type=&quot;text&quot; id=&quot;downy&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Up Mouse X&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;input type=&quot;text&quot; id=&quot;upx&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Up Mouse Y&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;input type=&quot;text&quot; id=&quot;upy&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFtEo8KT6cIsVm2-LUX56umn5xyee9V6qfwbkQ26rMGxmj9mpbnoo_PtXX6D5ZFTUT77TPlr0w_kc_NhdMGcP4WidMoxk6QRyZf2BnNcl8E3tInFTLwYgM-4YN3i8Otp_UjijLDyU7_6bN/s1600/untitled.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFtEo8KT6cIsVm2-LUX56umn5xyee9V6qfwbkQ26rMGxmj9mpbnoo_PtXX6D5ZFTUT77TPlr0w_kc_NhdMGcP4WidMoxk6QRyZf2BnNcl8E3tInFTLwYgM-4YN3i8Otp_UjijLDyU7_6bN/s320/untitled.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/9157160073226945153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2012/06/detecting-mouse-positions-through.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/9157160073226945153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/9157160073226945153'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2012/06/detecting-mouse-positions-through.html' title='Detecting mouse positions through JavaScript'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFtEo8KT6cIsVm2-LUX56umn5xyee9V6qfwbkQ26rMGxmj9mpbnoo_PtXX6D5ZFTUT77TPlr0w_kc_NhdMGcP4WidMoxk6QRyZf2BnNcl8E3tInFTLwYgM-4YN3i8Otp_UjijLDyU7_6bN/s72-c/untitled.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-1070731818157353378</id><published>2012-06-09T10:58:00.001+05:30</published><updated>2012-06-09T20:54:28.224+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="System.in"/><category scheme="http://www.blogger.com/atom/ns#" term="The Hypatia Software Solutions"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>Methods of Console IO in Java</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;In this Post we shall study the methods of Console IO in Java. We shall examine 4 different methods for doing so.However, first of all we require some background information:-&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;The Standard Input, Standard Output &amp;amp; Standard Error&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;As , we all know every process is given three open streams by the operating system. Namely , Standard Input,Standard Output and Standard Error.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Standard Input:- &lt;/u&gt;The standard input is known as stdin in C, cin in C++ and System.in in Java. By default it is the keyboard but it can be reassigned. System.in is an object of type java.io.InputStream and provides a method read(), which reads the next int from the input source. It returns -1 on End Of File (EOF). From the keyboard we can simulate EOF by pressing CTRL + Z .This will show ^Z on the screen.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Standard Output:-&lt;/b&gt;&lt;/u&gt; &lt;b&gt;The standard output is known as stdout in C,cout in C++ and System.out in Java. By default it is the monitor but it can be redirected. It is represented in Java by an object of type java.io.PrintStream.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Standard Error:-&lt;/b&gt;&lt;/u&gt; &lt;b&gt;The standard error is known as stderr  in C,cerr in C++ and System.err in Java. By default it is the monitor  but it can be redirected. It is represented in Java by an object of type  java.io.PrintStream. &lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Reading Input Directly from the Standard Input using System.in&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;DirectIO.java&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;public class DirectIO&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
public static void main(String[] args)&lt;br /&gt;
{&lt;br /&gt;
//Enter the testing code here&lt;br /&gt;
}&lt;br /&gt;
public static int readInt()&lt;br /&gt;
{&lt;br /&gt;
return Integer.parseInt(readLine());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public static String readString()&lt;br /&gt;
{&lt;br /&gt;
try&lt;br /&gt;
{&lt;br /&gt;
String s=&quot;&quot;;&lt;br /&gt;
while(true)&lt;br /&gt;
{&lt;br /&gt;
int n=System.in.read();&lt;br /&gt;
if(n==-1 || n==13 || n==&#39; &#39;)&lt;br /&gt;
return s.trim();&lt;br /&gt;
char ch=(char)n;&lt;br /&gt;
s=s+ch;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
catch(Exception ex)&lt;br /&gt;
{&lt;br /&gt;
return &quot;&quot;;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public static String readLine()&lt;br /&gt;
{&lt;br /&gt;
try&lt;br /&gt;
{&lt;br /&gt;
String s=&quot;&quot;;&lt;br /&gt;
while(true)&lt;br /&gt;
{&lt;br /&gt;
int n=System.in.read();&lt;br /&gt;
if(n==-1 || n==13)&lt;br /&gt;
return s.trim();&lt;br /&gt;
char ch=(char)n;&lt;br /&gt;
s=s+ch;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
catch(Exception ex)&lt;br /&gt;
{&lt;br /&gt;
return &quot;&quot;;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;u&gt;&lt;b&gt;Explanation:&lt;/b&gt;&lt;/u&gt;&lt;i&gt;&lt;b&gt; &lt;/b&gt;&lt;/i&gt;&lt;b&gt;In the&lt;/b&gt;&lt;i&gt;&lt;b&gt; &lt;/b&gt;&lt;/i&gt;&lt;b&gt;the readLine and readString methods we simply read the next input from System.in. This is an int and is stored in n. If n is 13 we have &amp;lt;Enter&amp;gt; being pressed , while n==-1 means an EOF. In both cases we return the current Line. Till these conditions are met , we simply append the next character to the input. &lt;br /&gt;
For readString, we also check for the space character &#39; &#39;.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;b&gt;For readInt, we simply convert the already read Line or String to the required type. &lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;u&gt;&lt;b&gt;For&lt;/b&gt;&lt;/u&gt;&lt;b&gt;&lt;u&gt; reading and printing a line use:-&lt;/u&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;String str=readLine();&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;System.out.println(str);&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;u&gt;&lt;b&gt;For&lt;/b&gt;&lt;/u&gt;&lt;b&gt;&lt;u&gt; reading and printing an int use:-&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;int str=readInt();&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;i&gt;&lt;b&gt;System.out.println(str);&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;For&lt;/b&gt;&lt;/u&gt;&lt;b&gt;&lt;u&gt; reading and printing a Stringuse:-&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;String str=readString();&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;i&gt;&lt;b&gt;System.out.println(str);&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;For&lt;/b&gt;&lt;/u&gt;&lt;b&gt;&lt;u&gt; reading and printing a list of Strings :-&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;String str=readString();&lt;br /&gt;
while(str!=&quot;&quot;)&lt;br /&gt;
{&lt;br /&gt;
System.out.println(str);&lt;br /&gt;
str=readString();&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Using the java.util.Scanner class&lt;br /&gt;
&lt;/u&gt;The Scanner class in java.util is a very versatile instrument for text input. It can read all types of data , and from a variety of data sources.The Scanner essentially has two groups of methods:-&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;
&lt;/u&gt;1) The hasNextType group. This group returns true if some input of the given type is available and returns false otherwise. &lt;br /&gt;
Some functions are hasNext for Objects, hasNextLine for Lines,hasNextInt for integers, and so on.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
2) The hasType group. This group returns the next type element from the input source.Some examples are:-&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;next reads Object, nextLine reads Line, nextInt reads Integers and so on.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Here is some sample code:-&lt;br /&gt;
&lt;/u&gt;&lt;i&gt;&lt;br /&gt;
import java.util.Scanner;&lt;br /&gt;
public class ScannerIO&lt;br /&gt;
{&lt;br /&gt;
public static void main( String[] args)&lt;br /&gt;
{&lt;br /&gt;
Scanner s=new Scanner(System.in);&lt;br /&gt;
int a =s.nextInt();&lt;br /&gt;
System.out.println(a);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To be continued...&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;
&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/1070731818157353378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2012/06/methods-of-console-io-in-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/1070731818157353378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/1070731818157353378'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2012/06/methods-of-console-io-in-java.html' title='Methods of Console IO in Java'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-6841114968603832150</id><published>2012-06-02T17:07:00.041+05:30</published><updated>2012-06-02T20:23:58.611+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Nested for loops"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Pyramids in C"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>Drawing Pyramids</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFEWOMMZqaggHVaq_XVgPuZsBF_7RWRuhviVXZ7etaLBHzGjFhunNeiNCal09rwomSO65EKIFYQtntQY3NMBvar1A4RikDmqAgwWLebo6stXMhvyr1vqiZND5S0iC25A9irHE24qxxjeKu/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;255&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFEWOMMZqaggHVaq_XVgPuZsBF_7RWRuhviVXZ7etaLBHzGjFhunNeiNCal09rwomSO65EKIFYQtntQY3NMBvar1A4RikDmqAgwWLebo6stXMhvyr1vqiZND5S0iC25A9irHE24qxxjeKu/s320/1.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;span style=&quot;color: black;&quot;&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void main()&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
int n=5,i,j,k;&lt;br /&gt;
&lt;br /&gt;
clrscr();&lt;br /&gt;
&lt;br /&gt;
for(i=1;i&amp;lt;=n;i++)&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
for(j=1;j&amp;lt;=n-1;j++)&lt;br /&gt;
&lt;br /&gt;
printf(&quot; &quot;);&lt;br /&gt;
&lt;br /&gt;
for(k=1;k&amp;lt;=i;k++)&lt;br /&gt;
&lt;br /&gt;
printf(&quot;*&quot;);&lt;br /&gt;
&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
getch();&lt;br /&gt;
&lt;br /&gt;
}&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7ieS7uQ1nSP1UMZWecJo_eGCsK8KNfYWV6FSw2pDVIfB73SjsdhAomg21UEX72rq0qElCJnZrHHyzYUNSdsNiP3aeRIRwB5ajaGv_tHgkAfB-nQ0vnk4p8m1aBel4hDghFtctszRDSUXg/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;171&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7ieS7uQ1nSP1UMZWecJo_eGCsK8KNfYWV6FSw2pDVIfB73SjsdhAomg21UEX72rq0qElCJnZrHHyzYUNSdsNiP3aeRIRwB5ajaGv_tHgkAfB-nQ0vnk4p8m1aBel4hDghFtctszRDSUXg/s320/1.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int n=5,i,j,k;&lt;br /&gt;
clrscr();&lt;br /&gt;
for(i=1;i&amp;lt;=n;i++)&lt;br /&gt;
{&lt;br /&gt;
for(j=1;j&amp;lt;=0;j++)&lt;br /&gt;
printf(&quot; &quot;);&lt;br /&gt;
for(k=1;k&amp;lt;=i;k++)&lt;br /&gt;
printf(&quot;*&quot;);&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhvjIWwNMyVqe1JCibinCZK5YR-RzkoGuSk_SxRx-v9v9OTqkkMv3JGQ6vIUyH50kwiLELFSbX_W-UdmztSc2YIaNRInULTJRkiLpXq170SGqThjFUir_zLLEwleS__BqlMa_YCR58q9gJ/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;87&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhvjIWwNMyVqe1JCibinCZK5YR-RzkoGuSk_SxRx-v9v9OTqkkMv3JGQ6vIUyH50kwiLELFSbX_W-UdmztSc2YIaNRInULTJRkiLpXq170SGqThjFUir_zLLEwleS__BqlMa_YCR58q9gJ/s320/1.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlM7VPaq4j3Swy8Y7D4rhPM2BX5FsLcCEaiwUqR5XKgBayzu9e-SfHX2xVAXEw3KcRTqpalnRWy40U3c388PwUzRJQT4v3dTMq5RhECLZthpPgfxQHyRxCVQzr7S8WVKJa1d-_AJ0tN1zX/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEpgp82O__PJNCquMLTH6VcWsdn4squ5hS5kNBL7gDCyHZQ0tMRU5-Q2JhWIpdxnmwwxZR6fhFFoL9_C3FqXy4ve8c8vyFx02aBwB-EFfoutNxVOrJkV8OkE8ZEBm7ST0ZOE7MMU9_JLpK/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/div&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int n=5,i,j,k;&lt;br /&gt;
clrscr();&lt;br /&gt;
for(i=1;i&amp;lt;=n;i++)&lt;br /&gt;
{&lt;br /&gt;
for(j=1;j&amp;lt;=n-i;j++)&lt;br /&gt;
printf(&quot; &quot;);&lt;br /&gt;
for(k=1;k&amp;lt;=2*i-1;k++)&lt;br /&gt;
printf(&quot;*&quot;);&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEpgp82O__PJNCquMLTH6VcWsdn4squ5hS5kNBL7gDCyHZQ0tMRU5-Q2JhWIpdxnmwwxZR6fhFFoL9_C3FqXy4ve8c8vyFx02aBwB-EFfoutNxVOrJkV8OkE8ZEBm7ST0ZOE7MMU9_JLpK/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;133&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEpgp82O__PJNCquMLTH6VcWsdn4squ5hS5kNBL7gDCyHZQ0tMRU5-Q2JhWIpdxnmwwxZR6fhFFoL9_C3FqXy4ve8c8vyFx02aBwB-EFfoutNxVOrJkV8OkE8ZEBm7ST0ZOE7MMU9_JLpK/s320/1.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;math.h&amp;gt;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int n=5,i,j,k;&lt;br /&gt;
int x,y;&lt;br /&gt;
clrscr();&lt;br /&gt;
for(i=1;i&amp;lt;=n;i++)&lt;br /&gt;
{&lt;br /&gt;
for(j=1;j&amp;lt;=n-i;j++)&lt;br /&gt;
printf(&quot; &quot;);&lt;br /&gt;
for(k=1;k&amp;lt;=2*i-1;k++)&lt;br /&gt;
{&lt;br /&gt;
x=i-abs(i-k);&lt;br /&gt;
printf(&quot;%d&quot;,x);&lt;br /&gt;
}&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEpgp82O__PJNCquMLTH6VcWsdn4squ5hS5kNBL7gDCyHZQ0tMRU5-Q2JhWIpdxnmwwxZR6fhFFoL9_C3FqXy4ve8c8vyFx02aBwB-EFfoutNxVOrJkV8OkE8ZEBm7ST0ZOE7MMU9_JLpK/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEpgp82O__PJNCquMLTH6VcWsdn4squ5hS5kNBL7gDCyHZQ0tMRU5-Q2JhWIpdxnmwwxZR6fhFFoL9_C3FqXy4ve8c8vyFx02aBwB-EFfoutNxVOrJkV8OkE8ZEBm7ST0ZOE7MMU9_JLpK/s1600/1.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj20NUsvKNrdQlIeMKP4HSLko7H4YckjbuBLyowCEYuU0dYhgSpL6bHchI-2v4HIcdR_5TTBT9Jlw1bem_HxtWh-L00vHc04C6El-J1MbUW_FBsmS1g9T1c2mPTZbFcJ4gfc0ZHH800bynN/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;123&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj20NUsvKNrdQlIeMKP4HSLko7H4YckjbuBLyowCEYuU0dYhgSpL6bHchI-2v4HIcdR_5TTBT9Jlw1bem_HxtWh-L00vHc04C6El-J1MbUW_FBsmS1g9T1c2mPTZbFcJ4gfc0ZHH800bynN/s320/1.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirqvN2pQHqZr_OOTMAWxhwVhMgfZ1J7wSTyNNkX3fMurkBcAN3cDiTIvs6m15fqn09BDVpCdTYIlvjWlyQMJ2F6SJpIyTUNp44X9_NwXAk611_WKgmAJqdeTVwIWbvZcutgzXn3dpVyp6b/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/div&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;math.h&amp;gt;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int n=5,i,j,k;&lt;br /&gt;
int x,y;&lt;br /&gt;
clrscr();&lt;br /&gt;
for(i=1;i&amp;lt;=n;i++)&lt;br /&gt;
{&lt;br /&gt;
for(j=1;j&amp;lt;=n-i;j++)&lt;br /&gt;
printf(&quot; &quot;);&lt;br /&gt;
for(k=1;k&amp;lt;=2*i-1;k++)&lt;br /&gt;
{&lt;br /&gt;
x=i-abs(i-k);&lt;br /&gt;
printf(&quot;%c&quot;,&#39;A&#39; + x -1);&lt;br /&gt;
}&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirqvN2pQHqZr_OOTMAWxhwVhMgfZ1J7wSTyNNkX3fMurkBcAN3cDiTIvs6m15fqn09BDVpCdTYIlvjWlyQMJ2F6SJpIyTUNp44X9_NwXAk611_WKgmAJqdeTVwIWbvZcutgzXn3dpVyp6b/s1600/1.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;154&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirqvN2pQHqZr_OOTMAWxhwVhMgfZ1J7wSTyNNkX3fMurkBcAN3cDiTIvs6m15fqn09BDVpCdTYIlvjWlyQMJ2F6SJpIyTUNp44X9_NwXAk611_WKgmAJqdeTVwIWbvZcutgzXn3dpVyp6b/s320/1.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;math.h&amp;gt;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int n=5,i,j,k;&lt;br /&gt;
int x,y;&lt;br /&gt;
clrscr();&lt;br /&gt;
for(i=n;i&amp;gt;=1;i--)&lt;br /&gt;
{&lt;br /&gt;
for(j=1;j&amp;lt;=n-i;j++)&lt;br /&gt;
printf(&quot; &quot;);&lt;br /&gt;
for(k=1;k&amp;lt;=2*i-1;k++)&lt;br /&gt;
{&lt;br /&gt;
x=i-abs(i-k);&lt;br /&gt;
printf(&quot;%c&quot;,&#39;A&#39; + x -1);&lt;br /&gt;
}&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTKqPxi03acmchJO2Es_PubHXIO1vfVcTkus3FF9EUbJKZrtKQq3cpuk5-vOdcNDpi0JJbNQnIK5taFgAsUGFmWW_D1msDDCyhpHuGInVbJMKcBZED2D_Bfj9uKW75G_VsoYifoSi8dZ5A/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;125&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTKqPxi03acmchJO2Es_PubHXIO1vfVcTkus3FF9EUbJKZrtKQq3cpuk5-vOdcNDpi0JJbNQnIK5taFgAsUGFmWW_D1msDDCyhpHuGInVbJMKcBZED2D_Bfj9uKW75G_VsoYifoSi8dZ5A/s320/1.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;math.h&amp;gt;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int n=5,i,j,k;&lt;br /&gt;
clrscr();&lt;br /&gt;
for(i=1;i&amp;lt;=n;i++)&lt;br /&gt;
{&lt;br /&gt;
for(j=1;j&amp;lt;=n-i;j++)&lt;br /&gt;
printf(&quot; &quot;);&lt;br /&gt;
for(k=1;k&amp;lt;=i;k++)&lt;br /&gt;
{&lt;br /&gt;
printf(&quot;* &quot;);&lt;br /&gt;
}&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw_MX24AKHF-2Qt6C_RekJKSAr16ozIBsvbhmHG5Z8w6i1Tyxei4Bh9hXRbwOTDa5mXv2R8kcYuyPMr8PHEUkUJa6kZiqY0FV_7mFn4xHVB5hXyCDEUo94t4PfQ_z1p79vwVGFLpYFDjFH/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;105&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw_MX24AKHF-2Qt6C_RekJKSAr16ozIBsvbhmHG5Z8w6i1Tyxei4Bh9hXRbwOTDa5mXv2R8kcYuyPMr8PHEUkUJa6kZiqY0FV_7mFn4xHVB5hXyCDEUo94t4PfQ_z1p79vwVGFLpYFDjFH/s320/1.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;math.h&amp;gt;&lt;br /&gt;
int pascalvalue(int y,int x);&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int n=5,i,j,k;&lt;br /&gt;
clrscr();&lt;br /&gt;
for(i=1;i&amp;lt;=n;i++)&lt;br /&gt;
{&lt;br /&gt;
for(j=1;j&amp;lt;=n-i;j++)&lt;br /&gt;
printf(&quot; &quot;);&lt;br /&gt;
for(k=1;k&amp;lt;=i;k++)&lt;br /&gt;
{&lt;br /&gt;
printf(&quot;%d &quot;,pascalvalue(i,k));&lt;br /&gt;
}&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int pascalvalue(int y,int x)&lt;br /&gt;
{&lt;br /&gt;
if(x==1)&lt;br /&gt;
return(1);&lt;br /&gt;
if(x==y)&lt;br /&gt;
return(1);&lt;br /&gt;
return(pascalvalue(y-1,x-1) + pascalvalue(y-1,x));&lt;br /&gt;
}&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4H1rNPCXne8A3EQMnEEsXyP59OWhi1qMIvCjzfF-UPzcFSOcj5MaDtqg8TBYx50G2PQZoNL4jASdcMAoLZpO6_zVyoZQKJCtNG2TVVlidN8spBkspWVuCa7a7WzhYcCRw65U0fY9EIiSr/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;69&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4H1rNPCXne8A3EQMnEEsXyP59OWhi1qMIvCjzfF-UPzcFSOcj5MaDtqg8TBYx50G2PQZoNL4jASdcMAoLZpO6_zVyoZQKJCtNG2TVVlidN8spBkspWVuCa7a7WzhYcCRw65U0fY9EIiSr/s320/1.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;math.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int n=5,i,j,k;&lt;br /&gt;
int mid=(n+1)/2,x,y;&lt;br /&gt;
clrscr();&lt;br /&gt;
for(i=1;i&amp;lt;=n;i++)&lt;br /&gt;
{&lt;br /&gt;
x=abs(mid-i);&lt;br /&gt;
y=mid-x;&lt;br /&gt;
for(j=1;j&amp;lt;=y;j++)&lt;br /&gt;
printf(&quot; &quot;);&lt;br /&gt;
for(k=1;k&amp;lt;=2*x+1;k++)&lt;br /&gt;
printf(&quot;*&quot;);&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_5SVCFy22DsCYhhw7cxRhyphenhyphenjctbTpIHkPzU-dyunlhJZvvdm1bSil13EUQp1rrpYRb1oXXVmBU0-y1HzvmG63xIfCzM51iAZ3yA2QtfZokxuIRzSowEJvf95BkVGgS7-LdowH3Jz1EHOoI/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;79&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_5SVCFy22DsCYhhw7cxRhyphenhyphenjctbTpIHkPzU-dyunlhJZvvdm1bSil13EUQp1rrpYRb1oXXVmBU0-y1HzvmG63xIfCzM51iAZ3yA2QtfZokxuIRzSowEJvf95BkVGgS7-LdowH3Jz1EHOoI/s320/1.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;math.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int n=5,i,j,k;&lt;br /&gt;
int mid=(n+1)/2,x,y,z;&lt;br /&gt;
clrscr();&lt;br /&gt;
for(i=1;i&amp;lt;=n;i++)&lt;br /&gt;
{&lt;br /&gt;
x=abs(mid-i);&lt;br /&gt;
y=mid-x;&lt;br /&gt;
for(j=1;j&amp;lt;=y;j++)&lt;br /&gt;
printf(&quot; &quot;);&lt;br /&gt;
for(k=1;k&amp;lt;=2*x+1;k++)&lt;br /&gt;
{&lt;br /&gt;
z=x-abs(x+1-k)+1;&lt;br /&gt;
printf(&quot;%d&quot;,z);&lt;br /&gt;
}&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKdwOZ2ieWWPwc-GO9cqyazxLKa78UO3p20JcsGPqa4YWf0VzRzo7tZ4bl3PpSuOumycQ7pzte0bdnutPWMlP7ots6N52qrijRGzBFlQewcOcK9JZ5LtFf7YXluwyGpimpq61Km9GbV2wD/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;122&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKdwOZ2ieWWPwc-GO9cqyazxLKa78UO3p20JcsGPqa4YWf0VzRzo7tZ4bl3PpSuOumycQ7pzte0bdnutPWMlP7ots6N52qrijRGzBFlQewcOcK9JZ5LtFf7YXluwyGpimpq61Km9GbV2wD/s320/1.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;math.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int n=5,i,j,k;&lt;br /&gt;
int mid=(n+1)/2,x,y,z;&lt;br /&gt;
clrscr();&lt;br /&gt;
for(i=1;i&amp;lt;=n;i++)&lt;br /&gt;
{&lt;br /&gt;
x=abs(mid-i);&lt;br /&gt;
y=mid-x;&lt;br /&gt;
for(j=1;j&amp;lt;=y;j++)&lt;br /&gt;
printf(&quot; &quot;);&lt;br /&gt;
for(k=1;k&amp;lt;=2*x+1;k++)&lt;br /&gt;
{&lt;br /&gt;
z=x-abs(x+1-k);&lt;br /&gt;
printf(&quot;%c&quot;,&#39;A&#39; + z);&lt;br /&gt;
}&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRq3PsfZzoewmyExD3fwy_pARIn7hlxmGi6AzEDJ-9o67yFgybiD6HBLWflyNoPtM5ZX0YWP8GzmH7HKnX_ThFDn9PT_mqyIVDyg3a9ApzA7ZrxisZh75eT_DHcm0NP_kx-tnWOU73bOYp/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRq3PsfZzoewmyExD3fwy_pARIn7hlxmGi6AzEDJ-9o67yFgybiD6HBLWflyNoPtM5ZX0YWP8GzmH7HKnX_ThFDn9PT_mqyIVDyg3a9ApzA7ZrxisZh75eT_DHcm0NP_kx-tnWOU73bOYp/s1600/1.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;math.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int n=5,i,j,k;&lt;br /&gt;
int mid=(n+1)/2,x,y,l,r;&lt;br /&gt;
clrscr();&lt;br /&gt;
for(i=1;i&amp;lt;=n;i++)&lt;br /&gt;
{&lt;br /&gt;
x=abs(mid-i)+1;&lt;br /&gt;
y=mid-x;&lt;br /&gt;
for(j=1;j&amp;lt;=n;j++)&lt;br /&gt;
{&lt;br /&gt;
l=j;&lt;br /&gt;
r=n+1-j;&lt;br /&gt;
if(j&amp;lt;=x || r&amp;lt;=x)&lt;br /&gt;
printf(&quot;*&quot;);&lt;br /&gt;
else&lt;br /&gt;
printf(&quot; &quot;);&lt;br /&gt;
}&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0OLAKqMWr6MbUpEpGi39QSfPOwv-kmC8w7PiYy5BegKPNB5jd_f3fyqOwrd7koi_BH2S7Gx5sFa-rw1fe1jzgKczqWyKqqhIu01Bx964XorBVplHAhMoGmTdtOOxJUvRqqg4uFjDX5G_G/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0OLAKqMWr6MbUpEpGi39QSfPOwv-kmC8w7PiYy5BegKPNB5jd_f3fyqOwrd7koi_BH2S7Gx5sFa-rw1fe1jzgKczqWyKqqhIu01Bx964XorBVplHAhMoGmTdtOOxJUvRqqg4uFjDX5G_G/s1600/1.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;math.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int n=11,i,j,k;&lt;br /&gt;
int mid=(n+1)/2,x,y,l,r,z;&lt;br /&gt;
clrscr();&lt;br /&gt;
for(i=1;i&amp;lt;=n;i++)&lt;br /&gt;
{&lt;br /&gt;
x=abs(mid-i)+1;&lt;br /&gt;
y=mid-x;&lt;br /&gt;
for(j=1;j&amp;lt;=n;j++)&lt;br /&gt;
{&lt;br /&gt;
l=j;&lt;br /&gt;
r=n+1-j;&lt;br /&gt;
z=abs(mid-j);&lt;br /&gt;
if(j&amp;lt;=x || r&amp;lt;=x)&lt;br /&gt;
printf(&quot;%d&quot;,z);&lt;br /&gt;
else&lt;br /&gt;
printf(&quot; &quot;);&lt;br /&gt;
}&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0RTtl17ngXNA4w32KT6M8HOgWamzlJu9xbhsU0PIb1GZK2okLoqEuYIHLQv4uRFNBmNoYMCRqlvuwnZnZjkZG-57GR2BjjUn7kAlF21N9qVK94zRheeDCxAEUU1cUGV-YtJW6TrG672E4/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0RTtl17ngXNA4w32KT6M8HOgWamzlJu9xbhsU0PIb1GZK2okLoqEuYIHLQv4uRFNBmNoYMCRqlvuwnZnZjkZG-57GR2BjjUn7kAlF21N9qVK94zRheeDCxAEUU1cUGV-YtJW6TrG672E4/s1600/1.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;math.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int n=11,i,j,k;&lt;br /&gt;
int mid=(n+1)/2,x,y,l,r,z;&lt;br /&gt;
clrscr();&lt;br /&gt;
for(i=1;i&amp;lt;=n;i++)&lt;br /&gt;
{&lt;br /&gt;
x=abs(mid-i)+1;&lt;br /&gt;
y=mid-x;&lt;br /&gt;
for(j=1;j&amp;lt;=n;j++)&lt;br /&gt;
{&lt;br /&gt;
l=j;&lt;br /&gt;
r=n+1-j;&lt;br /&gt;
z=mid-abs(mid-j)-1;&lt;br /&gt;
if(j&amp;lt;=x || r&amp;lt;=x)&lt;br /&gt;
printf(&quot;%c&quot;,&#39;A&#39; + z);&lt;br /&gt;
else&lt;br /&gt;
printf(&quot; &quot;);&lt;br /&gt;
}&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnbh_iTZmtPGaiM5fqKh7g6iZVRhb1NWSbxfARPrl7WFMZPNQhDkZNMNMj8RXBQWTHYQxV4D6_VfL75VUzGmtZHAwiu_HXfORx0k5jYkh1A5V_HzWYADILKOkSCf_bUgIZ3GS3N64caR0W/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnbh_iTZmtPGaiM5fqKh7g6iZVRhb1NWSbxfARPrl7WFMZPNQhDkZNMNMj8RXBQWTHYQxV4D6_VfL75VUzGmtZHAwiu_HXfORx0k5jYkh1A5V_HzWYADILKOkSCf_bUgIZ3GS3N64caR0W/s1600/1.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;math.h&amp;gt;&lt;br /&gt;
#define n 4&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
int l=0,r=n-1,t=0,b=n-1,i,x=1,j;&lt;br /&gt;
int a[n][n];&lt;br /&gt;
clrscr();&lt;br /&gt;
while(x&amp;lt;=n*n)&lt;br /&gt;
{&lt;br /&gt;
for(i=l;i&amp;lt;=r;i++)&lt;br /&gt;
a[t][i]=x++;&lt;br /&gt;
t++;&lt;br /&gt;
for(i=t;i&amp;lt;=b;i++)&lt;br /&gt;
a[i][r]=x++;&lt;br /&gt;
r--;&lt;br /&gt;
for(i=r;i&amp;gt;=l;i--)&lt;br /&gt;
a[b][i]=x++;&lt;br /&gt;
b--;&lt;br /&gt;
for(i=b;i&amp;gt;=t;i--)&lt;br /&gt;
a[i][l]=x++;&lt;br /&gt;
l++;&lt;br /&gt;
}&lt;br /&gt;
for(i=0;i&amp;lt;=n-1;i++)&lt;br /&gt;
{&lt;br /&gt;
for(j=0;j&amp;lt;=n-1;j++)&lt;br /&gt;
printf(&quot;%4d&quot;,a[i][j]);&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5oQVNi14lT9SxDiPE3Xmg082MRc4tSMPqEcDBeZ5M0nWPC9xZyvDA-wnZ3aY4rZVH2sac7hUa9ZF-FbK-gA7VJnACQQarmaeFYQk-Gf0ZQmhgJNHV_l3FMG8tMdzLW2rl6c3pnjm0m0K8/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5oQVNi14lT9SxDiPE3Xmg082MRc4tSMPqEcDBeZ5M0nWPC9xZyvDA-wnZ3aY4rZVH2sac7hUa9ZF-FbK-gA7VJnACQQarmaeFYQk-Gf0ZQmhgJNHV_l3FMG8tMdzLW2rl6c3pnjm0m0K8/s1600/1.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;math.h&amp;gt;&lt;br /&gt;
#define n 4&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
int l=0,r=n-1,t=0,b=n-1,i,x=1,j;&lt;br /&gt;
int a[n][n];&lt;br /&gt;
clrscr();&lt;br /&gt;
while(x&amp;lt;=n*n)&lt;br /&gt;
{&lt;br /&gt;
for(i=l;i&amp;lt;=r;i++)&lt;br /&gt;
a[t][i]=x++;&lt;br /&gt;
t++;&lt;br /&gt;
for(i=t;i&amp;lt;=b;i++)&lt;br /&gt;
a[i][r]=x++;&lt;br /&gt;
r--;&lt;br /&gt;
for(i=r;i&amp;gt;=l;i--)&lt;br /&gt;
a[b][i]=x++;&lt;br /&gt;
b--;&lt;br /&gt;
for(i=b;i&amp;gt;=t;i--)&lt;br /&gt;
a[i][l]=x++;&lt;br /&gt;
l++;&lt;br /&gt;
}&lt;br /&gt;
for(i=0;i&amp;lt;=n-1;i++)&lt;br /&gt;
{&lt;br /&gt;
for(j=0;j&amp;lt;=n-1;j++)&lt;br /&gt;
printf(&quot;%4d&quot;,n*n + 1-a[i][j]);&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/6841114968603832150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2012/06/drawing-pyramids.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/6841114968603832150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/6841114968603832150'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2012/06/drawing-pyramids.html' title='Drawing Pyramids'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFEWOMMZqaggHVaq_XVgPuZsBF_7RWRuhviVXZ7etaLBHzGjFhunNeiNCal09rwomSO65EKIFYQtntQY3NMBvar1A4RikDmqAgwWLebo6stXMhvyr1vqiZND5S0iC25A9irHE24qxxjeKu/s72-c/1.PNG" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-9020322066311695960</id><published>2012-05-28T15:43:00.000+05:30</published><updated>2012-05-28T15:43:40.952+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="1&#39;s Complement"/><category scheme="http://www.blogger.com/atom/ns#" term="Arrays and Pointers"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Pass by Reference"/><category scheme="http://www.blogger.com/atom/ns#" term="Pass by Value"/><category scheme="http://www.blogger.com/atom/ns#" term="Pointers in C"/><category scheme="http://www.blogger.com/atom/ns#" term="Swapping Variables"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>Pointers in C</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;b&gt;A pointer is the address of a variable.For understanding pointers let us consider the following declarations:-&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;There are only two operators in C regarding pointers.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;amp; is the addressing operator, and when applied to a variable gives it&#39;s address.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;* is the value or indirection operator. When applied to an address it gives the value at the address.&amp;nbsp; &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;1)&amp;nbsp;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;int x=10;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;int *p=&amp;amp;x;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;int **q=&amp;amp;p;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;x is a variable of type int. It&#39;s value is 10. Let us assume it&#39;s address is 1000.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;int *p; *p is an int, p is the address of an int.The value of p is &amp;amp;x i,e address of x which is 1000.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;int **q; **q is an int, *q is a pointer to int, q is a pointer to pointer to int.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;x is thus equivalent to *p and both are 10.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;amp;x is equivalent to p and is 1000&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;What is &amp;amp;*p?&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;replace *p by x, we get &amp;amp;x which is p .&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Therefore we can say that &amp;amp;* cancel out.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The same is true for *&amp;amp;x. &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Consider this program :-&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
*******************************ptr.c**************************&lt;br /&gt;
&lt;i&gt;&lt;b&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int x=10;&lt;br /&gt;
int *p=&amp;amp;x;&lt;br /&gt;
clrscr();&lt;br /&gt;
printf(&quot;%u,%d\n&quot;,&amp;amp;x,x);&lt;br /&gt;
printf(&quot;%u,%d\n&quot;,p,*p);&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt;The output:-&lt;/b&gt;&lt;/u&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
64948,10&lt;br /&gt;
64948,10&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh68SS0eUnRttZmS3Oa-7FkwVln1drCWryn-mvbAFa-xmEbdmOoRIERCDX6AqHYlfAz_V8bZ-yxlUr3pS12ykLnFFLN6y8DTaCX5x_-2emVGXd-VZYFzpstTvuBlKMV2Ax3mIe7cpSEZxtS/s1600/0.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh68SS0eUnRttZmS3Oa-7FkwVln1drCWryn-mvbAFa-xmEbdmOoRIERCDX6AqHYlfAz_V8bZ-yxlUr3pS12ykLnFFLN6y8DTaCX5x_-2emVGXd-VZYFzpstTvuBlKMV2Ax3mIe7cpSEZxtS/s320/0.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt;The equivalence of Arrays &amp;amp; Pointers.&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;The following program should be self explanatory:-&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int a[]={1,2,3,4,5},n=5,i;&lt;br /&gt;
int *p=a;&lt;br /&gt;
clrscr();&lt;br /&gt;
for(i=0;i&amp;lt;=n-1;i++)&lt;br /&gt;
printf(&quot;%d,&quot;,*(p+i));&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
for(p=a;p&amp;lt;=&amp;amp;a[n-1];p++)&lt;br /&gt;
printf(&quot;%d,&quot;,*p);&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
for(p=a;p&amp;lt;=&amp;amp;a[n-1];)&lt;br /&gt;
printf(&quot;%d,&quot;,*p++);&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
//This reads the array using array syntax&lt;br /&gt;
for(i=0;i&amp;lt;=n-1;i++)&lt;br /&gt;
scanf(&quot;%d&quot;,&amp;amp;a[i]);&lt;br /&gt;
for(p=a;p&amp;lt;=&amp;amp;a[n-1];)&lt;br /&gt;
printf(&quot;%d,&quot;,*p++);&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
//Since &amp;amp;a[i] translates to p+i, therefore we have&lt;br /&gt;
for(p=a;p&amp;lt;=&amp;amp;a[n-1];)&lt;br /&gt;
scanf(&quot;%d&quot;,p++);&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
&lt;br /&gt;
for(p=a;p&amp;lt;=&amp;amp;a[n-1];)&lt;br /&gt;
printf(&quot;%d,&quot;,*p++);&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;u&gt;&lt;b&gt;The output:-&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxq4lqM02UEqnNu5h4sHBlSJGg86PrJZcwO3eaSVFAeoocZ860OIND-5SZ9GPTwuThEZ_G95uaSNOFd7qu_f5yv0PcDRY2kjJ_JurKx5PFxJIU25bN8yrDcGtYhimw5yz-d_kzIiW_JRAV/s1600/0.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxq4lqM02UEqnNu5h4sHBlSJGg86PrJZcwO3eaSVFAeoocZ860OIND-5SZ9GPTwuThEZ_G95uaSNOFd7qu_f5yv0PcDRY2kjJ_JurKx5PFxJIU25bN8yrDcGtYhimw5yz-d_kzIiW_JRAV/s320/0.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Parameter passing using pointers&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
void valueswap (int a,int b);&lt;br /&gt;
void ptrswap(int* a,int* b);&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int x=5,y=10;&lt;br /&gt;
clrscr();&lt;br /&gt;
printf(&quot;Value before value swap a = %d, b = %d\n&quot;,x,y);&lt;br /&gt;
valueswap(x,y);&lt;br /&gt;
printf(&quot;Value after value swap a = %d, b = %d\n&quot;,x,y);&lt;br /&gt;
printf(&quot;Value before ptr swap a = %d, b = %d\n&quot;,x,y);&lt;br /&gt;
ptrswap(&amp;amp;x,&amp;amp;y);&lt;br /&gt;
printf(&quot;Value after ptr swap a = %d, b = %d\n&quot;,x,y);&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;br /&gt;
void valueswap (int a,int b)&lt;br /&gt;
{&lt;br /&gt;
int t=a;&lt;br /&gt;
a=b;&lt;br /&gt;
b=t;&lt;br /&gt;
}&lt;br /&gt;
void ptrswap(int* a,int* b)&lt;br /&gt;
{&lt;br /&gt;
int t=*a;&lt;br /&gt;
*a=*b;&lt;br /&gt;
*b=t;&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&lt;u&gt;The output:-&lt;/u&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvUeLFfqpEXQS9I7NN5INK00zIkfsUbIzg3ectfiLynxWki0rYM86JiTrE8fNY5gBaUpNevHnBR_guRDK4CRXkZyURaeHIBHX515kURybCi0mxk8vZICJOmAQFf_fCuzaXJVt5WKfodlAf/s1600/0.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;267&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvUeLFfqpEXQS9I7NN5INK00zIkfsUbIzg3ectfiLynxWki0rYM86JiTrE8fNY5gBaUpNevHnBR_guRDK4CRXkZyURaeHIBHX515kURybCi0mxk8vZICJOmAQFf_fCuzaXJVt5WKfodlAf/s320/0.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;To understand this assume the following.&lt;br /&gt;
&lt;br /&gt;
Variable&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; Value&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; Address&lt;br /&gt;
x&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1000&lt;br /&gt;
y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1002&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
for valueswap&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;void valueswap (int a,int b)&lt;br /&gt;
{&lt;br /&gt;
int t=a;&lt;br /&gt;
a=b;&lt;br /&gt;
b=t;&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;after parameter copy&lt;/b&gt;&lt;/u&gt;&lt;i&gt;&lt;b&gt; &lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;a=5&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;b=10&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;int t=a; t = 5&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;a=b; a=10;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;b=t; b=5&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;The values of x and y are not changed. Therefore the output in main remains unaffected .&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;For ptrswap&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;void ptrswap(int* a,int* b)&lt;br /&gt;
{&lt;br /&gt;
int t=*a;&lt;br /&gt;
*a=*b;&lt;br /&gt;
*b=t;&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;It is called as ptrswap(&amp;amp;x,&amp;amp;y);=ptrswap(1000,1002);&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Therefore after&amp;nbsp; parameter passing a=1000, and b=1002&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;int t=*a which translates as t=*1000 which means value at address 1000 which is the value of x ans is 5.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;so t=5;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;*a=*b, which translates as *1000 = * 1002. Replace value at address 1000 with value at address 1002.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;This means that x becomes 10.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;*b=t; which translates as *1002=5. Therefore value at address 1002, i,e y becomes 5.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;Therefore , x and y are swapped.&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/9020322066311695960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2012/05/pointers-in-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/9020322066311695960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/9020322066311695960'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2012/05/pointers-in-c.html' title='Pointers in C'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh68SS0eUnRttZmS3Oa-7FkwVln1drCWryn-mvbAFa-xmEbdmOoRIERCDX6AqHYlfAz_V8bZ-yxlUr3pS12ykLnFFLN6y8DTaCX5x_-2emVGXd-VZYFzpstTvuBlKMV2Ax3mIe7cpSEZxtS/s72-c/0.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-7916414469833606261</id><published>2012-05-19T18:12:00.000+05:30</published><updated>2012-05-19T18:12:13.796+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="1&#39;s Complement"/><category scheme="http://www.blogger.com/atom/ns#" term="2&#39;s Complement"/><category scheme="http://www.blogger.com/atom/ns#" term="Binary Addition"/><category scheme="http://www.blogger.com/atom/ns#" term="Binary Subtraction"/><category scheme="http://www.blogger.com/atom/ns#" term="Boolean Algebra"/><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>Implementing 1&#39;s Complement &amp; 2&#39;s Complement in C</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;1&#39;s complement and 2&#39;s complement arithmetic is used in Computer Science for implementing the basic operations of addition and subtraction. In this program , I have endeavored to provide a simple menu based example in C of these basic operations.&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;To implement these operations I have developed the following functions:- &lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;void printMenu()&lt;br /&gt;
{&lt;br /&gt;
clrscr();&lt;br /&gt;
gotoxy(5,5);&lt;br /&gt;
printf(&quot;Read\tPrint\t1&#39;sComplement\t2&#39;sComplement\tAdd\tSub\teXit\n&quot;);&lt;br /&gt;
printf(&quot;A = &quot;);&lt;br /&gt;
printNumber(a);&lt;br /&gt;
printf(&quot;&amp;nbsp; B = &quot;);&lt;br /&gt;
printNumber(b);&lt;br /&gt;
printf(&quot;&amp;nbsp; C = &quot;);&lt;br /&gt;
printNumber(c);&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;b&gt;This is the Menu. It works by pressing R,P,1,2,A,S,X&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;The menu is not case sensitive.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;void copyArray(int dest[],int src[])&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;int i;&lt;br /&gt;
&amp;nbsp;for(i=0;i&amp;lt;=8;i++)&lt;br /&gt;
&amp;nbsp;dest[i]=src[i];&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;copies the src array into dest.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;int getCarry(int a,int b,int c)&lt;br /&gt;
{&lt;br /&gt;
int sum=a+b+c;&lt;br /&gt;
switch(sum)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;case 0:return(0);&lt;br /&gt;
&amp;nbsp;case 1:return(0);&lt;br /&gt;
&amp;nbsp;case 2:return (1);&lt;br /&gt;
&amp;nbsp;default:return(1);&lt;br /&gt;
}&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;b&gt;adds 3 bits and returns the carry.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;int getSum(int a,int b,int c)&lt;br /&gt;
{&lt;br /&gt;
int sum=a+b+c;&lt;br /&gt;
switch(sum)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;case 0:return(0);&lt;br /&gt;
&amp;nbsp;case 1:return(1);&lt;br /&gt;
&amp;nbsp;case 2:return (0);&lt;br /&gt;
&amp;nbsp;default:return(1);&lt;br /&gt;
}&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Adds three bits and returns the sum&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;void TwosComplement(int x[])&lt;br /&gt;
{&lt;br /&gt;
int temp[]={1,0,0,0,0,0,0,0,0};&lt;br /&gt;
int out[9];&lt;br /&gt;
copyArray(out,x);&lt;br /&gt;
OnesComplement(out);&lt;br /&gt;
addNumber(out,temp,x);&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;finds the 2&#39;s complement of a number and stores it in the same array.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;void OnesComplement(int x[])&lt;br /&gt;
{&lt;br /&gt;
int i;&lt;br /&gt;
for(i=8;i&amp;gt;=0;i--)&lt;br /&gt;
x[i]=1-x[i];&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;finds the 1&#39;s complement of a number.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;void printNumber(int x[])&lt;br /&gt;
{&lt;br /&gt;
int i;&lt;br /&gt;
for(i=8;i&amp;gt;=0;i--)&lt;br /&gt;
printf(&quot;%d&quot;,x[i]);&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;prints the number&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;b&gt;void readNumber(int x[])&lt;br /&gt;
{&lt;br /&gt;
int i;&lt;br /&gt;
char str[10];&lt;br /&gt;
scanf(&quot;%s&quot;,str);&lt;br /&gt;
for(i=8;i&amp;gt;=0;i--)&lt;br /&gt;
x[i]=(str[8-i]-&#39;0&#39;); //0,1,2,3,4 &#39;0&#39;-&#39;0&#39;=0,&#39;1&#39;-&#39;0&#39;=1&lt;br /&gt;
&amp;nbsp;}&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;b&gt;reads a number as a string of 9 characters and stores it in a int array.&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;void subNumber(int x[],int y[],int sub[])&lt;br /&gt;
{&lt;br /&gt;
int temp[9];&lt;br /&gt;
copyArray(temp,y);&lt;br /&gt;
TwosComplement(temp);&lt;br /&gt;
addNumber(x,temp,sub);&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;subtracts 2 numbers and stores it in the 3rd parameter&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;u&gt;Important&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;b&gt;Each array is 9 elements, 8 for the byte and the ninth for the sine bit.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Therefore values must be entered as such&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Here are some snapshots:-&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisiPTNt-HsWigwZwjbNIOjovxi-cP4Chs53LLM8LOE8tS-9-ny_jxDS2cG0rz1dUTx5b1oYvebDw0itrY9xWPygOS2R-fhk4Rpo2Vr2AN2gRuZAEQyfUFjVM3KKJpGjHu8jF79zZiCmBb4/s1600/1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisiPTNt-HsWigwZwjbNIOjovxi-cP4Chs53LLM8LOE8tS-9-ny_jxDS2cG0rz1dUTx5b1oYvebDw0itrY9xWPygOS2R-fhk4Rpo2Vr2AN2gRuZAEQyfUFjVM3KKJpGjHu8jF79zZiCmBb4/s320/1.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2sd6c2CrHNH3hXEOI8cdKFQOlAgD9tPu-F4NCdCULCMgIlA4_w5CuiGZbO4cJ8ZwSksJlvncFFJhTRckWOmKtIj1q-cCnrUYntzmbMIXyXqJHVZ_XKAzAFEaQ7LhHXRWB9L2ZZvBOCZJq/s1600/2.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2sd6c2CrHNH3hXEOI8cdKFQOlAgD9tPu-F4NCdCULCMgIlA4_w5CuiGZbO4cJ8ZwSksJlvncFFJhTRckWOmKtIj1q-cCnrUYntzmbMIXyXqJHVZ_XKAzAFEaQ7LhHXRWB9L2ZZvBOCZJq/s320/2.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhqcIxGrT1oFMM4G8L-7S6_GPoX-HHY-WcDnb_wC4kVrCpjwTsA6pYP3m4tIFTCrJDmmxHMcfBBD6tManeVikE_UckYEgARHQ-YQEWDUlWp7I8TkZk5Ckpg3Afobdyvco3-nw8ndsdncUJ/s1600/3.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhqcIxGrT1oFMM4G8L-7S6_GPoX-HHY-WcDnb_wC4kVrCpjwTsA6pYP3m4tIFTCrJDmmxHMcfBBD6tManeVikE_UckYEgARHQ-YQEWDUlWp7I8TkZk5Ckpg3Afobdyvco3-nw8ndsdncUJ/s320/3.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZcEydfiaG0JgVVifh8ZEv4wfsmfGu8rL2m7Yopo3UvnFEBAPl6joxiOw_2z9fQ7jlBQFNo2ZzZierTKarV7OmYfvc6iymCVkdBtGdNgt1NxQ5zsXaCNhWy-A9iqnEScmBP4gKyV3WyYcl/s1600/4.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZcEydfiaG0JgVVifh8ZEv4wfsmfGu8rL2m7Yopo3UvnFEBAPl6joxiOw_2z9fQ7jlBQFNo2ZzZierTKarV7OmYfvc6iymCVkdBtGdNgt1NxQ5zsXaCNhWy-A9iqnEScmBP4gKyV3WyYcl/s320/4.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizbxVGRv4fOG8ZSPNN7mb8VGkRjp8eHqAmefmkQSSyzwmciPWz7rh29iJ7qy8Shj5u0snsjWgtvM27MnuXA7HlTuOUc1RJxycgiOgsMX0oZckqjQN5bfofSxRGRENcMqckocLRNHg16_Bl/s1600/5.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizbxVGRv4fOG8ZSPNN7mb8VGkRjp8eHqAmefmkQSSyzwmciPWz7rh29iJ7qy8Shj5u0snsjWgtvM27MnuXA7HlTuOUc1RJxycgiOgsMX0oZckqjQN5bfofSxRGRENcMqckocLRNHg16_Bl/s320/5.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;The Complete Program&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Binary.c&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;#include&amp;lt;stdio.h&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;math.h&amp;gt;&lt;br /&gt;
int a[9]={0,0,0,0,0,0,0,0,0},b[9]={0,0,0,0,0,0,0,0,0},c[9]={0,0,0,0,0,0,0,0,0};&lt;br /&gt;
void readNumber(int x[]);&lt;br /&gt;
void printNumber(int x[]);&lt;br /&gt;
void OnesComplement(int x[]);&lt;br /&gt;
void addNumber(int x[],int y[],int sum[]);&lt;br /&gt;
void TwosComplement(int x[]);&lt;br /&gt;
int getSum(int a,int b,int c);&lt;br /&gt;
int getCarry(int a,int b,int c);&lt;br /&gt;
void copyArray(int dest[],int src[]);&lt;br /&gt;
void subNumber(int x[],int y[],int sub[]);&lt;br /&gt;
void printMenu();&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
int option,ch;&lt;br /&gt;
clrscr();&lt;br /&gt;
while(1)&lt;br /&gt;
{&lt;br /&gt;
printMenu();&lt;br /&gt;
option=getch();&lt;br /&gt;
switch(option)&lt;br /&gt;
{&lt;br /&gt;
case&#39;X&#39;:&lt;br /&gt;
case&#39;x&#39;:&lt;br /&gt;
return;&lt;br /&gt;
case &#39;r&#39;:&lt;br /&gt;
case &#39;R&#39;:&lt;br /&gt;
printf(&quot;\nEnter a or b: &quot;);&lt;br /&gt;
ch=getche();&lt;br /&gt;
printf(&quot; = &quot;);&lt;br /&gt;
if(ch==&#39;a&#39; || ch==&#39;A&#39;)&lt;br /&gt;
readNumber(a);&lt;br /&gt;
else&lt;br /&gt;
readNumber(b);&lt;br /&gt;
break;&lt;br /&gt;
case &#39;1&#39;:&lt;br /&gt;
printf(&quot;\nEnter a or b: &quot;);&lt;br /&gt;
ch=getche();&lt;br /&gt;
printf(&quot; = )&quot;);&lt;br /&gt;
if(ch==&#39;a&#39; || ch==&#39;A&#39;)&lt;br /&gt;
OnesComplement(a);&lt;br /&gt;
else&lt;br /&gt;
OnesComplement(b);&lt;br /&gt;
break;&lt;br /&gt;
&lt;br /&gt;
case &#39;2&#39;:&lt;br /&gt;
printf(&quot;\nEnter a or b: &quot;);&lt;br /&gt;
ch=getche();&lt;br /&gt;
printf(&quot; = &quot;);&lt;br /&gt;
if(ch==&#39;a&#39; || ch==&#39;A&#39;)&lt;br /&gt;
TwosComplement(a);&lt;br /&gt;
else&lt;br /&gt;
TwosComplement(b);&lt;br /&gt;
break;&lt;br /&gt;
case &#39;a&#39;:&lt;br /&gt;
case &#39;A&#39;:&lt;br /&gt;
addNumber(a,b,c);&lt;br /&gt;
break;&lt;br /&gt;
case &#39;s&#39;:&lt;br /&gt;
case &#39;S&#39;:&lt;br /&gt;
subNumber(a,b,c);&lt;br /&gt;
break;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
void printMenu()&lt;br /&gt;
{&lt;br /&gt;
clrscr();&lt;br /&gt;
gotoxy(5,5);&lt;br /&gt;
printf(&quot;Read\tPrint\t1&#39;sComplement\t2&#39;sComplement\tAdd\tSub\teXit\n&quot;);&lt;br /&gt;
printf(&quot;A = &quot;);&lt;br /&gt;
printNumber(a);&lt;br /&gt;
printf(&quot;&amp;nbsp; B = &quot;);&lt;br /&gt;
printNumber(b);&lt;br /&gt;
printf(&quot;&amp;nbsp; C = &quot;);&lt;br /&gt;
printNumber(c);&lt;br /&gt;
printf(&quot;\n&quot;);&lt;br /&gt;
}&lt;br /&gt;
void copyArray(int dest[],int src[])&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;int i;&lt;br /&gt;
&amp;nbsp;for(i=0;i&amp;lt;=8;i++)&lt;br /&gt;
&amp;nbsp;dest[i]=src[i];&lt;br /&gt;
}&lt;br /&gt;
void addNumber(int x[],int y[],int sum[])&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;int i,s,carry=0;&lt;br /&gt;
&amp;nbsp;for(i=0;i&amp;lt;=8;i++)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; s=getSum(x[i] ,y[i],carry);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; carry=getCarry(x[i],y[i],carry);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; sum[i]=s;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
int getCarry(int a,int b,int c)&lt;br /&gt;
{&lt;br /&gt;
int sum=a+b+c;&lt;br /&gt;
switch(sum)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;case 0:return(0);&lt;br /&gt;
&amp;nbsp;case 1:return(0);&lt;br /&gt;
&amp;nbsp;case 2:return (1);&lt;br /&gt;
&amp;nbsp;default:return(1);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
int getSum(int a,int b,int c)&lt;br /&gt;
{&lt;br /&gt;
int sum=a+b+c;&lt;br /&gt;
switch(sum)&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;case 0:return(0);&lt;br /&gt;
&amp;nbsp;case 1:return(1);&lt;br /&gt;
&amp;nbsp;case 2:return (0);&lt;br /&gt;
&amp;nbsp;default:return(1);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
void TwosComplement(int x[])&lt;br /&gt;
{&lt;br /&gt;
int temp[]={1,0,0,0,0,0,0,0,0};&lt;br /&gt;
int out[9];&lt;br /&gt;
copyArray(out,x);&lt;br /&gt;
OnesComplement(out);&lt;br /&gt;
addNumber(out,temp,x);&lt;br /&gt;
}&lt;br /&gt;
void OnesComplement(int x[])&lt;br /&gt;
{&lt;br /&gt;
int i;&lt;br /&gt;
for(i=8;i&amp;gt;=0;i--)&lt;br /&gt;
x[i]=1-x[i];&lt;br /&gt;
}&lt;br /&gt;
void printNumber(int x[])&lt;br /&gt;
{&lt;br /&gt;
int i;&lt;br /&gt;
for(i=8;i&amp;gt;=0;i--)&lt;br /&gt;
printf(&quot;%d&quot;,x[i]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void readNumber(int x[])&lt;br /&gt;
{&lt;br /&gt;
int i;&lt;br /&gt;
char str[10];&lt;br /&gt;
scanf(&quot;%s&quot;,str);&lt;br /&gt;
for(i=8;i&amp;gt;=0;i--)&lt;br /&gt;
x[i]=(str[8-i]-&#39;0&#39;); //0,1,2,3,4 &#39;0&#39;-&#39;0&#39;=0,&#39;1&#39;-&#39;0&#39;=1&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
void subNumber(int x[],int y[],int sub[])&lt;br /&gt;
{&lt;br /&gt;
int temp[9];&lt;br /&gt;
copyArray(temp,y);&lt;br /&gt;
TwosComplement(temp);&lt;br /&gt;
addNumber(x,temp,sub);&lt;br /&gt;
}&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Next, we shall use it to implement the Booth&#39;s algorithm&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/7916414469833606261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2012/05/implementing-1s-complement-2s.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/7916414469833606261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/7916414469833606261'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2012/05/implementing-1s-complement-2s.html' title='Implementing 1&#39;s Complement &amp; 2&#39;s Complement in C'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisiPTNt-HsWigwZwjbNIOjovxi-cP4Chs53LLM8LOE8tS-9-ny_jxDS2cG0rz1dUTx5b1oYvebDw0itrY9xWPygOS2R-fhk4Rpo2Vr2AN2gRuZAEQyfUFjVM3KKJpGjHu8jF79zZiCmBb4/s72-c/1.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-3070461168176583982</id><published>2012-05-10T23:01:00.001+05:30</published><updated>2012-05-10T23:06:48.953+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Cross Join"/><category scheme="http://www.blogger.com/atom/ns#" term="Inner Join"/><category scheme="http://www.blogger.com/atom/ns#" term="Joins"/><category scheme="http://www.blogger.com/atom/ns#" term="Left Join"/><category scheme="http://www.blogger.com/atom/ns#" term="MS SQL Server"/><category scheme="http://www.blogger.com/atom/ns#" term="MySQL"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Right Join"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>Joins in MS SQL Server,Oracle &amp; MY SQL</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;b&gt;Joins are a way of connecting data from more than one table.We can also have joins on the same table by creating aliases. There are four basic joins&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;1) Outer join&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;2) Left outer join&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;3) Right outer join&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;4) inner join.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;In this post, we shall learn the syntax of joins on MS SQL Server, Oracle &amp;amp; MY SQL.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;First, the tables:-&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;1) create table medicalcharlatans(CharlatanName varchar(100) primary key,CharlatanRank int,CharlatanDescrption varchar(200))&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Then insert some data.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;insert into medicalcharlatans values(&#39;Jesus Christ&#39;,1,&#39;Used to treat diseases by driving out demons&#39;)&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;insert into medicalcharlatans values(&#39;Mother Teresa&#39;,2,&#39;Cured cancer via Light Emitting Photo&#39;)&lt;br /&gt;
insert into medicalcharlatans values(&#39;Benny Hinn&#39;,3,&#39;Cured diseases via Touch Therapy&#39;)&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Here is a view of the table:-&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;Benny Hinn&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; Cured diseases via Touch Therapy&lt;br /&gt;
Jesus Christ&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; Used to treat diseases by driving out demons&lt;br /&gt;
Mother Teresa&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp; Cured cancer via Light Emitting Photo&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span id=&quot;goog_1566097341&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_1566097342&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUIl5KjmNZOJC513GT4uR1pdQAJ0rStb9V9Wa3hwnASmXpKQIBFJezdYlzJg7oZNZm82viKvmfd7V43NXv0hFk7DbmGOTeBYLus3TDdOo3OF20jBmHyCZh89G8Ve4Q-pkn1pDXba61LxCX/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;78&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUIl5KjmNZOJC513GT4uR1pdQAJ0rStb9V9Wa3hwnASmXpKQIBFJezdYlzJg7oZNZm82viKvmfd7V43NXv0hFk7DbmGOTeBYLus3TDdOo3OF20jBmHyCZh89G8Ve4Q-pkn1pDXba61LxCX/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;2) create table PedofileProtectors(ProtectorName varchar(100) primary key,ProtectorDescrption varchar(200))&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;insert into PedofileProtectors values(&#39;John Paul 2&#39;,&#39;Protected Pedofiles and promoted Pedofile protectors like Mother Teresa and Ratzinger&#39;)&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;insert into PedofileProtectors values(&#39;Ratzinger&#39;,&#39;Protected Pedofiles and promoted Pedofile protectors like Mother Teresa and John Paul 2&#39;)&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;insert into PedofileProtectors values(&#39;Mother Teresa&#39;,&#39;Protected Pedofiles and promoted Pedofile protectors like John Paul 2 and Ratzinger, wrote letters of support for recognized Pedofiles&#39;)&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;The table as it stands now :-&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;John Paul 2&amp;nbsp;&amp;nbsp;&amp;nbsp; Protected Pedofiles and promoted Pedofile protectors like Mother Teresa and Ratzinger&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
Mother Teresa&amp;nbsp;&amp;nbsp;&amp;nbsp; Protected Pedofiles and promoted Pedofile protectors like John Paul 2 and Ratzinger, wrote letters of support for recognized Pedofiles&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
Ratzinger&amp;nbsp;&amp;nbsp;&amp;nbsp; Protected Pedofiles and promoted Pedofile protectors like Mother Teresa and John Paul 2&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGT5vdsvC2qBsk8IwEkq_haynyJRVViCvBHUfLPiHOWKN7C-Eqfsu5EXJHNz_8Fm1DeXJMyVoZYqT3v39OvrK_MMuXgpfta9QfR78eaqv0Dg8WBWF9jl7ly-Y7VGqT6Jy5YlBrMLz_S1j9/s1600/2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;88&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGT5vdsvC2qBsk8IwEkq_haynyJRVViCvBHUfLPiHOWKN7C-Eqfsu5EXJHNz_8Fm1DeXJMyVoZYqT3v39OvrK_MMuXgpfta9QfR78eaqv0Dg8WBWF9jl7ly-Y7VGqT6Jy5YlBrMLz_S1j9/s320/2.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;The various Joins&lt;/b&gt;&lt;/u&gt;&lt;i&gt;&lt;b&gt; :-&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Cross Join&lt;/u&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;The cross join is a cartesian product. Here is the output in MS SQL Server. Incidentally , it&#39;s the same in all three databases.&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;select * from medicalcharlatans cross join&amp;nbsp; PedofileProtectors&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;This is supported by all three databases&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBuML9z3bK0KwhEp0dETogzXdn8Au_99hV6pi5-I4Y-mxEpTj3rrSdUzKm1OQlrV9tjsyxba-6k6RGyk1thyXnLC_4Ht0T7aI5pRX1OdS48r5Vvsyj-mkH7AFxsS6iADisuKEbT8VvScqa/s1600/3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;176&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBuML9z3bK0KwhEp0dETogzXdn8Au_99hV6pi5-I4Y-mxEpTj3rrSdUzKm1OQlrV9tjsyxba-6k6RGyk1thyXnLC_4Ht0T7aI5pRX1OdS48r5Vvsyj-mkH7AFxsS6iADisuKEbT8VvScqa/s640/3.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CharlatanName,ProtectorName FROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; medicalcharlatans&amp;nbsp; full outer JOIN PedofileProtectors ON CharlatanName = ProtectorName&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;Not supported in my SQL. We shall learn in a subsequent post to simulate it using Union.&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEit2MfBEWT0jcgSVLQT-ICDwf4p4be1gya75m09MOP6YFgEf48h8iYNJ9xBoERtDq8ge7Zz9r9YontnUz3nHfSWNbU6KXDBWIKsRCw_QXJNn2K6T2xXrTCT2i1rIyYNrIiGJxVMhsCNhi4Q/s1600/4.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEit2MfBEWT0jcgSVLQT-ICDwf4p4be1gya75m09MOP6YFgEf48h8iYNJ9xBoERtDq8ge7Zz9r9YontnUz3nHfSWNbU6KXDBWIKsRCw_QXJNn2K6T2xXrTCT2i1rIyYNrIiGJxVMhsCNhi4Q/s1600/4.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;&lt;b&gt;SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CharlatanName,ProtectorName FROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; medicalcharlatans&amp;nbsp; right outer JOIN PedofileProtectors ON CharlatanName = ProtectorName&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;It&#39;s supported in Oracle.&lt;/b&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt;In My SQL :- &lt;/b&gt;&lt;/u&gt;&lt;i&gt;&lt;b&gt;SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CharlatanName,ProtectorName FROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; medicalcharlatans&amp;nbsp; right JOIN PedofileProtectors ON CharlatanName = ProtectorName&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYHydJdYZTrIifQXiX47CCJtNlgaafRHFF84apraLXoTExDjRq_SfH3y2kr2Pkb3PyC06bTKsQOi8_sy1y3nmBwhD9ID5p4S4B6B5a_oL9QpyNfKXjabbCBLIeZLjN6fgy8LTSLijvPPBm/s1600/5.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYHydJdYZTrIifQXiX47CCJtNlgaafRHFF84apraLXoTExDjRq_SfH3y2kr2Pkb3PyC06bTKsQOi8_sy1y3nmBwhD9ID5p4S4B6B5a_oL9QpyNfKXjabbCBLIeZLjN6fgy8LTSLijvPPBm/s1600/5.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CharlatanName,ProtectorName FROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; medicalcharlatans&amp;nbsp; left outer JOIN PedofileProtectors ON CharlatanName = ProtectorName&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;It&#39;s supported in Oracle.&lt;/b&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt;In My SQL :- &lt;/b&gt;&lt;/u&gt;&lt;i&gt;&lt;b&gt;SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CharlatanName,ProtectorName FROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; medicalcharlatans&amp;nbsp; left JOIN PedofileProtectors ON CharlatanName = ProtectorName&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN_Eza0RPy5nafaBxnGcSZMoi2JUh-QlAzQhKaf9jywcNX4uSxkeo42A22daPGr2cFkA7iZtoX0iy7eMOWUT-ZAQW5PhcIuGSJXr3wDvyAp9N9HyiSIR8tBO1oeDrZLuESU_lsCcQXmM14/s1600/7.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN_Eza0RPy5nafaBxnGcSZMoi2JUh-QlAzQhKaf9jywcNX4uSxkeo42A22daPGr2cFkA7iZtoX0iy7eMOWUT-ZAQW5PhcIuGSJXr3wDvyAp9N9HyiSIR8tBO1oeDrZLuESU_lsCcQXmM14/s1600/7.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;br /&gt;
SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CharlatanName,ProtectorName FROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; medicalcharlatans&amp;nbsp; inner JOIN PedofileProtectors ON CharlatanName = ProtectorName&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&amp;nbsp;SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CharlatanName,ProtectorName FROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; medicalcharlatans JOIN PedofileProtectors ON CharlatanName = ProtectorName&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;b&gt;It&#39;s supported in all three databases.&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjijAPEwKcsK084dAPCtOPCLcIkXfVxKAVAh1DokxoBym492PVa6AN-bKHMVLkWYbz6Aii2ndjqdjXY0p6h7ka-WLoeMAjlGWN0SvI5Hp4FBNnJJpXJyJeRkKt5W1MraiZwz5m-B6n6CjZw/s1600/6.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjijAPEwKcsK084dAPCtOPCLcIkXfVxKAVAh1DokxoBym492PVa6AN-bKHMVLkWYbz6Aii2ndjqdjXY0p6h7ka-WLoeMAjlGWN0SvI5Hp4FBNnJJpXJyJeRkKt5W1MraiZwz5m-B6n6CjZw/s1600/6.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;In a subsequent post, we shall discuss &lt;i&gt;unions, intersections, minus&lt;/i&gt;, and the &lt;i&gt;top&lt;/i&gt; and &lt;i&gt;rownum &lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/3070461168176583982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2012/05/joins-in-ms-sql-serveroracle-my-sql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/3070461168176583982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/3070461168176583982'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2012/05/joins-in-ms-sql-serveroracle-my-sql.html' title='Joins in MS SQL Server,Oracle &amp; MY SQL'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUIl5KjmNZOJC513GT4uR1pdQAJ0rStb9V9Wa3hwnASmXpKQIBFJezdYlzJg7oZNZm82viKvmfd7V43NXv0hFk7DbmGOTeBYLus3TDdOo3OF20jBmHyCZh89G8Ve4Q-pkn1pDXba61LxCX/s72-c/1.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-1610483627125115737</id><published>2012-04-12T14:29:00.000+05:30</published><updated>2012-04-12T14:29:15.477+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache Tomcat"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Java Interfaces"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Session"/><category scheme="http://www.blogger.com/atom/ns#" term="Session Listener"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><category scheme="http://www.blogger.com/atom/ns#" term="web.xml"/><title type='text'>Session Listeners in Apache Tomcat</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;To implement a &lt;i&gt;SessionListener&lt;/i&gt; in java we implement the &lt;i&gt;javax.servlet.http.HttpSessionListener&lt;/i&gt; interface&lt;/b&gt;.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Here is our implementation of the &lt;i&gt;HttpSessionListener&lt;/i&gt;&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;CountSessionListener&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;package servletpackage;&lt;br /&gt;
import java.sql.*;&lt;br /&gt;
import javax.naming.*;&lt;br /&gt;
import javax.servlet.*;&lt;br /&gt;
import javax.servlet.http.*;&lt;br /&gt;
public class CountSessionListener implements HttpSessionListener&lt;br /&gt;
{&lt;br /&gt;
public void sessionCreated(HttpSessionEvent event)&lt;br /&gt;
{&lt;br /&gt;
HttpSession session=event.getSession();&lt;br /&gt;
try&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
String id=session.getId();&lt;br /&gt;
java.util.Date d=new java.util.Date();&lt;br /&gt;
System.out.println(&quot;Session Created with ID=&quot; + id&amp;nbsp; + &quot; at&amp;nbsp; time &quot; + d);&lt;br /&gt;
}&lt;br /&gt;
catch(Exception ex)&lt;br /&gt;
{&lt;br /&gt;
System.out.println(ex);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
public void sessionDestroyed(HttpSessionEvent event)&lt;br /&gt;
{&lt;br /&gt;
HttpSession session=event.getSession();&lt;br /&gt;
try&lt;br /&gt;
{&lt;br /&gt;
String id=session.getId();&lt;br /&gt;
java.util.Date d=new java.util.Date();&lt;br /&gt;
System.out.println(&quot;Session Destroyed with ID=&quot; + id&amp;nbsp; + &quot; at&amp;nbsp; time &quot; + d);&lt;br /&gt;
}&lt;br /&gt;
catch(Exception ex)&lt;br /&gt;
{&lt;br /&gt;
System.out.println(ex);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;u&gt;&lt;b&gt; &lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;To redirect the Standard Output in Apache Tomcat we use the logging tab in the Tomcat Monitor.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBVUvt41NGpBLE438sP5eEFlWa2fam_x6kdr5DYUNGtrdv4b16FcPXb66y7PdEADYu5X8HR3dL7P24y4EIsGye__lUMGYuUaeacXOE_7W3pxC6TgeS9m4T-Mf2i7sOmVt2Aokr-scaCJk2/s1600/untitled.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;304&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBVUvt41NGpBLE438sP5eEFlWa2fam_x6kdr5DYUNGtrdv4b16FcPXb66y7PdEADYu5X8HR3dL7P24y4EIsGye__lUMGYuUaeacXOE_7W3pxC6TgeS9m4T-Mf2i7sOmVt2Aokr-scaCJk2/s320/untitled.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;To install this session listener the following entries are required in the &lt;i&gt;web.xml&lt;/i&gt; file.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;web.xml&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;&amp;lt;web-app&amp;gt;&lt;br /&gt;
&lt;u&gt;&amp;lt;listener&amp;gt;&lt;br /&gt;
&amp;lt;listener-class&amp;gt;servletpackage.CountSessionListener&amp;lt;/listener-class&amp;gt;&lt;br /&gt;
&amp;lt;/listener&amp;gt;&lt;/u&gt;&lt;br /&gt;
&amp;lt;session-config&amp;gt;&lt;br /&gt;
&amp;lt;session-timeout&amp;gt;2&amp;lt;/session-timeout&amp;gt;&lt;br /&gt;
&amp;lt;/session-config&amp;gt;&lt;br /&gt;
&amp;lt;/web-app&amp;gt;&lt;/i&gt;&lt;u&gt; &lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;b&gt;The underlined portion is the session listener configuration. We have also set a session timeout of 2 minutes.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;To test the listener create two jsp pages. &lt;i&gt;hello.jsp&lt;/i&gt;, and &lt;i&gt;bye.jsp&lt;/i&gt;. &lt;i&gt;hello.jsp&lt;/i&gt; creates a session while &lt;i&gt;bye.jsp&lt;/i&gt; destroys it.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;&lt;br /&gt;
Here are the two files:-&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;hello.jsp&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;lt;%&lt;br /&gt;
request.getSession(true);&lt;br /&gt;
%&amp;gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;bye.jsp&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;lt;%&lt;br /&gt;
session.invalidate();&lt;br /&gt;
%&amp;gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Open the two files and refresh them alternately in the browser.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUDObGarqOE82PhyLER_CfwYw2RLzvT4aI_ztnkTJmssmzCYpHtG1TzCUnk8S2WiFSUZpfFgfxqQN_Fh8gKBxXYv76Tqm5ngmTFA6JA9zl6bbXfTugUkhEF17B7MqQI-5rr0FfG2x5jwKr/s1600/untitled.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUDObGarqOE82PhyLER_CfwYw2RLzvT4aI_ztnkTJmssmzCYpHtG1TzCUnk8S2WiFSUZpfFgfxqQN_Fh8gKBxXYv76Tqm5ngmTFA6JA9zl6bbXfTugUkhEF17B7MqQI-5rr0FfG2x5jwKr/s320/untitled.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;u&gt;&lt;b&gt;Here is the output in the out.txt file where the System.out is redirected.&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;i&gt;2012-04-12 14:01:32 Commons Daemon procrun stdout initialized&lt;br /&gt;
Session Created with ID=EA0AEFF5335E7F8E9B59F99FBDA5157D at&amp;nbsp; time Thu Apr 12 14:01:44 IST 2012&lt;br /&gt;
Session Destroyed with ID=EA0AEFF5335E7F8E9B59F99FBDA5157D at&amp;nbsp; time Thu Apr 12 14:02:05 IST 2012&lt;br /&gt;
Session Created with ID=2BE4BD1A6EFAA45785F63EB5991B46D1 at&amp;nbsp; time Thu Apr 12 14:24:04 IST 2012&lt;br /&gt;
Session Destroyed with ID=2BE4BD1A6EFAA45785F63EB5991B46D1 at&amp;nbsp; time Thu Apr 12 14:24:04 IST 2012&lt;br /&gt;
Session Created with ID=2BFF301ED2C87299CB0E75F51323340D at&amp;nbsp; time Thu Apr 12 14:24:06 IST 2012&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/1610483627125115737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2012/04/session-listeners-in-apache-tomcat.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/1610483627125115737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/1610483627125115737'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2012/04/session-listeners-in-apache-tomcat.html' title='Session Listeners in Apache Tomcat'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBVUvt41NGpBLE438sP5eEFlWa2fam_x6kdr5DYUNGtrdv4b16FcPXb66y7PdEADYu5X8HR3dL7P24y4EIsGye__lUMGYuUaeacXOE_7W3pxC6TgeS9m4T-Mf2i7sOmVt2Aokr-scaCJk2/s72-c/untitled.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-7441065854131510134</id><published>2012-04-12T12:15:00.001+05:30</published><updated>2012-04-12T13:02:16.694+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Exchanging Variables"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Rotating Variables"/><category scheme="http://www.blogger.com/atom/ns#" term="Swapping Variables"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>Exchanging the value of Variables</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;b&gt;In this post we shall look at the various ways of interchanging the values of variables. We shall not be looking into methods involving loops, but only simple expression based methods.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
Essentially, any binary operation which has an inverse can be used as a basis for the exchange. Thus, we shall use the assignment operator, addition, subtraction, multiplication and division. The last two will require the divisor to be non zero.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Here is the program which does this exchange.&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;Exchange.c&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;math.h&amp;gt;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
float a=15,b=10,t;&lt;br /&gt;
clrscr();&lt;br /&gt;
printf(&quot;Original values a=%f,b=%f&quot;,a,b);&lt;br /&gt;
printf(&quot;\nSwap using a temporary variable\n&quot;);&lt;br /&gt;
t=a;a=b;b=t;&lt;br /&gt;
printf(&quot;Swapped values a=%f,b=%f&quot;,a,b);&lt;br /&gt;
printf(&quot;\nSwap using a substraction\n&quot;);&lt;br /&gt;
a=a-b;b=a+b;a=b-a;&lt;br /&gt;
printf(&quot;Swapped values a=%f,b=%f&quot;,a,b);&lt;br /&gt;
printf(&quot;\nSwap using a addition\n&quot;);&lt;br /&gt;
a=a+b;b=a-b;a=a-b;&lt;br /&gt;
printf(&quot;Swapped values a=%f,b=%f&quot;,a,b);&lt;br /&gt;
printf(&quot;\nSwap using a multiplication\n&quot;);&lt;br /&gt;
a=a*b;b=a/b;a=a/b;&lt;br /&gt;
printf(&quot;Swapped values a=%f,b=%f&quot;,a,b);&lt;br /&gt;
printf(&quot;\nSwap using a division\n&quot;);&lt;br /&gt;
a=a/b;b=a*b;a=b/a;&lt;br /&gt;
printf(&quot;Swapped values a=%f,b=%f&quot;,a,b);&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;u&gt;&lt;b&gt;This is the output of the program&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;Original values a=15.000000,b=10.000000&lt;br /&gt;
Swap using a temporary variable&lt;br /&gt;
Swapped values a=10.000000,b=15.000000&lt;br /&gt;
Swap using a substraction&lt;br /&gt;
Swapped values a=15.000000,b=10.000000&lt;br /&gt;
Swap using a addition&lt;br /&gt;
Swapped values a=10.000000,b=15.000000&lt;br /&gt;
Swap using a multiplication&lt;br /&gt;
Swapped values a=15.000000,b=10.000000&lt;br /&gt;
Swap using a division&lt;br /&gt;
Swapped values a=10.000000,b=15.000000&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;Rotation of values&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Rotation of values a&amp;lt;--b, b&amp;lt;-- c, c&amp;lt;-- a&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;This is accomplished through the following program code. &lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;
#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;conio.h&amp;gt;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
int a=1,b=2,c=3,t;&lt;br /&gt;
clrscr();&lt;br /&gt;
printf(&quot;Original values a=%d,b=%d,c=%d\n&quot;,a,b,c);&lt;br /&gt;
t=a;&lt;br /&gt;
a=b;&lt;br /&gt;
b=c;&lt;br /&gt;
c=t;&lt;br /&gt;
printf(&quot;Rotated values a=%d,b=%d,c=%d\n&quot;,a,b,c);&lt;br /&gt;
getch();&lt;br /&gt;
}&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Here is the output of this program&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;br /&gt;
Original values a=1,b=2,c=3&lt;br /&gt;
Rotated values a=2,b=3,c=1&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Exchanging two elements via a temporary variable is a special case of the general rotation problem. As an interesting aside we can see that for &lt;i&gt;n&lt;/i&gt; elements to be rotated, &lt;i&gt;n&lt;/i&gt; rotations would give back the original set.&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/7441065854131510134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2012/04/exchanging-value-of-variables.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/7441065854131510134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/7441065854131510134'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2012/04/exchanging-value-of-variables.html' title='Exchanging the value of Variables'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-4498774201952050199</id><published>2012-02-19T20:35:00.000+05:30</published><updated>2012-02-19T20:35:13.119+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Database Triggers"/><category scheme="http://www.blogger.com/atom/ns#" term="DDL Triggers"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Triggers"/><title type='text'>Database &amp; DDL Triggers in Oracle</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;b&gt;&lt;u&gt;In this post, we shall create a series of triggers to illustrate the use of Database triggers in Oracle.&lt;br /&gt;
&lt;br /&gt;
Database Triggers:-&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Database triggers are fired on Login &amp;amp; Logout. Let us create a trigger to maintain a list of logins &amp;amp; logouts. First a table to store the login information:-&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;
&lt;/u&gt;&lt;i&gt;create table LoginStats(username varchar(50),datetimeoflogin date)&lt;br /&gt;
&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWWRg7KoQoOkzhaVhMqIyxrnvTEw06eo2r0FC5hcLqJKAZNLZ01iMRM_pp39bNMEC4pGVP-O5GHY-6QACRg2Iv-SxdHovfW14m_I3rCbppLX9fm_u0jL7cIlVbYFiVJh1KDxhCUcgXOApO/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;126&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWWRg7KoQoOkzhaVhMqIyxrnvTEw06eo2r0FC5hcLqJKAZNLZ01iMRM_pp39bNMEC4pGVP-O5GHY-6QACRg2Iv-SxdHovfW14m_I3rCbppLX9fm_u0jL7cIlVbYFiVJh1KDxhCUcgXOApO/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;u&gt;Here is the trigger:-&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;create or replace trigger logintrigger &lt;br /&gt;
after logon on database&lt;br /&gt;
begin&lt;br /&gt;
insert into LoginStats values(ora_login_user,sysdate);&lt;br /&gt;
end;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;b&gt;A logon trigger can only be a after trigger.&lt;u&gt;&lt;br /&gt;
&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;A trigger for Logout&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;The table :&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;create table LogoutStats(username varchar(50),datetimeoflogout date)&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;create or replace trigger logofftrigger &lt;br /&gt;
before logoff on database&lt;br /&gt;
begin&lt;br /&gt;
insert into LogoutStats values(ora_login_user,sysdate);&lt;br /&gt;
end;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinF_a7tAYy1KOvBrow-vvafK9NIjNTY6sNKfCnQiRxjqEM5E_louXIUkQP2mS_Eq78svF-IHs1JiazNRrnJQldwzmwocesASmyYDNNfA1qTcDGDUbRdaOGIm_ZFyI1PzykBbD0H4m_9CHN/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;126&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinF_a7tAYy1KOvBrow-vvafK9NIjNTY6sNKfCnQiRxjqEM5E_louXIUkQP2mS_Eq78svF-IHs1JiazNRrnJQldwzmwocesASmyYDNNfA1qTcDGDUbRdaOGIm_ZFyI1PzykBbD0H4m_9CHN/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;b&gt;&lt;u&gt;DDL Triggers are created for Create,Alter &amp;amp; Drop statements.&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Here is a trigger that tracks created objects:-&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;create table CreatedObjects(CreatedByUser varchar(100),ObjectName varchar(100),ObjectType varchar(100),DateofCreation date)&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;CREATE or replace TRIGGER Databasecreateobjecttrigger AFTER CREATE&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ON database&lt;br /&gt;
begin&lt;br /&gt;
insert into CreatedObjects values(ora_login_user,ora_dict_obj_name,ora_dict_obj_type,sysdate);&lt;br /&gt;
end;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2_-6Icq1ci7_zXLRfSwOO2WkRdh_iEVRADeAGXnTPW-EYwCzXK7ByRLr5lw_6oScXzGj7BQd3ao4Ei4n74Jm8LXbcnuGR6otKS4vVD3mqakSlUc2YKrtGypiLQBSMGOg2MMyu9BAI96wr/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;207&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2_-6Icq1ci7_zXLRfSwOO2WkRdh_iEVRADeAGXnTPW-EYwCzXK7ByRLr5lw_6oScXzGj7BQd3ao4Ei4n74Jm8LXbcnuGR6otKS4vVD3mqakSlUc2YKrtGypiLQBSMGOg2MMyu9BAI96wr/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;b&gt;For DML Triggers , please refer&lt;/b&gt; &lt;a href=&quot;http://champakonline.blogspot.com/2010/10/some-triggers-in-oracle.html&quot; target=&quot;_blank&quot;&gt;http://champakonline.blogspot.com/2010/10/some-triggers-in-oracle.html&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/4498774201952050199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2012/02/database-ddl-triggers-in-oracle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/4498774201952050199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/4498774201952050199'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2012/02/database-ddl-triggers-in-oracle.html' title='Database &amp; DDL Triggers in Oracle'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWWRg7KoQoOkzhaVhMqIyxrnvTEw06eo2r0FC5hcLqJKAZNLZ01iMRM_pp39bNMEC4pGVP-O5GHY-6QACRg2Iv-SxdHovfW14m_I3rCbppLX9fm_u0jL7cIlVbYFiVJh1KDxhCUcgXOApO/s72-c/1.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-1686099557726485799</id><published>2012-02-17T22:33:00.000+05:30</published><updated>2012-02-17T22:33:58.612+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Android Web Services"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Parameter Passing in Android Web Services"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>Calling a Web Service through Android and passing Parameters</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;b&gt;In the last post&lt;/b&gt; &lt;a href=&quot;http://champakonline.blogspot.com/2012/02/calling-web-service-through-android.html&quot; target=&quot;_blank&quot;&gt;http://champakonline.blogspot.com/2012/02/calling-web-service-through-android.html&lt;/a&gt; &lt;b&gt;, we learned how to call a .Net Web Service from Android. In this post, we shall call a Web Service that requires parameters to be sent.&lt;br /&gt;
For this application, we shall use the Web Service whose WSDL is at&lt;/b&gt; &lt;a href=&quot;http://hypatiasoftwaresolutions.com/HypatiaQuotesService.asmx?WSDL&quot; target=&quot;_blank&quot;&gt;http://hypatiasoftwaresolutions.com/HypatiaQuotesService.asmx?WSDL&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The WSDL is &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;
&amp;lt;wsdl:definitions targetNamespace=&quot;http://tempuri.org/&quot;&amp;gt;&amp;lt;wsdl:types&amp;gt;&amp;lt;s:schema elementFormDefault=&quot;qualified&quot; targetNamespace=&quot;http://tempuri.org/&quot;&amp;gt;&amp;lt;s:element name=&quot;getBirthday&quot;&amp;gt;&amp;lt;s:complexType&amp;gt;&amp;lt;s:sequence&amp;gt;&amp;lt;s:element minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; name=&quot;name&quot; type=&quot;s:string&quot;/&amp;gt;&amp;lt;/s:sequence&amp;gt;&amp;lt;/s:complexType&amp;gt;&amp;lt;/s:element&amp;gt;&amp;lt;s:element name=&quot;getBirthdayResponse&quot;&amp;gt;&amp;lt;s:complexType&amp;gt;&amp;lt;s:sequence&amp;gt;&amp;lt;s:element minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; name=&quot;getBirthdayResult&quot; type=&quot;s:string&quot;/&amp;gt;&amp;lt;/s:sequence&amp;gt;&amp;lt;/s:complexType&amp;gt;&amp;lt;/s:element&amp;gt;&amp;lt;s:element name=&quot;GetAQuote&quot;&amp;gt;&amp;lt;s:complexType/&amp;gt;&amp;lt;/s:element&amp;gt;&amp;lt;s:element name=&quot;GetAQuoteResponse&quot;&amp;gt;&amp;lt;s:complexType&amp;gt;&amp;lt;s:sequence&amp;gt;&amp;lt;s:element minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; name=&quot;GetAQuoteResult&quot; type=&quot;s:string&quot;/&amp;gt;&amp;lt;/s:sequence&amp;gt;&amp;lt;/s:complexType&amp;gt;&amp;lt;/s:element&amp;gt;&amp;lt;/s:schema&amp;gt;&amp;lt;/wsdl:types&amp;gt;&amp;lt;wsdl:message name=&quot;getBirthdaySoapIn&quot;&amp;gt;&amp;lt;wsdl:part name=&quot;parameters&quot; element=&quot;tns:getBirthday&quot;/&amp;gt;&amp;lt;/wsdl:message&amp;gt;&amp;lt;wsdl:message name=&quot;getBirthdaySoapOut&quot;&amp;gt;&amp;lt;wsdl:part name=&quot;parameters&quot; element=&quot;tns:getBirthdayResponse&quot;/&amp;gt;&amp;lt;/wsdl:message&amp;gt;&amp;lt;wsdl:message name=&quot;GetAQuoteSoapIn&quot;&amp;gt;&amp;lt;wsdl:part name=&quot;parameters&quot; element=&quot;tns:GetAQuote&quot;/&amp;gt;&amp;lt;/wsdl:message&amp;gt;&amp;lt;wsdl:message name=&quot;GetAQuoteSoapOut&quot;&amp;gt;&amp;lt;wsdl:part name=&quot;parameters&quot; element=&quot;tns:GetAQuoteResponse&quot;/&amp;gt;&amp;lt;/wsdl:message&amp;gt;&amp;lt;wsdl:portType name=&quot;HypatiaQuotesServiceSoap&quot;&amp;gt;&amp;lt;wsdl:operation name=&quot;getBirthday&quot;&amp;gt;&amp;lt;wsdl:input message=&quot;tns:getBirthdaySoapIn&quot;/&amp;gt;&amp;lt;wsdl:output message=&quot;tns:getBirthdaySoapOut&quot;/&amp;gt;&amp;lt;/wsdl:operation&amp;gt;&amp;lt;wsdl:operation name=&quot;GetAQuote&quot;&amp;gt;&amp;lt;wsdl:input message=&quot;tns:GetAQuoteSoapIn&quot;/&amp;gt;&amp;lt;wsdl:output message=&quot;tns:GetAQuoteSoapOut&quot;/&amp;gt;&amp;lt;/wsdl:operation&amp;gt;&amp;lt;/wsdl:portType&amp;gt;&amp;lt;wsdl:binding name=&quot;HypatiaQuotesServiceSoap&quot; type=&quot;tns:HypatiaQuotesServiceSoap&quot;&amp;gt;&amp;lt;soap:binding transport=&quot;http://schemas.xmlsoap.org/soap/http&quot;/&amp;gt;&amp;lt;wsdl:operation name=&quot;getBirthday&quot;&amp;gt;&amp;lt;soap:operation soapAction=&quot;http://tempuri.org/getBirthday&quot; style=&quot;document&quot;/&amp;gt;&amp;lt;wsdl:input&amp;gt;&amp;lt;soap:body use=&quot;literal&quot;/&amp;gt;&amp;lt;/wsdl:input&amp;gt;&amp;lt;wsdl:output&amp;gt;&amp;lt;soap:body use=&quot;literal&quot;/&amp;gt;&amp;lt;/wsdl:output&amp;gt;&amp;lt;/wsdl:operation&amp;gt;&amp;lt;wsdl:operation name=&quot;GetAQuote&quot;&amp;gt;&amp;lt;soap:operation soapAction=&quot;http://tempuri.org/GetAQuote&quot; style=&quot;document&quot;/&amp;gt;&amp;lt;wsdl:input&amp;gt;&amp;lt;soap:body use=&quot;literal&quot;/&amp;gt;&amp;lt;/wsdl:input&amp;gt;&amp;lt;wsdl:output&amp;gt;&amp;lt;soap:body use=&quot;literal&quot;/&amp;gt;&amp;lt;/wsdl:output&amp;gt;&amp;lt;/wsdl:operation&amp;gt;&amp;lt;/wsdl:binding&amp;gt;&amp;lt;wsdl:binding name=&quot;HypatiaQuotesServiceSoap12&quot; type=&quot;tns:HypatiaQuotesServiceSoap&quot;&amp;gt;&amp;lt;soap12:binding transport=&quot;http://schemas.xmlsoap.org/soap/http&quot;/&amp;gt;&amp;lt;wsdl:operation name=&quot;getBirthday&quot;&amp;gt;&amp;lt;soap12:operation soapAction=&quot;http://tempuri.org/getBirthday&quot; style=&quot;document&quot;/&amp;gt;&amp;lt;wsdl:input&amp;gt;&amp;lt;soap12:body use=&quot;literal&quot;/&amp;gt;&amp;lt;/wsdl:input&amp;gt;&amp;lt;wsdl:output&amp;gt;&amp;lt;soap12:body use=&quot;literal&quot;/&amp;gt;&amp;lt;/wsdl:output&amp;gt;&amp;lt;/wsdl:operation&amp;gt;&amp;lt;wsdl:operation name=&quot;GetAQuote&quot;&amp;gt;&amp;lt;soap12:operation soapAction=&quot;http://tempuri.org/GetAQuote&quot; style=&quot;document&quot;/&amp;gt;&amp;lt;wsdl:input&amp;gt;&amp;lt;soap12:body use=&quot;literal&quot;/&amp;gt;&amp;lt;/wsdl:input&amp;gt;&amp;lt;wsdl:output&amp;gt;&amp;lt;soap12:body use=&quot;literal&quot;/&amp;gt;&amp;lt;/wsdl:output&amp;gt;&amp;lt;/wsdl:operation&amp;gt;&amp;lt;/wsdl:binding&amp;gt;&amp;lt;wsdl:service name=&quot;HypatiaQuotesService&quot;&amp;gt;&amp;lt;wsdl:port name=&quot;HypatiaQuotesServiceSoap&quot; binding=&quot;tns:HypatiaQuotesServiceSoap&quot;&amp;gt;&amp;lt;soap:address location=&quot;http://hypatiasoftwaresolutions.com/HypatiaQuotesService.asmx&quot;/&amp;gt;&amp;lt;/wsdl:port&amp;gt;&amp;lt;wsdl:port name=&quot;HypatiaQuotesServiceSoap12&quot; binding=&quot;tns:HypatiaQuotesServiceSoap12&quot;&amp;gt;&amp;lt;soap12:address location=&quot;http://hypatiasoftwaresolutions.com/HypatiaQuotesService.asmx&quot;/&amp;gt;&amp;lt;/wsdl:port&amp;gt;&amp;lt;/wsdl:service&amp;gt;&amp;lt;/wsdl:definitions&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt; &lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Since we shall be calling the getBirthday method. The relevant portions to remember are :-&lt;/u&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1)&lt;/b&gt; &lt;b&gt;&lt;i&gt;&amp;lt;wsdl:definitions targetNamespace=&quot;http://tempuri.org/&quot;&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2)&lt;i&gt;&amp;nbsp; &lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&amp;lt;soap:operation soapAction=&quot;http://tempuri.org/getBirthday&quot; style=&quot;document&quot;/&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3)&lt;i&gt;&amp;nbsp; &lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&amp;lt;s:sequence&amp;gt;&amp;lt;s:element minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; name=&quot;name&quot; type=&quot;s:string&quot;/&amp;gt;&amp;lt;/s:sequence&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The first one gives the namespace to be used, the second is the soap action, and the third is the parameter to be passed. The name of the parameter is &lt;/b&gt;&lt;i&gt;&lt;b&gt;&quot;name&quot;&lt;/b&gt;&lt;/i&gt;&lt;b&gt; while the type is&lt;/b&gt; &lt;b&gt;&lt;i&gt;&quot;s:string&quot;.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;It is important to note that, should any of these three items be used wrongly, the parameter passing and calling would not work.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Here is the code for the activity:-&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;HypatiaFriendsActivity.java&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
package hypatia.friends;&lt;br /&gt;
&lt;br /&gt;
import android.app.Activity;&lt;br /&gt;
import android.os.Bundle;&lt;br /&gt;
import android.view.View;&lt;br /&gt;
import android.view.View.OnClickListener;&lt;br /&gt;
import android.widget.Button;&lt;br /&gt;
import android.widget.EditText;&lt;br /&gt;
import android.widget.TextView;&lt;br /&gt;
import org.ksoap2.SoapEnvelope;&lt;br /&gt;
import org.ksoap2.serialization.PropertyInfo;&lt;br /&gt;
import org.ksoap2.serialization.SoapObject;&lt;br /&gt;
import org.ksoap2.serialization.SoapSerializationEnvelope;&lt;br /&gt;
import org.ksoap2.transport.HttpTransportSE;&lt;br /&gt;
public class HypatiaFriendsActivity extends Activity&amp;nbsp; implements OnClickListener{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /** Called when the activity is first created. */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private Button b;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private TextView tv;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private EditText txtname;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private TextView txtBirthday;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(savedInstanceState);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(R.layout.main);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b=(Button)findViewById(R.id.button1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tv=(TextView)findViewById(R.id.txtName);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtBirthday=(TextView)findViewById(R.id.txtBirthday);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtname=(EditText)findViewById(R.id.txtName);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; b.setOnClickListener(this);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View arg0) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated method stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String namespace = &quot;http://tempuri.org/&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String url =&quot;http://hypatiasoftwaresolutions.com/HypatiaQuotesService.asmx?WSDL&quot;;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String soapaction = &quot;http://tempuri.org/getBirthday&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String methodname = &quot;getBirthday&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SoapObject request = new SoapObject(namespace, methodname); &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; request.addProperty(&quot;name&quot;,&quot;&quot; + txtname.getText());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; envelope.dotNet=true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; envelope.setOutputSoapObject(request);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpTransportSE androidHttpTransport = new HttpTransportSE (url);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; androidHttpTransport.call(soapaction, envelope);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; org.ksoap2.serialization.SoapObject resultsRequestSOAP =(org.ksoap2.serialization.SoapObject) envelope.bodyIn;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; txtBirthday.setText(&quot;&quot; + resultsRequestSOAP.getProperty(0));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; catch(Exception ex)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tv.setText(&quot;&quot; + ex);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;main.xml&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;fill_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;fill_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orientation=&quot;vertical&quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;fill_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text=&quot;@string/hello&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id=&quot;@+id/txtBirthday&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text=&quot;@string/blank&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:textAppearance=&quot;?android:attr/textAppearanceLarge&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EditText&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id=&quot;@+id/txtName&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:inputType=&quot;textPersonName&quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;requestFocus /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/EditText&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id=&quot;@+id/button1&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text=&quot;@string/buttontext&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp6PiiuIGKVibxotxxkS3QbfS2acmdRtVWF8Bxkty55YrZLeVrH0VOhfw9U0mdb_-4cd3lMA9LoZsNDhQNnGIURI3d4OiOJdNbVP4ZRy5zXcXHawHhkuvt0YkVtIwXoBInio1mKDYLh4rN/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp6PiiuIGKVibxotxxkS3QbfS2acmdRtVWF8Bxkty55YrZLeVrH0VOhfw9U0mdb_-4cd3lMA9LoZsNDhQNnGIURI3d4OiOJdNbVP4ZRy5zXcXHawHhkuvt0YkVtIwXoBInio1mKDYLh4rN/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;strings.xml&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;hello&quot;&amp;gt;Hypatia Friend Finder&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;app_name&quot;&amp;gt;HypatiaFriends&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;buttontext&quot;&amp;gt;Get Birthday&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;blank&quot;&amp;gt;&amp;lt;/string&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/resources&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;AndroidManifest.xml&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; package=&quot;hypatia.friends&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:versionCode=&quot;1&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:versionName=&quot;1.0&quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;uses-sdk android:minSdkVersion=&quot;8&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;uses-permission&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:name=&quot;android.permission.INTERNET&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;application&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:icon=&quot;@drawable/ic_launcher&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:label=&quot;@string/app_name&quot; &amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;activity&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:label=&quot;@string/app_name&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:name=&quot;.HypatiaFriendsActivity&quot; &amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;intent-filter &amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;action android:name=&quot;android.intent.action.MAIN&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;category android:name=&quot;android.intent.category.LAUNCHER&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/intent-filter&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/activity&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/application&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;The Internet permission is important here, because this application accesses the internet.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;lt;uses-permission&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:name=&quot;android.permission.INTERNET&quot; /&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZfV-CQSm9KsJ98-tjldVqJoY41ujdmZxoEpD4ZVzsp5aaQRq27OKKzcmx3BWzyMqeZZIYjBKZ4GxGoLpF_D18hpETgy2v8i9lEf64b3fq62TOrfyEX2eGtXszDf2iiaias-hhZf-BMJOQ/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZfV-CQSm9KsJ98-tjldVqJoY41ujdmZxoEpD4ZVzsp5aaQRq27OKKzcmx3BWzyMqeZZIYjBKZ4GxGoLpF_D18hpETgy2v8i9lEf64b3fq62TOrfyEX2eGtXszDf2iiaias-hhZf-BMJOQ/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/1686099557726485799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2012/02/calling-web-service-through-android-and.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/1686099557726485799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/1686099557726485799'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2012/02/calling-web-service-through-android-and.html' title='Calling a Web Service through Android and passing Parameters'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp6PiiuIGKVibxotxxkS3QbfS2acmdRtVWF8Bxkty55YrZLeVrH0VOhfw9U0mdb_-4cd3lMA9LoZsNDhQNnGIURI3d4OiOJdNbVP4ZRy5zXcXHawHhkuvt0YkVtIwXoBInio1mKDYLh4rN/s72-c/1.JPG" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-1288277573091597813</id><published>2012-02-14T09:52:00.001+05:30</published><updated>2012-02-15T13:10:31.154+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Android Web Services"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Services"/><title type='text'>Calling a Web Service through Android</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;Calling a Web Service using Android&lt;br /&gt;
&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;In this post we shall learn how to call a web service using Android.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;For this purpose we shall use the Hypatia Quotes Web Service at &lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://hypatiasoftwaresolutions.com/HypatiaQuotesService.asmx&quot;&gt;http://hypatiasoftwaresolutions.com/HypatiaQuotesService.asmx&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;which returns random quotes of Hypatia.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;The WSDL for this Web Service is :-&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;http://hypatiasoftwaresolutions.com/HypatiaQuotesService.asmx?WSDL&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&amp;lt;wsdl:definitions targetNamespace=&quot;http://tempuri.org/&quot;&amp;gt;&amp;lt;wsdl:types&amp;gt;&amp;lt;s:schema elementFormDefault=&quot;qualified&quot; targetNamespace=&quot;http://tempuri.org/&quot;&amp;gt;&amp;lt;s:element name=&quot;GetAQuote&quot;&amp;gt;&amp;lt;s:complexType/&amp;gt;&amp;lt;/s:element&amp;gt;&amp;lt;s:element name=&quot;GetAQuoteResponse&quot;&amp;gt;&amp;lt;s:complexType&amp;gt;&amp;lt;s:sequence&amp;gt;&amp;lt;s:element minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; name=&quot;GetAQuoteResult&quot; type=&quot;s:string&quot;/&amp;gt;&amp;lt;/s:sequence&amp;gt;&amp;lt;/s:complexType&amp;gt;&amp;lt;/s:element&amp;gt;&amp;lt;/s:schema&amp;gt;&amp;lt;/wsdl:types&amp;gt;&amp;lt;wsdl:message name=&quot;GetAQuoteSoapIn&quot;&amp;gt;&amp;lt;wsdl:part name=&quot;parameters&quot; element=&quot;tns:GetAQuote&quot;/&amp;gt;&amp;lt;/wsdl:message&amp;gt;&amp;lt;wsdl:message name=&quot;GetAQuoteSoapOut&quot;&amp;gt;&amp;lt;wsdl:part name=&quot;parameters&quot; element=&quot;tns:GetAQuoteResponse&quot;/&amp;gt;&amp;lt;/wsdl:message&amp;gt;&amp;lt;wsdl:portType name=&quot;HypatiaQuotesServiceSoap&quot;&amp;gt;&amp;lt;wsdl:operation name=&quot;GetAQuote&quot;&amp;gt;&amp;lt;wsdl:input message=&quot;tns:GetAQuoteSoapIn&quot;/&amp;gt;&amp;lt;wsdl:output message=&quot;tns:GetAQuoteSoapOut&quot;/&amp;gt;&amp;lt;/wsdl:operation&amp;gt;&amp;lt;/wsdl:portType&amp;gt;&amp;lt;wsdl:binding name=&quot;HypatiaQuotesServiceSoap&quot; type=&quot;tns:HypatiaQuotesServiceSoap&quot;&amp;gt;&amp;lt;soap:binding transport=&quot;http://schemas.xmlsoap.org/soap/http&quot;/&amp;gt;&amp;lt;wsdl:operation name=&quot;GetAQuote&quot;&amp;gt;&lt;u&gt;&lt;b&gt;&amp;lt;soap:operation soapAction=&quot;http://tempuri.org/GetAQuote&quot; style=&quot;document&quot;/&amp;gt;&lt;/b&gt;&lt;/u&gt;&amp;lt;wsdl:input&amp;gt;&amp;lt;soap:body use=&quot;literal&quot;/&amp;gt;&amp;lt;/wsdl:input&amp;gt;&amp;lt;wsdl:output&amp;gt;&amp;lt;soap:body use=&quot;literal&quot;/&amp;gt;&amp;lt;/wsdl:output&amp;gt;&amp;lt;/wsdl:operation&amp;gt;&amp;lt;/wsdl:binding&amp;gt;&amp;lt;wsdl:binding name=&quot;HypatiaQuotesServiceSoap12&quot; type=&quot;tns:HypatiaQuotesServiceSoap&quot;&amp;gt;&amp;lt;soap12:binding transport=&quot;http://schemas.xmlsoap.org/soap/http&quot;/&amp;gt;&lt;u&gt;&lt;b&gt;&amp;lt;wsdl:operation name=&quot;GetAQuote&quot;&amp;gt;&lt;/b&gt;&lt;/u&gt;&amp;lt;soap12:operation soapAction=&quot;http://tempuri.org/GetAQuote&quot; style=&quot;document&quot;/&amp;gt;&amp;lt;wsdl:input&amp;gt;&amp;lt;soap12:body use=&quot;literal&quot;/&amp;gt;&amp;lt;/wsdl:input&amp;gt;&amp;lt;wsdl:output&amp;gt;&amp;lt;soap12:body use=&quot;literal&quot;/&amp;gt;&amp;lt;/wsdl:output&amp;gt;&amp;lt;/wsdl:operation&amp;gt;&amp;lt;/wsdl:binding&amp;gt;&amp;lt;wsdl:service name=&quot;HypatiaQuotesService&quot;&amp;gt;&amp;lt;wsdl:port name=&quot;HypatiaQuotesServiceSoap&quot; binding=&quot;tns:HypatiaQuotesServiceSoap&quot;&amp;gt;&amp;lt;soap:address location=&quot;http://hypatiasoftwaresolutions.com/HypatiaQuotesService.asmx&quot;/&amp;gt;&amp;lt;/wsdl:port&amp;gt;&amp;lt;wsdl:port name=&quot;HypatiaQuotesServiceSoap12&quot; binding=&quot;tns:HypatiaQuotesServiceSoap12&quot;&amp;gt;&amp;lt;soap12:address location=&quot;http://hypatiasoftwaresolutions.com/HypatiaQuotesService.asmx&quot;/&amp;gt;&amp;lt;/wsdl:port&amp;gt;&amp;lt;/wsdl:service&amp;gt;&amp;lt;/wsdl:definitions&amp;gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Out of this document two parts are very important, and I have underlined them:-&lt;/b&gt;&lt;br /&gt;
1) &lt;i&gt;&lt;u&gt;&lt;b&gt;&amp;lt;soap:operation soapAction=&quot;http://tempuri.org/GetAQuote&quot; style=&quot;document&quot;/&amp;gt;&lt;/b&gt;&lt;/u&gt;&lt;/i&gt;and&lt;i&gt;&lt;u&gt;&lt;b&gt;&lt;/b&gt;&lt;/u&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;2)&lt;i&gt;&lt;u&gt;&lt;b&gt; &lt;/b&gt;&lt;/u&gt;&lt;/i&gt;&lt;i&gt;&lt;u&gt;&lt;b&gt;&amp;lt;wsdl:operation name=&quot;GetAQuote&quot;&amp;gt;&lt;/b&gt;&lt;/u&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQaHwCM4F2LCZT7BnFPALm_zIZuLpnH5t29bSll6X5XsvVgd_kmDMD6Oa3DjZQXqYjmHBkETnQMlKtixnW5k6s9_lztqvodKk-P5o1XET9ZwDyYrBek7FIAf44_r5ZUvLmC15vdM1RBgAe/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/div&gt;&lt;b&gt;The first o&lt;/b&gt;&lt;b&gt;ne becomes the soap action, and the second becomes the method name.&lt;/b&gt;&lt;i&gt;&lt;u&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/u&gt;&lt;/i&gt;&lt;b&gt;Now, getting to the android part.First of all download the &lt;i&gt;ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar. &lt;/i&gt;This file is currently available at :-&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://ksoap2-android.googlecode.com/svn/m2-repo/com/google/code/ksoap2-android/ksoap2-android-assembly/2.6.0/ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar&quot;&gt;http://ksoap2-android.googlecode.com/svn/m2-repo/com/google/code/ksoap2-android/ksoap2-&lt;br /&gt;
android-assembly/2.6.0/ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar&lt;br /&gt;
&lt;/a&gt;&lt;span style=&quot;color: black;&quot;&gt;Next, add this file to the current project.&lt;br /&gt;
1)&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQaHwCM4F2LCZT7BnFPALm_zIZuLpnH5t29bSll6X5XsvVgd_kmDMD6Oa3DjZQXqYjmHBkETnQMlKtixnW5k6s9_lztqvodKk-P5o1XET9ZwDyYrBek7FIAf44_r5ZUvLmC15vdM1RBgAe/s1600/1.JPG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQaHwCM4F2LCZT7BnFPALm_zIZuLpnH5t29bSll6X5XsvVgd_kmDMD6Oa3DjZQXqYjmHBkETnQMlKtixnW5k6s9_lztqvodKk-P5o1XET9ZwDyYrBek7FIAf44_r5ZUvLmC15vdM1RBgAe/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQaHwCM4F2LCZT7BnFPALm_zIZuLpnH5t29bSll6X5XsvVgd_kmDMD6Oa3DjZQXqYjmHBkETnQMlKtixnW5k6s9_lztqvodKk-P5o1XET9ZwDyYrBek7FIAf44_r5ZUvLmC15vdM1RBgAe/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;2)&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQgF2zgUWoCoVvznvC3aLvpy9suD4C6-ZB8cQIrTSkVVnMYAebUccziZRRRdilEfCFqqVfb_pmFqe5GMW2LLUKsqy67kACwkOjTQBmGITLjr_m_nSDGwsKaad-a6P4fBWBjtpnlaqBK1u2/s1600/2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQgF2zgUWoCoVvznvC3aLvpy9suD4C6-ZB8cQIrTSkVVnMYAebUccziZRRRdilEfCFqqVfb_pmFqe5GMW2LLUKsqy67kACwkOjTQBmGITLjr_m_nSDGwsKaad-a6P4fBWBjtpnlaqBK1u2/s320/2.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;u&gt;&lt;b&gt;Here is the complete project in Eclipse:-&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdQzEesYp-WpZeT8U9wMgpd6InSwGDgsyC9mt_JW5LGd9VIKeol_Waf4eT4ZjCFgpagcOv9n3pH6-4RpundshSkXEkuNnDoT3_e8aF61aPOs1dF6CwsnkjTeyO21_cTjY8SNQSVbHhFeAE/s1600/5.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdQzEesYp-WpZeT8U9wMgpd6InSwGDgsyC9mt_JW5LGd9VIKeol_Waf4eT4ZjCFgpagcOv9n3pH6-4RpundshSkXEkuNnDoT3_e8aF61aPOs1dF6CwsnkjTeyO21_cTjY8SNQSVbHhFeAE/s320/5.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;u&gt;&lt;b&gt;The Activity class in eclipse&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;HypatiaQuotesClientActivity&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;package quotes.hypatia;&lt;br /&gt;
&lt;br /&gt;
import android.app.Activity;&lt;br /&gt;
import android.os.Bundle;&lt;br /&gt;
import android.view.View;&lt;br /&gt;
import android.view.View.OnClickListener;&lt;br /&gt;
import android.widget.Button;&lt;br /&gt;
import android.widget.TextView;&lt;br /&gt;
&lt;br /&gt;
import org.ksoap2.SoapEnvelope;&lt;br /&gt;
import org.ksoap2.serialization.SoapObject;&lt;br /&gt;
import org.ksoap2.serialization.SoapSerializationEnvelope;&lt;br /&gt;
import org.ksoap2.transport.HttpTransportSE;&lt;br /&gt;
public class HypatiaQuotesClientActivity extends Activity&amp;nbsp; implements OnClickListener{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /** Called when the activity is first created. */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private Button b;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private TextView tv;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(savedInstanceState);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(R.layout.main);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b=(Button)findViewById(R.id.button1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tv=(TextView)findViewById(R.id.txtQuote);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; b.setOnClickListener(this);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View arg0) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated method stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String namespace = &quot;http://hypatiasoftwaresolutions.com&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String url =&quot;http://hypatiasoftwaresolutions.com/HypatiaQuotesService.asmx?WSDL&quot;;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String soapaction = &quot;http://tempuri.org/GetAQuote&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String methodname = &quot;GetAQuote&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SoapObject request = new SoapObject(namespace, methodname); &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SoapSerializationEnvelope envelope = &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; new SoapSerializationEnvelope(SoapEnvelope.VER11); &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; envelope.setOutputSoapObject(request);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HttpTransportSE androidHttpTransport = new HttpTransportSE(url);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; androidHttpTransport.call(soapaction, envelope);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; org.ksoap2.serialization.SoapObject resultsRequestSOAP =(org.ksoap2.serialization.SoapObject) envelope.bodyIn;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int n=resultsRequestSOAP.getPropertyCount();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tv.setText(&quot;&quot; + resultsRequestSOAP.getPropertyAsString(n-1));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; catch(Exception ex)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tv.setText(&quot;&quot; + ex);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;main.xml&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;fill_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;fill_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orientation=&quot;vertical&quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;fill_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text=&quot;@string/hello&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id=&quot;@+id/txtQuote&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text=&quot;@string/nothing&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:textAppearance=&quot;?android:attr/textAppearanceLarge&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id=&quot;@+id/button1&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text=&quot;@string/ButtonText&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLRD98uDr9rfmFG_7KJD61mBImS6r03qm_jILQAwAe8CW8-tpziikyybPq8Pf5k66z5gMTkppSPWr1CcdgDu4hXFf7btM9Cm6m9PK6SS8POTHTi7BXKVl4lM9jS_XT3YwvMRsW-JASofk_/s1600/6.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLRD98uDr9rfmFG_7KJD61mBImS6r03qm_jILQAwAe8CW8-tpziikyybPq8Pf5k66z5gMTkppSPWr1CcdgDu4hXFf7btM9Cm6m9PK6SS8POTHTi7BXKVl4lM9jS_XT3YwvMRsW-JASofk_/s320/6.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;br /&gt;
AndroidManifest.xml&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; package=&quot;quotes.hypatia&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:versionCode=&quot;1&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:versionName=&quot;1.0&quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;uses-sdk android:minSdkVersion=&quot;8&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;uses-permission&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:name=&quot;android.permission.INTERNET&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;application&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:icon=&quot;@drawable/ic_launcher&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:label=&quot;@string/app_name&quot; &amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;activity&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:label=&quot;@string/app_name&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:name=&quot;.HypatiaQuotesClientActivity&quot; &amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;intent-filter &amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;action android:name=&quot;android.intent.action.MAIN&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;category android:name=&quot;android.intent.category.LAUNCHER&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/intent-filter&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/activity&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/application&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;u&gt;Since, we are calling web services, the internet permission is required:-&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;lt;uses-permission&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:name=&quot;android.permission.INTERNET&quot; /&amp;gt;&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;strings.xml&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJIjHsZ1VP-R8OaNJd6VPnfCuztWhXEyYq1Yi_22BS5uKxtgGk2UnKyJ3AouBi38s8FM-tMjPA17zlHk7xrcsvtqom1O1cXKqWVnoGjI8ms2DBx6up-tblUP7SVWoY8vEU56r_oFPVSuI4/s1600/3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;hello&quot;&amp;gt;Random Hypatia Quotes&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;app_name&quot;&amp;gt;HypatiaQuotesClient&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;nothing&quot;&amp;gt;&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;ButtonText&quot;&amp;gt;Hypatia Quotes&amp;lt;/string&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/resources&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Here is the output of the program in the emulator:-&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Sample output 1&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJIjHsZ1VP-R8OaNJd6VPnfCuztWhXEyYq1Yi_22BS5uKxtgGk2UnKyJ3AouBi38s8FM-tMjPA17zlHk7xrcsvtqom1O1cXKqWVnoGjI8ms2DBx6up-tblUP7SVWoY8vEU56r_oFPVSuI4/s1600/3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;294&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJIjHsZ1VP-R8OaNJd6VPnfCuztWhXEyYq1Yi_22BS5uKxtgGk2UnKyJ3AouBi38s8FM-tMjPA17zlHk7xrcsvtqom1O1cXKqWVnoGjI8ms2DBx6up-tblUP7SVWoY8vEU56r_oFPVSuI4/s320/3.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;u&gt;&lt;b&gt;Sample output 2&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3BtzcYA3j6bh5cZwwTJA2CN8wAcUy0-TlxCpnYlwe6q0eZoRhs7Z_QvK99ZVx7au7NdVmXVr40X0ls41o-Cmuo5Ne8_86D6W5RPoIiRx7UBAYj8sY5AVANqKpIb38fArvOUSOasdNX8kV/s1600/4.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;276&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3BtzcYA3j6bh5cZwwTJA2CN8wAcUy0-TlxCpnYlwe6q0eZoRhs7Z_QvK99ZVx7au7NdVmXVr40X0ls41o-Cmuo5Ne8_86D6W5RPoIiRx7UBAYj8sY5AVANqKpIb38fArvOUSOasdNX8kV/s320/4.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;In the next post of this series, we shall call a web service that requires parameters.&lt;/b&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2cKdt6l3m92cFoT9OwymWUgb8cjWiE6HgL1fSzhL91RbpllQOyX-FUzPQkRt8gGaVrt83tUWbC7JgDHZ5fdsNynAKX3rcqFXIqhxoRNhQsfeTnDWGXpmY2NhrpXWoaZWHVzJrXGE2wlfr/s1600/untitled.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2cKdt6l3m92cFoT9OwymWUgb8cjWiE6HgL1fSzhL91RbpllQOyX-FUzPQkRt8gGaVrt83tUWbC7JgDHZ5fdsNynAKX3rcqFXIqhxoRNhQsfeTnDWGXpmY2NhrpXWoaZWHVzJrXGE2wlfr/s320/untitled.JPG&quot; width=&quot;231&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;The Web Service running on my Mobile.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/1288277573091597813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2012/02/calling-web-service-through-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/1288277573091597813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/1288277573091597813'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2012/02/calling-web-service-through-android.html' title='Calling a Web Service through Android'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQaHwCM4F2LCZT7BnFPALm_zIZuLpnH5t29bSll6X5XsvVgd_kmDMD6Oa3DjZQXqYjmHBkETnQMlKtixnW5k6s9_lztqvodKk-P5o1XET9ZwDyYrBek7FIAf44_r5ZUvLmC15vdM1RBgAe/s72-c/1.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-9097879286163806623</id><published>2012-02-08T22:04:00.000+05:30</published><updated>2012-02-08T22:04:45.108+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="MS SQL Server"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Stored Functions"/><category scheme="http://www.blogger.com/atom/ns#" term="Stored Procedures"/><category scheme="http://www.blogger.com/atom/ns#" term="T-SQL"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>Creating &amp; Calling SQL Stored Procedures, SQL Stored Functions through C#</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;u&gt;&lt;b&gt;In this Post we shall learn how to create stored procedures, and functions&amp;nbsp; in MS SQL Server, and also call them from a C# application.&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;First of all let us create a table&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;create table scores(Sno int primary key,batsman varchar(50),runs int)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1ddTFXqpYBf8tjF_eeQOaWeyveRkWUt8rW0S709VS-igzkel9NKuvwxEjmj2Qc1Mj0UHVM9MLuf7C7s59Yz_LyftHpSSfmS72ikxb-yGAwJavyAvLRGU55k4Q3CjyATekN3loP4JrRH_X/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1ddTFXqpYBf8tjF_eeQOaWeyveRkWUt8rW0S709VS-igzkel9NKuvwxEjmj2Qc1Mj0UHVM9MLuf7C7s59Yz_LyftHpSSfmS72ikxb-yGAwJavyAvLRGU55k4Q3CjyATekN3loP4JrRH_X/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;u&gt;Next we shall create a stored procedure for inserting data into the table:-&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;create procedure InsertIntoScores(@batsmanname varchar(50) ,@runsscored int)&lt;br /&gt;
as&lt;br /&gt;
declare @sno int;&lt;br /&gt;
select @sno=max(sno) from scores;&lt;br /&gt;
if(@sno is NULL)&lt;br /&gt;
set @sno=1;&lt;br /&gt;
else&lt;br /&gt;
set @sno=@sno+1;&lt;br /&gt;
insert into scores values(@sno,@batsmanname,@runsscored);&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiV3qvh6w14RvdWNCqgHnFY8Vpq5QAZHgegKWHusnbMmNTS3rtVTIIZNVy8NRdRjpgk2VBQIf11m0nDJ_JCF4W7pHdZ_xPrCuxIoPGCUEEcxeZn9bLkwrXY3vcE0tultgD8cEkakFyG4cgI/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiV3qvh6w14RvdWNCqgHnFY8Vpq5QAZHgegKWHusnbMmNTS3rtVTIIZNVy8NRdRjpgk2VBQIf11m0nDJ_JCF4W7pHdZ_xPrCuxIoPGCUEEcxeZn9bLkwrXY3vcE0tultgD8cEkakFyG4cgI/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;u&gt;&lt;b&gt;To execute the procedure we shall write&amp;nbsp; &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;exec InsertIntoScores &#39;Champak&#39;,99&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqJjH3TntvCNlxtfO0II0KgLYH7hGebEuBaS69a6B3pkxwa4TxDqx2rMK2beG3jafZCHEKllzf8d09b3J5jQGgrX7sWscoc0Y98c9ehJDNIeizPCX1YYxSLtdRX2C3hTl56dcN5yOUVqyS/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqJjH3TntvCNlxtfO0II0KgLYH7hGebEuBaS69a6B3pkxwa4TxDqx2rMK2beG3jafZCHEKllzf8d09b3J5jQGgrX7sWscoc0Y98c9ehJDNIeizPCX1YYxSLtdRX2C3hTl56dcN5yOUVqyS/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;u&gt;Next we create a function&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;create function GetScores(@batsmanname varchar(50))&lt;br /&gt;
returns int&lt;br /&gt;
begin&lt;br /&gt;
declare @runs int;&lt;br /&gt;
declare @total int;&lt;br /&gt;
set @total=0;&lt;br /&gt;
DECLARE runs_cursor CURSOR FOR SELECT runs FROM scores WHERE batsman=@batsmanname;&lt;br /&gt;
OPEN runs_cursor&lt;br /&gt;
FETCH NEXT FROM runs_cursor INTO @runs&lt;br /&gt;
&lt;br /&gt;
WHILE @@FETCH_STATUS = 0&lt;br /&gt;
BEGIN&lt;br /&gt;
SET @total=@runs+ @total;&lt;br /&gt;
&lt;br /&gt;
FETCH NEXT FROM runs_cursor INTO @runs&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
CLOSE runs_cursor&lt;br /&gt;
DEALLOCATE runs_cursor&lt;br /&gt;
return @total;&lt;br /&gt;
end&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
The function uses a cursor to loop through the results and add up the scores.Using the sum aggregate query would be better, but I wanted to also provide an example of a cursor.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnJf5Td8weL8GRuHUpMuXxy6lgyKfmfcj4urE7ED65tbBI9Fv9oydpJSHKm_x0eak7IgYr-9yNw-ncpkPt-OMmDbcskU9sB45zoej5iTZgHAj9h4J82JH30ZO22jlOKgJtbTSXnYFaSp6R/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnJf5Td8weL8GRuHUpMuXxy6lgyKfmfcj4urE7ED65tbBI9Fv9oydpJSHKm_x0eak7IgYr-9yNw-ncpkPt-OMmDbcskU9sB45zoej5iTZgHAj9h4J82JH30ZO22jlOKgJtbTSXnYFaSp6R/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;u&gt;&lt;b&gt;To test the procedure follow this procedure :-&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcFfRAJulvMfjiBpL92k2IXSz93ju6Ni6jllYHeTYIIoOXdj4yvG7PNWEzSdtEM349S3EDAyp4IUrj_Zx63d-OA_cGWzQh4qs_4vcFq6Up9NzhYlzITROzaebGP4ekg9bIU5xww_aKjx60/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcFfRAJulvMfjiBpL92k2IXSz93ju6Ni6jllYHeTYIIoOXdj4yvG7PNWEzSdtEM349S3EDAyp4IUrj_Zx63d-OA_cGWzQh4qs_4vcFq6Up9NzhYlzITROzaebGP4ekg9bIU5xww_aKjx60/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;u&gt;Next give the value for the parameter&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCiSMkwNyICrwmFxH2mE-0Nf0CMoh2c5j4eK85akhyphenhyphen1WIhv1BjMokwHM9df6FMSHLiU7dTJnRJ4iGhcqOiuptGD6_VZEc5L1z-2JXfsEAGi8HYuCe3qBhztzI_tgQdLht4juMia407Xt-b/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCiSMkwNyICrwmFxH2mE-0Nf0CMoh2c5j4eK85akhyphenhyphen1WIhv1BjMokwHM9df6FMSHLiU7dTJnRJ4iGhcqOiuptGD6_VZEc5L1z-2JXfsEAGi8HYuCe3qBhztzI_tgQdLht4juMia407Xt-b/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;u&gt;Here is the output:-&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqezkYaOONofCCo5gXd1s5WY7ftEw8we-Hd2ouw1BFYzoOshG0OpdHBuMvPLvzb5zbsjo72Qag-MEKMFxm0tYW0v_9m32Fe_uDiom0HVooABVL4yDWYpg8SLmV6cKtodJcrium2MqMJoyh/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqezkYaOONofCCo5gXd1s5WY7ftEw8we-Hd2ouw1BFYzoOshG0OpdHBuMvPLvzb5zbsjo72Qag-MEKMFxm0tYW0v_9m32Fe_uDiom0HVooABVL4yDWYpg8SLmV6cKtodJcrium2MqMJoyh/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;u&gt;&lt;b&gt;To access the procedure from a C# application we need to establish a connection, then create a command object to which we pass the required parameters. For the function we also require a return parameter. Here is how you access the stored procedure:-&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(@&quot;Data Source=.\sqlexpress;Initial Catalog=smartsystem;Integrated Security=True&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; con.Open();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(&quot;InsertIntoScores&quot;, con);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.CommandType = System.Data.CommandType.StoredProcedure;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Parameters.AddWithValue(&quot;batsmanname&quot;, &quot;Champak&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Parameters.AddWithValue(&quot;runsscored&quot;, 100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.ExecuteNonQuery();&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Here is how you access the stored function :-&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp;System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(@&quot;Data Source=.\sqlexpress;Initial Catalog=smartsystem;Integrated Security=True&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; con.Open();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(&quot;GetScores&quot;, con);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.CommandType = System.Data.CommandType.StoredProcedure;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Parameters.AddWithValue(&quot;batsmanname&quot;, &quot;Champak&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Data.SqlClient.SqlParameter retvalue =new System.Data.SqlClient.SqlParameter(&quot;MyRuns&quot;,System.Data.SqlDbType.Int );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retvalue.Direction = System.Data.ParameterDirection.ReturnValue;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Parameters.Add(retvalue);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.ExecuteNonQuery();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextBox1.Text = &quot;&quot; + retvalue.Value;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/9097879286163806623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2012/02/creating-calling-sql-stored-procedures.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/9097879286163806623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/9097879286163806623'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2012/02/creating-calling-sql-stored-procedures.html' title='Creating &amp; Calling SQL Stored Procedures, SQL Stored Functions through C#'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1ddTFXqpYBf8tjF_eeQOaWeyveRkWUt8rW0S709VS-igzkel9NKuvwxEjmj2Qc1Mj0UHVM9MLuf7C7s59Yz_LyftHpSSfmS72ikxb-yGAwJavyAvLRGU55k4Q3CjyATekN3loP4JrRH_X/s72-c/1.JPG" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-4784980314310691144</id><published>2012-01-21T21:24:00.000+05:30</published><updated>2012-01-21T21:24:23.297+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="Soap"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Services"/><title type='text'>Web Services in PHP</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;u&gt;&lt;b&gt;In this Post, we shall create a Web Service in PHP, and call it through a PHP Client.&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt;The following steps are required before we begin :-&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1) Download the file &lt;i&gt;php_soap.dll&lt;/i&gt;&lt;/b&gt; &lt;b&gt;and copy it into the PHP directory.&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_Kl0mL2HkkwwucoGQO9AhYFAnamAhlU5cL2FfA1QCUtd0jNA6YLs8PUfETmQukHgAmHjWBTZ9WOUd7B83IJ1RT8a59_uts4nwaOq6UGMO2ru_8Z1kmfeZruNfsndY-oMPLzHBTlLuV5Kj/s1600/3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_Kl0mL2HkkwwucoGQO9AhYFAnamAhlU5cL2FfA1QCUtd0jNA6YLs8PUfETmQukHgAmHjWBTZ9WOUd7B83IJ1RT8a59_uts4nwaOq6UGMO2ru_8Z1kmfeZruNfsndY-oMPLzHBTlLuV5Kj/s320/3.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;u&gt;&lt;b&gt;Next , make the following entry in the PHP.ini file&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNab1MzSGFp9iTNtp0IQ_trFQZUsB58mPPRKgCdXUdtSwZotQID05ejpMMSNdzweILJ-Kl1xnu32Krt9RKaDPaR41v_dyr8J87lO2MLbGo8zJ3KXKi5ZUPfVGam_eVOCitC1HuEYY3ErVQ/s1600/4.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNab1MzSGFp9iTNtp0IQ_trFQZUsB58mPPRKgCdXUdtSwZotQID05ejpMMSNdzweILJ-Kl1xnu32Krt9RKaDPaR41v_dyr8J87lO2MLbGo8zJ3KXKi5ZUPfVGam_eVOCitC1HuEYY3ErVQ/s320/4.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;u&gt;&lt;b&gt;In this Web Service we shall create a single function called sayHello&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Here is the code for this function :-&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;function sayHello($name)&lt;br /&gt;
{&lt;br /&gt;
return &quot;Hello $name&quot;;&lt;br /&gt;
}&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Next create a WSDL file for this function:-&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;sayhello.wsdl&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;lt;?xml version=&quot;1.0&quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;definitions name=&quot;welcome&quot;&lt;br /&gt;
targetNamespace=&quot;http://localhost:777/HypatiaWebServices/sayHello&quot;&lt;br /&gt;
xmlns:tns=&quot;http://localhost:777/HypatiaWebServices/sayHello&quot;&lt;br /&gt;
xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;&lt;br /&gt;
xmlns:soap=&quot;http://schemas.xmlsoap.org/wsdl/soap/&quot;&lt;br /&gt;
xmlns=&quot;http://schemas.xmlsoap.org/wsdl/&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;message name=&quot;sayHelloRequest&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;part name=&quot;name&quot; type=&quot;xsd:string&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;message name=&quot;sayHelloResponse&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;part name=&quot;return&quot; type=&quot;xsd:string&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;portType name=&quot;QuotePortType&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;operation name=&quot;sayHello&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input message=&quot;tns:sayHelloRequest&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;output message=&quot;tns:sayHelloResponse&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/operation&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;/portType&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;binding name=&quot;QuoteBinding&quot; type=&quot;tns:QuotePortType&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;soap:binding&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; style=&quot;rpc&quot; transport=&quot;http://schemas.xmlsoap.org/soap/http&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;operation name=&quot;sayHello&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;soap:operation soapAction=&quot;&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;soap:body use=&quot;encoded&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/input&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;output&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;soap:body use=&quot;encoded&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/output&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/operation&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;service name=&quot;welcome&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;documentation&amp;gt;Says Hello to you&amp;lt;/documentation&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;port name=&quot;QuotePort&quot; binding=&quot;tns:QuoteBinding&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;soap:address&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location=&quot;http://localhost:777/HypatiaWebServices/HypatiaWebServiceServer.php&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/port&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;/service&amp;gt;&lt;br /&gt;
&amp;lt;/definitions&amp;gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Next create the Web Service Server&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Here is the code for the server:-&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;HypatiaWebServiceServer.php&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;&amp;lt;?php&lt;br /&gt;
function sayHello($name)&lt;br /&gt;
{&lt;br /&gt;
return &quot;Hello $name&quot;;&lt;br /&gt;
}&lt;br /&gt;
$server=new SoapServer(&quot;sayhello.wsdl&quot;);&lt;br /&gt;
$server-&amp;gt;addFunction(&quot;sayHello&quot;);&lt;br /&gt;
$server-&amp;gt;handle();&lt;br /&gt;
?&amp;gt; &lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Here is the WSDL file as viewed in a Browser:-&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_eyA9hTRROYXcJWUWwu98RDVUtiPEglJwMyCIhaFkx536_znjGoNJiPbyEgm1MQLjzhTa3sBe1zpjz1E-Y8NS5qGjLOlA9n_p30L4MXVZkLFJfVI22zriquAGrLKusUQRWgwsrFt7isMY/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_eyA9hTRROYXcJWUWwu98RDVUtiPEglJwMyCIhaFkx536_znjGoNJiPbyEgm1MQLjzhTa3sBe1zpjz1E-Y8NS5qGjLOlA9n_p30L4MXVZkLFJfVI22zriquAGrLKusUQRWgwsrFt7isMY/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Next create a PHP Client. Here we provide the URL to the WSDL.Then simply call the function.The parameters are passed in an array. Here is the complete code:-&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;HypatiaWebServiceClient.php&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;lt;?php&lt;br /&gt;
$client=new SoapClient(&quot;http://localhost:777/HypatiaWebServices/HypatiaWebServiceServer.php?wsdl&quot;);&lt;br /&gt;
print $client-&amp;gt;__call(&quot;sayHello&quot;,(array(&quot;Champak&quot;)));&lt;br /&gt;
?&amp;gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Here is the output in firefox:-&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9TmOAIXREQii4RDwnKabGraOGdBoE-Yzi6onW2O0MjDjWvVXKZ7OVPJjIibIvFka7paNDwLj1utRKElj2nmk-jVbDBdfMYCKZVmPUjwDVMPO9vafDi7ASs0Mzgeng5X3PO82-xh4FZHJV/s1600/2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9TmOAIXREQii4RDwnKabGraOGdBoE-Yzi6onW2O0MjDjWvVXKZ7OVPJjIibIvFka7paNDwLj1utRKElj2nmk-jVbDBdfMYCKZVmPUjwDVMPO9vafDi7ASs0Mzgeng5X3PO82-xh4FZHJV/s320/2.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/4784980314310691144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2012/01/web-services-in-php.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/4784980314310691144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/4784980314310691144'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2012/01/web-services-in-php.html' title='Web Services in PHP'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_Kl0mL2HkkwwucoGQO9AhYFAnamAhlU5cL2FfA1QCUtd0jNA6YLs8PUfETmQukHgAmHjWBTZ9WOUd7B83IJ1RT8a59_uts4nwaOq6UGMO2ru_8Z1kmfeZruNfsndY-oMPLzHBTlLuV5Kj/s72-c/3.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-3661801435853968492</id><published>2011-12-15T10:29:00.000+05:30</published><updated>2011-12-15T10:29:23.815+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Android Database"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Cursor"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="SQLite"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>A Basic Android Database Example</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX_dleA7j57_MX37BHWWYKpENsCV_aow-GEHyCtzIPXnkMsYZ0fT3fShyb6FJkVbl0U2ylQiFx-AXk9_148SIBmNrSWITRA4i6jcIwx_QwU0DeEs5FaF7AxXLpLjhlBJSTHHvUuB7lAxXb/s1600/2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/div&gt;In this post we shall develop a basic Android Database Example.&lt;br /&gt;
&lt;br /&gt;
Every Android phone contains an inbuilt SQLite database. Therefore, no separate setup or configuration is required.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;In this post we shall create a SQLite table, insert some data into it, and also perform a select query.The table contains two fields bookname of type text, and price of type int.&lt;/b&gt;&lt;br /&gt;
This application contains three buttons Select,Insert and Create for selecting, inserting and creating the table respectively. It also contains two EditBoxes for supplying the Book Name and Price values. There is a TextView for providing status messages.Here is a picture of the User Interface:-&lt;br /&gt;
&lt;span id=&quot;goog_1271297835&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_1271297836&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX_dleA7j57_MX37BHWWYKpENsCV_aow-GEHyCtzIPXnkMsYZ0fT3fShyb6FJkVbl0U2ylQiFx-AXk9_148SIBmNrSWITRA4i6jcIwx_QwU0DeEs5FaF7AxXLpLjhlBJSTHHvUuB7lAxXb/s1600/2.JPG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX_dleA7j57_MX37BHWWYKpENsCV_aow-GEHyCtzIPXnkMsYZ0fT3fShyb6FJkVbl0U2ylQiFx-AXk9_148SIBmNrSWITRA4i6jcIwx_QwU0DeEs5FaF7AxXLpLjhlBJSTHHvUuB7lAxXb/s320/2.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The main classes involved are:-&lt;br /&gt;
&lt;u&gt;&lt;b&gt;android.database.sqlite.SQLiteOpenHelper&lt;/b&gt;&lt;/u&gt; &lt;br /&gt;
This class needs to be subclassed to provide for creation of the database.&lt;br /&gt;
It has two methods&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;i&gt;&lt;b&gt; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onCreate(SQLiteDatabase database) {&lt;br /&gt;
//Called when the database is created. &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onUpgrade(SQLiteDatabase database, int oldversion, int newversion) {&lt;br /&gt;
//Called when the database is upgraded.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;&amp;nbsp;android.database.sqlite.SQLiteDatabase&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;E&lt;/b&gt;&lt;b&gt;ncapsulates &lt;/b&gt;&lt;b&gt;a connection to a SQLite database and provides methods for sending queries to the Database and recovering the result.&lt;/b&gt;&lt;/i&gt;&lt;u&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;android.database.Cursor &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;This class provides methods for accessing the results of a select query.It can be compared to the java.sql.ResultSet.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Here is the code for the DatabaseHelper&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;DatabaseHelper.java&lt;/b&gt;&lt;/u&gt;&lt;i&gt;&lt;b&gt; &lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;package project.hypatia.database;&lt;br /&gt;
&lt;br /&gt;
import android.content.Context;&lt;br /&gt;
import android.database.sqlite.SQLiteDatabase;&lt;br /&gt;
import android.database.sqlite.SQLiteDatabase.CursorFactory;&lt;br /&gt;
import android.database.sqlite.SQLiteOpenHelper;&lt;br /&gt;
&lt;br /&gt;
public class DatabaseHelper extends SQLiteOpenHelper {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public DatabaseHelper(Context context) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; super(context, &quot;hypatiadata&quot;, null, 1);&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;//hypatiadata is the name of the database&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;// 1 is the version no.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;//The null parameter can be used to pass a CursorFactory. We are not using it, so it is null.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated constructor stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onCreate(SQLiteDatabase database) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated method stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onUpgrade(SQLiteDatabase database, int oldversion, int newversion) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated method stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;This is the code for the ProjectActivity&lt;/u&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;It&lt;/b&gt;&lt;b&gt; contains a subclass &lt;/b&gt;&lt;b&gt;&lt;i&gt;DataHandler&lt;/i&gt; which contains the click events for the three buttons.&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;The select button&lt;/b&gt;&lt;/u&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;//*********************************************************************************&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;nbsp; if(b.equals(bttnselect))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String bookname=&quot;&quot; + txtBookName.getText();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; bookname=bookname.replaceAll(&quot;&#39;&quot;, &quot;&#39;&#39;&quot;).trim();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String[] columns={&quot;Price&quot;};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String selection=&quot;BookName=&#39;&quot;+ bookname + &quot;&#39;&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; cursor=&amp;nbsp;&amp;nbsp;&amp;nbsp; database.query(&quot;HypatiaBooks&quot;, columns, selection, null, null, null, null);&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;//The Parameters mean&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;//1) The Name of the Table&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;//2) A string array containing the fields to be queried.&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;//3) A string containing the selection criteria&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;//4) A string array of selection arguments&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;//5) groupby statement&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;//6) having&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;//7) orderby&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;//The ones not being used are null&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(cursor==null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; txtResult.setText(&quot;No Data Found&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(cursor.moveToFirst())&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int price=cursor.getInt(0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; txtPrice.setText(&quot;&quot; + price);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; txtResult.setText(&quot;Data Selected&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; txtResult.setText(&quot;No Data Found&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; cursor.close();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO: handle exception&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; txtResult.setText(ex.getMessage());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;//*********************************************************************************&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;the cursor provides methods for accessing the data fields, unlike jdbc the indexing starts at 0.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;Here is the complete code&lt;/u&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;HypatiaAndroidProjectActivity.java&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;package project.hypatia.database;&lt;br /&gt;
&lt;br /&gt;
import android.app.Activity;&lt;br /&gt;
import android.os.Bundle;&lt;br /&gt;
import android.view.View;&lt;br /&gt;
import android.view.View.OnClickListener;&lt;br /&gt;
import android.widget.Button;&lt;br /&gt;
import android.widget.EditText;&lt;br /&gt;
import android.widget.TextView;&lt;br /&gt;
import android.database.*;&lt;br /&gt;
import android.database.sqlite.*;&lt;br /&gt;
public class HypatiaAndroidProjectActivity extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /** Called when the activity is first created. */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Button bttncreate,bttninsert,bttnselect;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; EditText txtBookName,txtPrice;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; TextView txtResult;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private Cursor cursor;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(savedInstanceState);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(R.layout.main);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bttncreate=(Button)findViewById(R.id.button1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bttninsert=(Button)findViewById(R.id.button2);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bttnselect=(Button)findViewById(R.id.button3);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtBookName=(EditText)findViewById(R.id.txtBookName);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtPrice=(EditText)findViewById(R.id.txtPrice);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtResult=(TextView)findViewById(R.id.txtOutput);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataHandler dh=new&amp;nbsp; DataHandler();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DatabaseHelper dhh=new DatabaseHelper(this);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; database= dhh.getWritableDatabase();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bttncreate.setOnClickListener(dh);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bttninsert.setOnClickListener(dh);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bttnselect.setOnClickListener(dh);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //****************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp; SQLiteDatabase database;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; class DataHandler implements OnClickListener&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View view) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated method stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Button b=(Button)view;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(b.equals(bttncreate))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; database.execSQL( &quot;create table HypatiaBooks(bookname text primary key,price integer not null )&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; txtResult.setText(&quot;Table Created&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO: handle exception&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; txtResult.setText(ex.getMessage());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(b.equals(bttninsert))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String bookname=&quot;&quot; + txtBookName.getText();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; bookname=bookname.replaceAll(&quot;&#39;&quot;, &quot;&#39;&#39;&quot;).trim();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String price=&quot;&quot; + txtPrice.getText();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; price=price.replaceAll(&quot;&#39;&quot;,&quot;&#39;&#39;&quot;).trim();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; database.execSQL(&quot;insert into HypatiaBooks values(&#39;&quot; + bookname + &quot;&#39;,&quot; + price + &quot;)&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; txtResult.setText(&quot;Data Inserted&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO: handle exception&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; txtResult.setText(ex.getMessage());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(b.equals(bttnselect))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String bookname=&quot;&quot; + txtBookName.getText();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; bookname=bookname.replaceAll(&quot;&#39;&quot;, &quot;&#39;&#39;&quot;).trim();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String[] columns={&quot;Price&quot;};&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String selection=&quot;BookName=&#39;&quot;+ bookname + &quot;&#39;&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; cursor=&amp;nbsp;&amp;nbsp;&amp;nbsp; database.query(&quot;HypatiaBooks&quot;, columns, selection, null, null, null, null);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(cursor==null)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; txtResult.setText(&quot;No Data Found&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(cursor.moveToFirst())&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int price=cursor.getInt(0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; txtPrice.setText(&quot;&quot; + price);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; txtResult.setText(&quot;Data Selected&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; txtResult.setText(&quot;No Data Found&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; cursor.close();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO: handle exception&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; txtResult.setText(ex.getMessage());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //****************************************************************&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;&amp;nbsp;Here is the main.xml&lt;/b&gt;&lt;/u&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;fill_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;fill_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orientation=&quot;vertical&quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EditText&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id=&quot;@+id/txtBookName&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;requestFocus /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/EditText&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EditText&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id=&quot;@+id/txtPrice&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:inputType=&quot;number&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id=&quot;@+id/txtOutput&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id=&quot;@+id/button1&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text=&quot;@string/bttncreate&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id=&quot;@+id/button2&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text=&quot;@string/bttninsert&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id=&quot;@+id/button3&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text=&quot;@string/bttnselect&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Here is the design view:-&lt;/b&gt;&lt;/u&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGiIhrC5OLB6PV0IderOem0WgIYWVUZ3KyWf3M-Qb4aibR8bZE0hejHCdBQSwQfNp5XxHy31WJ4RcNFrPOy1E3YBYkJRo0cuBp65avVsquT4WqPbMWQMo4bibANdNc7Wn5gwKuMHdYecH8/s1600/3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGiIhrC5OLB6PV0IderOem0WgIYWVUZ3KyWf3M-Qb4aibR8bZE0hejHCdBQSwQfNp5XxHy31WJ4RcNFrPOy1E3YBYkJRo0cuBp65avVsquT4WqPbMWQMo4bibANdNc7Wn5gwKuMHdYecH8/s320/3.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;u&gt;The application in Eclipse&lt;/u&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFq52Cop8Z2Z2xLuDA3pYbzQoBzGT2ICefHR1B8TNuNLEg3aDZgr0DlBKq4YAcjxwfN8IVjTCMCErZK6oK6Zmh3OCKoU6aoeG0Dh2yqUQtSYXKLtQXkVFsspGcY4Tm1NMrLF-dUpBI5U0u/s1600/4.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFq52Cop8Z2Z2xLuDA3pYbzQoBzGT2ICefHR1B8TNuNLEg3aDZgr0DlBKq4YAcjxwfN8IVjTCMCErZK6oK6Zmh3OCKoU6aoeG0Dh2yqUQtSYXKLtQXkVFsspGcY4Tm1NMrLF-dUpBI5U0u/s320/4.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;strings.xml&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;hello&quot;&amp;gt;Hypatia Basic Android Database &amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;app_name&quot;&amp;gt;Hypatia Basic Android Database &amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;b1&quot;&amp;gt;Insert&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;b2&quot;&amp;gt;Select&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;bttnselect&quot;&amp;gt;select&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;bttninsert&quot;&amp;gt;Insert&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;bttncreate&quot;&amp;gt;create&amp;lt;/string&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/resources&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;u&gt;&lt;b&gt; &lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;The APK file can be downloaded at &lt;a href=&quot;http://hypatiasoftwaresolutions.com/HypatiaAndroidProject.zip&quot;&gt;http://hypatiasoftwaresolutions.com/HypatiaAndroidProject.zip&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Next, we shall focus on using the Camera in an Android Device.&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/3661801435853968492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2011/12/basic-android-database-example.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/3661801435853968492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/3661801435853968492'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2011/12/basic-android-database-example.html' title='A Basic Android Database Example'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX_dleA7j57_MX37BHWWYKpENsCV_aow-GEHyCtzIPXnkMsYZ0fT3fShyb6FJkVbl0U2ylQiFx-AXk9_148SIBmNrSWITRA4i6jcIwx_QwU0DeEs5FaF7AxXLpLjhlBJSTHHvUuB7lAxXb/s72-c/2.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-5738797020577941363</id><published>2011-12-10T10:40:00.000+05:30</published><updated>2011-12-10T10:40:38.305+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Android Animation"/><category scheme="http://www.blogger.com/atom/ns#" term="Android Graphics"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>A Basic Android Animation Example</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;In this Post we shall develop a very simple Android Animation Example.&lt;br /&gt;
The classes involved are:-&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;For an explanation of the Graphics classes , please refer the previous post at:-&lt;br /&gt;
&lt;a href=&quot;http://champakonline.blogspot.com/2011/12/basic-android-graphics-example.html&quot;&gt;http://champakonline.blogspot.com/2011/12/basic-android-graphics-example.html&lt;/a&gt;&lt;br /&gt;
The classes you would find there are &lt;i&gt;&lt;b&gt;View,Canvas,Paint,Path,Bitmap, etc.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;Drawing was done by putting the code in the onDraw method of the View class&lt;/b&gt;&lt;i&gt;&lt;b&gt;.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;b&gt;You might want a quick review of that post before continuing.&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;Basic classes for Animation&lt;/b&gt;&lt;/u&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;1)&lt;/b&gt;&lt;i&gt;&lt;b&gt; android.view.animation.Animation&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;This class represents an Android Animation.&lt;/b&gt;&lt;i&gt;&lt;b&gt; &lt;/b&gt;&lt;/i&gt;&lt;b&gt;There are many sub classes of this animation namely:-&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a) android.view.animation.ScaleAnimation&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b) android.view.animationAlphaAnimation&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c) android.view.animation.RotateAnimation&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; d) android.view.animation.TranslateAnimation;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;In this example we implement an animation using AlphaAnimation and RotateAnimation.&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;u&gt;Main functionality of the Animation class&lt;/u&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;The Animation class provides methods for&amp;nbsp; setting the RepeatMode , RepeatCount, Interpolator, setDuration.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;RepeatMode&lt;/b&gt;&lt;i&gt;&lt;b&gt;: This is the RepeatMode of the Animation. Possible values are Animation.REVERSE,Animation.RESTART.&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;RepeatCount&lt;/b&gt;&lt;i&gt;&lt;b&gt;: Possible values are Animation.INFINITE,Animation.ABSOLUTE.&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;setDuration();&lt;/b&gt;&lt;i&gt;&lt;b&gt; The value gives the duration of one round of the Animation.&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;setInterpolator&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;This method is used to set an Interpolator. We have used an &lt;i&gt;android.view.animation.AccelerateDecelerateInterpolator.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;other interpolators are&lt;i&gt; :-&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;android.view.animation.AccelerateInterpolator,&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;android.view.animation.AnticipateOvershootInterpolator,&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;android.view.animation.BounceInterpolator,&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;android.view.animation.DecelerateInterpolator,&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;android.view.animation.AnticipateInterpolator,&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;android.view.animation.CycleInterpolator,&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;android.view.animation.LinearInterpolator,&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;android.view.animation.OvershootInterpolator .&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;We have used the &lt;/b&gt;&lt;b&gt;android.view.animation.AccelerateDecelerateInterpolator.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;The interpolator decides the progress and restart of the Animation.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt; &lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg74IkUAk_eOltMINiRhnDhyqKWO3xlQOPsPN7dTzTsfnzjAMOvPupnHsxSp2bOiUtsd7efxJvj093HoLddECFiTa23q65ky73zV5QKDCARlLroZLSm3VSclbG8mxRsXJScf7xNGH4dK8_l/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg74IkUAk_eOltMINiRhnDhyqKWO3xlQOPsPN7dTzTsfnzjAMOvPupnHsxSp2bOiUtsd7efxJvj093HoLddECFiTa23q65ky73zV5QKDCARlLroZLSm3VSclbG8mxRsXJScf7xNGH4dK8_l/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;i&gt; &lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt; &lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&amp;nbsp;The Code:-&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;&amp;nbsp;HypatiaAnimationView.java&lt;/u&gt;&lt;u&gt;&amp;nbsp;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;package hypatia.animation.basic;&lt;br /&gt;
import android.content.Context;&lt;br /&gt;
import android.graphics.Bitmap;&lt;br /&gt;
import android.graphics.BitmapFactory;&lt;br /&gt;
import android.graphics.Canvas;&lt;br /&gt;
import android.graphics.Paint;&lt;br /&gt;
import android.graphics.Path;&lt;br /&gt;
import android.graphics.Path.Direction;&lt;br /&gt;
import android.view.View;&lt;br /&gt;
import android.view.animation.AlphaAnimation;&lt;br /&gt;
import android.view.animation.Animation;&lt;br /&gt;
import android.view.animation.Animation.AnimationListener;&lt;br /&gt;
import android.view.animation.AnimationSet;&lt;br /&gt;
import android.view.animation.RotateAnimation;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class HypatiaAnimationView extends View implements AnimationListener {&lt;br /&gt;
String themessage=&quot;Reserve your right to think, for even to think wrongly is better than not to think at all.&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public HypatiaAnimationView(Context context) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; super(context);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; paint = new Paint();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; paint.setColor(HypatiaBasicAnimationActivity.colors[HypatiaBasicAnimationActivity.colorno]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HypatiaBasicAnimationActivity.colorno=(HypatiaBasicAnimationActivity.colorno + 1) % HypatiaBasicAnimationActivity.colors.length;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated constructor stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Paint paint;//The paint object for the drawing&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
public void onDraw(Canvas canvas)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; super.onDraw(canvas);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (hypatiaanimationset == null) {//If the animation set is null, create it&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //***********************Create the Animation Set****************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; hypatiaanimationset=new AnimationSet(true);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; animation = new AlphaAnimation(1F, 0F);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; animation.setRepeatMode(Animation.REVERSE);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; animation.setRepeatCount(Animation.INFINITE);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; animation.setDuration(5000);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; animation.setAnimationListener(this);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hypatiaanimationset.addAnimation(animation);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; animation = new RotateAnimation(0, 360,canvas.getWidth()/2,canvas.getHeight()/2);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; animation.setRepeatMode(Animation.REVERSE);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; animation.setRepeatCount(Animation.INFINITE);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; animation.setDuration(1000);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hypatiaanimationset.addAnimation(animation);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hypatiaanimationset.setInterpolator(new android.view.animation.AccelerateDecelerateInterpolator());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; startAnimation(hypatiaanimationset);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //***************************************************************************&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Path circle = new Path();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int cx = canvas.getWidth() / 2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int cy = canvas.getHeight() / 2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int r = Math.min(cx, cy);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; paint.setTextSize(48);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(HypatiaBasicAnimationActivity.colorno % 2==0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; circle.addCircle(cx, cy, r-5, Direction.CW);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; circle.addCircle(cx, cy, r-35, Direction.CCW);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.drawTextOnPath(themessage, circle, 0, 30, paint);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bitmap hypatiaportrait = BitmapFactory.decodeResource(getResources(),R.drawable.hypatia);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.drawBitmap(hypatiaportrait,cx-hypatiaportrait.getWidth()/2,cy-hypatiaportrait.getHeight()/2,null);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private Animation animation;&lt;br /&gt;
private AnimationSet hypatiaanimationset;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onAnimationEnd(Animation animation) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated method stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onAnimationRepeat(Animation animation) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated method stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; paint.setColor(HypatiaBasicAnimationActivity.colors[HypatiaBasicAnimationActivity.colorno]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HypatiaBasicAnimationActivity.colorno=(HypatiaBasicAnimationActivity.colorno + 1) % HypatiaBasicAnimationActivity.colors.length;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; HypatiaBasicAnimationActivity.v.invalidate();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onAnimationStart(Animation animation) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated method stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;HypatiaBasicAnimationActivity.java&lt;/u&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;package hypatia.animation.basic;&lt;br /&gt;
&lt;br /&gt;
import android.app.Activity;&lt;br /&gt;
import android.graphics.Color;&lt;br /&gt;
import android.os.Bundle;&lt;br /&gt;
&lt;br /&gt;
public class HypatiaBasicAnimationActivity extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /** Called when the activity is first created. */&lt;br /&gt;
static&amp;nbsp;&amp;nbsp;&amp;nbsp; HypatiaAnimationView v;&lt;br /&gt;
static int[] colors={Color.WHITE,Color.YELLOW,Color.MAGENTA,Color.GREEN,Color.RED};&lt;br /&gt;
static int colorno=0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //This is the first method to be executed&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(savedInstanceState);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v=new HypatiaAnimationView(this);//Create the view and store it in a static variable for further use&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(v);//Make this view the current view. This means that whenever the view is invalidated it&#39;s onDraw method will be called&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXnPV4ZPtFJciRe7YRsaRWXSezvhcio_y5jGgadJrnPyww2QoAP_NVlW7b0Vs6LYZgBfd3LQwCYPPNIXiMZWBtmu6ywJZWaDOCS_FMbLGSoy26c2tsGiPMX8aRPd4Hzegrv6VRM9eiBTuQ/s1600/2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXnPV4ZPtFJciRe7YRsaRWXSezvhcio_y5jGgadJrnPyww2QoAP_NVlW7b0Vs6LYZgBfd3LQwCYPPNIXiMZWBtmu6ywJZWaDOCS_FMbLGSoy26c2tsGiPMX8aRPd4Hzegrv6VRM9eiBTuQ/s320/2.JPG&quot; width=&quot;281&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuTfFp_Bqj7T504zYGJUj5vV9VRvvcYqcIbV0yXzapKPlZ2c1v7PMf9AG2U6Y7SHS7XfGTovxDoySiW5hNtZuhsSONhR4Us7jTpQFswdP_tpD43YcUarmJDoUcp69pztiDFAzeom0XWTAr/s1600/3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiuTfFp_Bqj7T504zYGJUj5vV9VRvvcYqcIbV0yXzapKPlZ2c1v7PMf9AG2U6Y7SHS7XfGTovxDoySiW5hNtZuhsSONhR4Us7jTpQFswdP_tpD43YcUarmJDoUcp69pztiDFAzeom0XWTAr/s320/3.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;In the next Post of the series we shall create an Animation using an XML File.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/5738797020577941363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2011/12/basic-android-animation-example.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/5738797020577941363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/5738797020577941363'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2011/12/basic-android-animation-example.html' title='A Basic Android Animation Example'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg74IkUAk_eOltMINiRhnDhyqKWO3xlQOPsPN7dTzTsfnzjAMOvPupnHsxSp2bOiUtsd7efxJvj093HoLddECFiTa23q65ky73zV5QKDCARlLroZLSm3VSclbG8mxRsXJScf7xNGH4dK8_l/s72-c/1.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-2574622601435067932</id><published>2011-12-05T10:13:00.000+05:30</published><updated>2011-12-05T10:13:30.047+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Android Graphics"/><category scheme="http://www.blogger.com/atom/ns#" term="Bitmaps"/><category scheme="http://www.blogger.com/atom/ns#" term="Canvas"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="OnDraw"/><category scheme="http://www.blogger.com/atom/ns#" term="Paint"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>A Basic Android Graphics Example</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;In this example we shall explore the basics of drawing in Android. In particular we shall learn the basics of the Paint class , the Canvas class and their methods.We shall also learn how to add pictures as resources, and how to access them.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;The OnDraw Method.&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;This method is the exact equivalent of the paintComponent method in Java. This method is called automatically whenever the View needs to be redrawn. It has a parameter of type Canvas which can be used for drawing on the View. Like the Graphics class in Java the Canvas class provides drawing methods.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;The Paint class provides facilities for managing the coloring, the strokes, fonts, and also measurements of Strings. The Bitmap class encapsulates a Bitmap, it also supports drawing.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;We start by creating a new Project called &lt;u&gt;&lt;b&gt;Hypatia&amp;nbsp; Drawing&amp;nbsp; Basics&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Then import a PNG file into resources&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;1) &lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2hVf2kkwi8TMLsQO0CoV7uV3AMuDa2Vs8PH1O6E88M38xEqnAeTBDN646n5QdPPg1s2Xi_OHA6ABYbfswv-APbS08xHRo1U4JALy-LPje2bvhq7fMq-qW7w-5ZjzNqZdp9jE4ZsVBeSHs/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2hVf2kkwi8TMLsQO0CoV7uV3AMuDa2Vs8PH1O6E88M38xEqnAeTBDN646n5QdPPg1s2Xi_OHA6ABYbfswv-APbS08xHRo1U4JALy-LPje2bvhq7fMq-qW7w-5ZjzNqZdp9jE4ZsVBeSHs/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;2) &lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3SWrvV-iKsI5EWDhI4Nv4YGegKMDzWFMw4uiFMCq8HIzyOj9ys696Y37hbXrm6c22FT2EocVyKSJJzXnT_bpz3mQ9YOYCyayfl9IjRCbQBGhotL1obCRHmuewG8zKZGmg3rI2xJX_Rvvu/s1600/2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3SWrvV-iKsI5EWDhI4Nv4YGegKMDzWFMw4uiFMCq8HIzyOj9ys696Y37hbXrm6c22FT2EocVyKSJJzXnT_bpz3mQ9YOYCyayfl9IjRCbQBGhotL1obCRHmuewG8zKZGmg3rI2xJX_Rvvu/s320/2.JPG&quot; width=&quot;320&quot; /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;3) &lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA1jFCMhMvM8EYcvjUrYS3zGmXatfqRrrHQYbT1dpS6AiBstwkOtgs6KDpM8dZGEdOulR0ly9M_yoCR3HGyEm66uhYQMBRnOyA-V_17x7lAnyvfFC5np6phOcFBxAQA2YDIbeCDhoEQffG/s1600/3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA1jFCMhMvM8EYcvjUrYS3zGmXatfqRrrHQYbT1dpS6AiBstwkOtgs6KDpM8dZGEdOulR0ly9M_yoCR3HGyEm66uhYQMBRnOyA-V_17x7lAnyvfFC5np6phOcFBxAQA2YDIbeCDhoEQffG/s320/3.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;4)&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg94G8qe2SKHb72o8zSVKBiRao1AMTDFxEPYm74K2sfSxdaNSjzU3nNdjEXycBVC5EEo4Ri-dtO6BbxHDR9SqvahVFA-z8yD2Yhqi6NujCYzPJ4htuvcBoCKwbFWCvmBOCfU3x7b0YZXNLl/s1600/4.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg94G8qe2SKHb72o8zSVKBiRao1AMTDFxEPYm74K2sfSxdaNSjzU3nNdjEXycBVC5EEo4Ri-dtO6BbxHDR9SqvahVFA-z8yD2Yhqi6NujCYzPJ4htuvcBoCKwbFWCvmBOCfU3x7b0YZXNLl/s320/4.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Next subclass the View class.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;u&gt;&lt;b&gt;HypatiaDrawingView&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;public class HypatiaDrawingView extends View {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public HypatiaDrawingView(Context context) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; super(context);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated constructor stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;}&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Now create the &lt;u&gt;&lt;b&gt;OnDraw&lt;/b&gt;&lt;/u&gt; Method inside the &lt;u&gt;&lt;b&gt;HypatiaDrawingView&lt;/b&gt;&lt;/u&gt; class&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;@Override&lt;br /&gt;
protected void onDraw(Canvas canvas) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated method stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onDraw(canvas);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Paint paint=new Paint();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; paint.setStyle(Style.FILL);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.drawPaint(paint);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; paint.setColor(Color.GREEN);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int width=canvas.getWidth();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int height=canvas.getHeight();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int radius;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(width&amp;lt;height)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; radius=width/2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; radius=height/2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.drawCircle(width/2, height/2, radius, paint);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; paint.setColor(Color.YELLOW);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Path ph=new Path();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ph.setLastPoint(0, height/2);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ph.lineTo(width/2, height/2+radius);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ph.lineTo(width, height/2);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ph.lineTo(width/2, height/2-radius);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.drawPath(ph, paint);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Bitmap bruno = BitmapFactory.decodeResource(getResources(),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R.drawable.giordanobruno);&lt;br /&gt;
&lt;br /&gt;
canvas.drawBitmap(bruno,width/2-bruno.getWidth()/2, height/2-bruno.getHeight()/2,null);&lt;br /&gt;
paint.setColor(Color.MAGENTA);&lt;br /&gt;
paint.setTextSize(40);&lt;br /&gt;
String headline=&quot;Hypatia Software Solutions&quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;float textwidth=paint.measureText(headline);&lt;br /&gt;
&lt;br /&gt;
canvas.drawText(headline,width/2-textwidth/2,height/4,paint);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;The methods we have used should basically be self explanatory.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;paint.setStyle(Style.FILL); &lt;/b&gt;&lt;/i&gt;Sets the drawing style. Fill means that closed surfaces are automatically filled.&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;paint.setColor(Color.GREEN); &lt;/b&gt;&lt;/i&gt;Sets the drawing color. &lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;paint.setStyle(Style.FILL); &lt;/b&gt;&lt;/i&gt;Sets the drawing style. Fill means that closed surfaces are automatically filled.&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;The&lt;/b&gt;&lt;i&gt;&lt;b&gt; Path &lt;/b&gt;&lt;/i&gt;&lt;b&gt;class represents a Polygon. The Last point is also the first point and are automatically joined. Other points are joined serially.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;To set the last point we use&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;b&gt; ph.setLastPoint(0, height/2);&lt;/b&gt;&lt;/i&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;For other points&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ph.lineTo(width/2, height/2+radius);&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; To draw the Polygon&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.drawPath(ph, paint);&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Drawing the Bitmap&lt;/b&gt;&lt;/u&gt;&lt;i&gt;&lt;b&gt; &lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;First we access the imported resource.&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX7CwIiT8BmpYtUUwxMATkptU0T3BENZ-gd1m1sKe8Ead3U8bG3UfTJYS2K2P1KjS3wFIEG9Clx6Q6717BsTzuGknD6gNWnrbpwDIMgWbQbq6bazmFwK4nYV3XFbBHMoAEDjUwW8JnqcQk/s1600/6.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX7CwIiT8BmpYtUUwxMATkptU0T3BENZ-gd1m1sKe8Ead3U8bG3UfTJYS2K2P1KjS3wFIEG9Clx6Q6717BsTzuGknD6gNWnrbpwDIMgWbQbq6bazmFwK4nYV3XFbBHMoAEDjUwW8JnqcQk/s320/6.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Then draw it&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;Bitmap bruno = BitmapFactory.decodeResource(getResources(),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R.drawable.giordanobruno);&lt;br /&gt;
&lt;br /&gt;
canvas.drawBitmap(bruno,width/2-bruno.getWidth()/2, height/2-bruno.getHeight()/2,null);&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;The last parameter represents the paint object.We are not using it, so it is null.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Here is the complete application as it looks in Eclipse&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;180&quot; src=&quot;data:image/png;base64,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&quot; width=&quot;320&quot; /&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;The Complete Code&lt;/b&gt;&lt;/u&gt; &lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;HypatiaDrawingBasicsActivity.java&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;package hypatia.drawing.basics;&lt;br /&gt;
&lt;br /&gt;
import android.app.Activity;&lt;br /&gt;
import android.os.Bundle;&lt;br /&gt;
&lt;br /&gt;
public class HypatiaDrawingBasicsActivity extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /** Called when the activity is first created. */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(savedInstanceState);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HypatiaDrawingView view=new HypatiaDrawingView(this);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(view);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;HypatiaDrawingView.java&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;package hypatia.drawing.basics;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import android.content.Context;&lt;br /&gt;
import android.graphics.Bitmap;&lt;br /&gt;
import android.graphics.BitmapFactory;&lt;br /&gt;
import android.graphics.Canvas;&lt;br /&gt;
import android.graphics.Color;&lt;br /&gt;
import android.graphics.Paint;&lt;br /&gt;
import android.graphics.Paint.Align;&lt;br /&gt;
import android.graphics.Paint.Style;&lt;br /&gt;
import android.graphics.Path;&lt;br /&gt;
import android.graphics.Rect;&lt;br /&gt;
import android.view.View;&lt;br /&gt;
&lt;br /&gt;
public class HypatiaDrawingView extends View {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public HypatiaDrawingView(Context context) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; super(context);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated constructor stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
@Override&lt;br /&gt;
protected void onDraw(Canvas canvas) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated method stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onDraw(canvas);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Paint paint=new Paint();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; paint.setStyle(Style.FILL);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.drawPaint(paint);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; paint.setColor(Color.GREEN);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int width=canvas.getWidth();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int height=canvas.getHeight();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; int radius;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(width&amp;lt;height)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; radius=width/2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; radius=height/2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.drawCircle(width/2, height/2, radius, paint);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; paint.setColor(Color.YELLOW);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Path ph=new Path();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ph.setLastPoint(0, height/2);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ph.lineTo(width/2, height/2+radius);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ph.lineTo(width, height/2);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ph.lineTo(width/2, height/2-radius);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; canvas.drawPath(ph, paint);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Bitmap bruno = BitmapFactory.decodeResource(getResources(),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R.drawable.giordanobruno);&lt;br /&gt;
&lt;br /&gt;
canvas.drawBitmap(bruno,width/2-bruno.getWidth()/2, height/2-bruno.getHeight()/2,null);&lt;br /&gt;
paint.setColor(Color.MAGENTA);&lt;br /&gt;
paint.setTextSize(40);&lt;br /&gt;
String headline=&quot;Hypatia Software Solutions&quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;float textwidth=paint.measureText(headline);&lt;br /&gt;
&lt;br /&gt;
canvas.drawText(headline,width/2-textwidth/2,height/4,paint);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;strings.xml&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;hello&quot;&amp;gt;Hypatia Drawing Basics Activity!&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;app_name&quot;&amp;gt;Hypatia&amp;nbsp; Drawing&amp;nbsp; Basics&amp;lt;/string&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/resources&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;u&gt;The app as it appears in the emulator.&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;180&quot; src=&quot;data:image/png;base64,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eoqrtDhy1IiUjOT1761ze9yaYQ2XLFpspglWgAA4EHZoPp/0hk/6aXAAWJakX4UIcLWkALA6A8xxgcYSiYalTkWig9OnT+/YsWPnzp0nT568evXq1atXr1y5cunSpYsXL164cOHMmTMHDx5samrau3cvSquyxkb2dfXq1ebm5i1btnz00Ufnz5+/du3alStXUPALFy6cP3++paVl165d77//fnNzsxqwOZGVtxcuXNi7d++WLVuOHj16+fJlNOzLly9fvHjx/PnzZ8+e/fjjj7dt27Z9+/bTp0+zzp0zftalVpezxtYudr8AgEEgEFLwAPhmr6gArGZgQQC+yZDSHB2rP0IdsRqCQP1MnCnQCIDDNwP8ROABWL/nsyZSGsMesk6AuNosAMZKWCni619fn/PSixGjRv3ukSFWmzUmNmbI8CFDIocMjYochjLAUZExCVHFpY50a0ZiasKrS19RD8Z0ADZ3GyRTANjANkiGR7sY84UOBACjPypFhQhwtWQgA4xEZiMxh2Q+xalL0DLUpqYmxJ+XL19ubW1taWk5fvz40V4dP3785MmTR48e3b59+/bt28+ePdveN99LDdve3n7t2rW9e/du3br19OnT165du3DhwunTp1taWtSRT5w40dLScujQoaampn379iEGVkdmjf/s2bPbtm3btWvX5cuXr127du7cuZMnT6JhHzt2DP3b0tJy4sSJPXv2bN68uaWlhTVa1vj9/1sDX7AGGAQCKQojAFYYOEAArPQSQOAAgcJJHBfoqKgo9T7AA3vX7ioHalKlJm+xOizKFQyLZ4D/ovOnuQEXaJ/kkKUb/tGsKfNpRfjKrIm76rfGAFh8ZvIf//hHZ4kzJTUlOjq6dvyY4lJnYnJMQmr8qMRRI2JHDIsaNjJuZHR8tKussKyiLN2aPv+VuaYDsHq05m6DFIikvch998dcepEs/WMQMsANIQJcLbEywJgLNB/DOJ9Sk5NYWvLkyZONjY1Hjx69cuXK6dOnjxw5cujQoQO92r9///79+w8cOHDw4MHDhw83Nzdv3bp169atFy9e5ACkMo15//7977///rlz55R1xUpwFBbp4MGDzc3NBw4caGxs3L9/P4ap2OpZ9O/Fixe3bdu2Z8+ey5cvnz179tixY4cPHz6gkhL/0KFDH3/88a5duxobG9FVpY62nZYEFgdgVmJZUwDA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/vCHieixxx57/vnnm5ubg98CIYABAGXFlClTpkyZ0t7e/tRTT331q1+tqal573vfqysuuXMrRB7E2LLLBGEkaPQEQ8I6k4magNxLFy5XjFXNwAEGAGjAAcYDj9J86AL4iSeemDFjxiOPPPL6669v3boV+5+Bk7lz506bNi3tLPKlurp6+vTpaWeRL1OnTl22bNm6desaGhpWr15dXV2ddkalwNSpU6urq7dt2/b1r3/90qVL06ZN+4M/+AOnprL3+sbQXTHIRwAzoRjVyoeVO8BMKD0NXxD+HBl57DxHI1sIYACADhxgPPAo2YcugJ9++um5c+eeOHHizTff3L9/P9RvVKZMmdLY2Lh79+7du3fv2rVr93h8LZs2baqoqEg7dxEzZszYv3//P/zDP3zwgx9cvHhxMX5CKioq5s2bd/jw4aeeeqqjoyPtdPJizpw5H/zgB1999dWf/vSnP//5z7///e8//fTTra2taedV9FRUVMydO3fTpk0/+MEP/uiP/oiI/uqv/kqu62zpxei0fDSwMyAzr92T6cNIWV32+84i3kLp/xpTMMnIg9sT2UAAAwAUcIDxwKM0H7oA/sY3vrFixYrm5uY333xzeHh4wYIFlZWVxaLNJgNLlix54403xsbGcrlc8K9+oDBa3nrrrc7OzrRzD6GiomLv3r1PP/30L37xi2w2m8vlXnrppV/7tV+bN29e2qlJmT179uHDhx9//PFMJpPNZm/cuDE8PDxfY968eUVU+Xzu3Ll/8zd/k81mX3jhhV//9V+/9957//qv//rHP/7x97///d27d6edXdEzd+7cgwcPjo2N3XPPPbNnz/7Sl740qqErNENMyjvwQyQtfBBGTDIBo+YQNat8hhiZhwYRTmS0QAADAAImhQP80EMPSX6bb3voO8HjkUe//YlLLyQlEr725W888ui3g7D/+MVvRhr7kce//ZHHv526zsEDD+dDF8CvvPLKxo0bV6xY8corrzz44INbtmyprKysrKxM+3fRomHZsmU/+9nPPv3pTz/s4qHb6E//4i/+4he/+MXAwEDauXupqKjo6Oh49tlnf/azn/3gBz/40z/90/Xr1z/wwAOXL19+6623vvvd7z788MOTXwZv2rTppZdeUuo9m81ms9kf/ehHP/zhD994440f/vCHwcG1a9cef/zxxsbGtPMN533ve9/Pf/7z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&quot; width=&quot;320&quot; /&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Next we shall attempt moving graphics. &lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/2574622601435067932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2011/12/basic-android-graphics-example.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/2574622601435067932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/2574622601435067932'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2011/12/basic-android-graphics-example.html' title='A Basic Android Graphics Example'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2hVf2kkwi8TMLsQO0CoV7uV3AMuDa2Vs8PH1O6E88M38xEqnAeTBDN646n5QdPPg1s2Xi_OHA6ABYbfswv-APbS08xHRo1U4JALy-LPje2bvhq7fMq-qW7w-5ZjzNqZdp9jE4ZsVBeSHs/s72-c/1.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-3324287056640105594</id><published>2011-11-28T22:33:00.000+05:30</published><updated>2011-11-28T22:33:34.320+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basics of C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Handling Pictures in C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Image Filters"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>Image Filters</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;This is a continuation of the previous post at &lt;a href=&quot;http://champakonline.blogspot.com/2011/11/handling-images-in-c.html&quot;&gt;Handling Images in C#&lt;/a&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt;A Grayscale Filter&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;b&gt;To develop a Grayscale filter simply add up the red green and blue pixels and divide by 3. This averages out the values.&lt;/b&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;public static Bitmap GrayScaleFilter(Bitmap inputbitmap)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bitmap outputbitmap = new Bitmap(inputbitmap.Width, inputbitmap.Height);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BitmapData inputdata = inputbitmap.LockBits(new Rectangle(0, 0, inputbitmap.Width, inputbitmap.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BitmapData outputdata = outputbitmap.LockBits(new Rectangle(0, 0, outputbitmap.Width, outputbitmap.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int inputstride = inputdata.Stride;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int outputstride = outputdata.Stride;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.IntPtr inputScan = inputdata.Scan0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.IntPtr outputScan = outputdata.Scan0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsafe&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte* newp1 = (byte*)(void*)inputScan;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte* newp2 = (byte*)(void*)outputScan;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int newOffset1 = inputstride - inputbitmap.Width * 3;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int newOffset2 = outputstride - outputdata.Width * 3;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte redvalue, greenvalue, bluevalue;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte newred, newgreen, newblue;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int y = 0; y &amp;lt; inputbitmap.Height; ++y)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int x = 0; x &amp;lt; inputbitmap.Width; ++x)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bluevalue = newp1[0];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; greenvalue = newp1[1];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; redvalue = newp1[2];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte&amp;nbsp; grayscalevalue =(byte )( (redvalue + greenvalue + bluevalue) / 3.0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp2[0] = grayscalevalue&amp;nbsp; ;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp2[1] = grayscalevalue&amp;nbsp; ;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp2[2] = grayscalevalue&amp;nbsp; ;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp1 += 3;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp2 += 3;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp1 += newOffset1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp2 += newOffset2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inputbitmap.UnlockBits(inputdata );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; outputbitmap.UnlockBits(outputdata );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return outputbitmap;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNNkvRVb9IyjXEuvQEQEQrGDjVj87_Uq11WH1jlSUEdmJYGaXxBd4quOBQOJ_jOhCdEV-mCZl_Xd6xQdeL7PMWvRRrmXAl4oPKGBRce1DPtxsjuMuL_PLGjvfxi88wSCKpphnAOy-qd5zR/s1600/4.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNNkvRVb9IyjXEuvQEQEQrGDjVj87_Uq11WH1jlSUEdmJYGaXxBd4quOBQOJ_jOhCdEV-mCZl_Xd6xQdeL7PMWvRRrmXAl4oPKGBRce1DPtxsjuMuL_PLGjvfxi88wSCKpphnAOy-qd5zR/s320/4.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;A BlackAndWhite Filter&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Simply take the averaged value from the previous filter. If the average is greater than 128 make it white 255 else make it black 255.&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static Bitmap BlackAndWhiteFilter(Bitmap inputbitmap)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bitmap outputbitmap = new Bitmap(inputbitmap.Width, inputbitmap.Height);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BitmapData inputdata = inputbitmap.LockBits(new Rectangle(0, 0, inputbitmap.Width, inputbitmap.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BitmapData outputdata = outputbitmap.LockBits(new Rectangle(0, 0, outputbitmap.Width, outputbitmap.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int inputstride = inputdata.Stride;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int outputstride = outputdata.Stride;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.IntPtr inputScan = inputdata.Scan0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.IntPtr outputScan = outputdata.Scan0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsafe&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte* newp1 = (byte*)(void*)inputScan;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte* newp2 = (byte*)(void*)outputScan;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int newOffset1 = inputstride - inputbitmap.Width * 3;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int newOffset2 = outputstride - outputdata.Width * 3;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte redvalue, greenvalue, bluevalue;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int y = 0; y &amp;lt; inputbitmap.Height; ++y)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int x = 0; x &amp;lt; inputbitmap.Width; ++x)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bluevalue = newp1[0];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; greenvalue = newp1[1];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; redvalue = newp1[2];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte&amp;nbsp; avgvalue =(byte )( (redvalue + greenvalue + bluevalue) / 3.0);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (avgvalue &amp;gt; 128)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; avgvalue = 255;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; avgvalue = 0;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp2[0] = avgvalue&amp;nbsp;&amp;nbsp; ;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp2[1] = avgvalue&amp;nbsp;&amp;nbsp; ;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp2[2] = avgvalue&amp;nbsp;&amp;nbsp; ;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp1 += 3;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp2 += 3;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp1 += newOffset1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp2 += newOffset2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inputbitmap.UnlockBits(inputdata );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; outputbitmap.UnlockBits(outputdata );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return outputbitmap;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqR9kub8tebDJ9zWuoaJKhDMvf63QSY7py2ruSdaunnuY87fvGtcab10lrB4ObgeaXzSN0qbINt95KRFRHqDFrdfJ6_tzVhLJa8KzR3Wj1EOhYDpLeDVc4keG5JpzHiH1314b_MyKwTiM7/s1600/5.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqR9kub8tebDJ9zWuoaJKhDMvf63QSY7py2ruSdaunnuY87fvGtcab10lrB4ObgeaXzSN0qbINt95KRFRHqDFrdfJ6_tzVhLJa8KzR3Wj1EOhYDpLeDVc4keG5JpzHiH1314b_MyKwTiM7/s320/5.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Next we shall develop edge detection filters.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/3324287056640105594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2011/11/image-filters.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/3324287056640105594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/3324287056640105594'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2011/11/image-filters.html' title='Image Filters'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNNkvRVb9IyjXEuvQEQEQrGDjVj87_Uq11WH1jlSUEdmJYGaXxBd4quOBQOJ_jOhCdEV-mCZl_Xd6xQdeL7PMWvRRrmXAl4oPKGBRce1DPtxsjuMuL_PLGjvfxi88wSCKpphnAOy-qd5zR/s72-c/4.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-4176040643309051187</id><published>2011-11-27T23:42:00.001+05:30</published><updated>2012-02-09T22:06:17.996+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Basics of C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Bitmaps"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Handling Pictures in C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Unsafe Code"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>Handling Images in C#</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;Image Handling in C#&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;An Image as we all know is a two dimensional array of pixels. Each pixel has three components Red, Green &amp;amp; Blue. However there is a bit of a surprise here. The first pixel is Blue,the second Green and the last Red. Pixels can be handled directly, however, processing gets very slow. Therefore we shall use pointers. to do this we must use unsafe code. The first requirement is to compile the application with the unsafe switch. Here is how it&#39;s done. Open the properties of the project and check the allow unsafe code check box.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXN7xGR9RXcXBeTUbAESB3PGHXvsw7YZGuiYonN7EDhuoT1sOSDSBLgBVa6DR5i6Lv2JzSaVE1WXPNFeELrzO2X-WWmLi52DGrNlW52y7XPrv-Xy0UXSlgeoVoZPfwCI4JOlDH5fi1YU62/s1600/1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXN7xGR9RXcXBeTUbAESB3PGHXvsw7YZGuiYonN7EDhuoT1sOSDSBLgBVa6DR5i6Lv2JzSaVE1WXPNFeELrzO2X-WWmLi52DGrNlW52y7XPrv-Xy0UXSlgeoVoZPfwCI4JOlDH5fi1YU62/s320/1.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;First of all we should lock the bitmap using the LockBits method. This is done like this :-&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;BitmapData inputdata = inputbitmap.LockBits(new Rectangle(0, 0, inputbitmap.Width, inputbitmap.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Next we calculate the stride.The stride is the width of a single row of pixels (a scan line), rounded  up to a four-byte boundary. If the stride is positive, the bitmap is  top-down. If the stride is negative, the bitmap is bottom-up.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;int inputstride = inputdata.Stride;&lt;/i&gt;&lt;/b&gt; &lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Next we get the address of the first pixel in the bitmap.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;System.IntPtr inputScan = inputdata.Scan0;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Next calculate the offset. This is done by&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;int newOffset1 = inputstride - inputbitmap.Width * 3;&lt;/i&gt;&lt;/b&gt; &lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Now we are ready to implement a simple filter. This will simply interchange the Red and Green pixel values and create a new bitmap.&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;HypatiaFilters.cs&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Drawing.Imaging ;&lt;br /&gt;
using System.Drawing ;&lt;br /&gt;
namespace PictureFiltering&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static class HypatiaFilters&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static Bitmap ExchangeRedAndGreen(Bitmap inputbitmap)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bitmap outputbitmap = new Bitmap(inputbitmap.Width, inputbitmap.Height);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BitmapData inputdata = inputbitmap.LockBits(new Rectangle(0, 0, inputbitmap.Width, inputbitmap.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BitmapData outputdata = outputbitmap.LockBits(new Rectangle(0, 0, outputbitmap.Width, outputbitmap.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int inputstride = inputdata.Stride;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int outputstride = outputdata.Stride;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.IntPtr inputScan = inputdata.Scan0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.IntPtr outputScan = outputdata.Scan0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsafe&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte* newp1 = (byte*)(void*)inputScan;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte* newp2 = (byte*)(void*)outputScan;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int newOffset1 = inputstride - inputbitmap.Width * 3;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int newOffset2 = outputstride - outputdata.Width * 3;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte redvalue, greenvalue, bluevalue;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte newred, newgreen, newblue;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int y = 0; y &amp;lt; inputbitmap.Height; ++y)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int x = 0; x &amp;lt; inputbitmap.Width; ++x)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bluevalue = newp1[0];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; greenvalue = newp1[1];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; redvalue = newp1[2];&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newblue&amp;nbsp; = bluevalue ;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newgreen&amp;nbsp; = redvalue ;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newred&amp;nbsp; = greenvalue ;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp2[0] = newblue ;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp2[1] = newgreen ;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp2[2] = newred ;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp1 += 3;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp2 += 3;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp1 += newOffset1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newp2 += newOffset2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inputbitmap.UnlockBits(inputdata );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; outputbitmap.UnlockBits(outputdata );&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return outputbitmap;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Here is a result of a run of this software&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_mF5RDK3ytcLGyB8fkD5pHwdMcBa2amPyTgxocQs_O-yoA4v5R9sDzqNHrSj6DluidRpHPdzNsvs7kN2cazt9CP0DBLtm84o0VhqmUZt88WH6gBcyfh8v6bNGxHhqH-lhGXxAruq1yg1N/s1600/2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_mF5RDK3ytcLGyB8fkD5pHwdMcBa2amPyTgxocQs_O-yoA4v5R9sDzqNHrSj6DluidRpHPdzNsvs7kN2cazt9CP0DBLtm84o0VhqmUZt88WH6gBcyfh8v6bNGxHhqH-lhGXxAruq1yg1N/s320/2.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;I have put all this in a windows application&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaVKcaYFOLctKKcIlN1O04euutxAjekzP5zE0Y0J0E1iusYC_H0CUA2ow7SLCTz4_FExx1Sleyi8t8W0GG9iTzBDIm6WCQMh5iyVQxKMvScI7no2WdPu52O_WjZ-hBJ4cM1zUgDT8KaQeI/s1600/3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaVKcaYFOLctKKcIlN1O04euutxAjekzP5zE0Y0J0E1iusYC_H0CUA2ow7SLCTz4_FExx1Sleyi8t8W0GG9iTzBDIm6WCQMh5iyVQxKMvScI7no2WdPu52O_WjZ-hBJ4cM1zUgDT8KaQeI/s320/3.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;Form1.Designer.cs&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;namespace PictureFiltering&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; partial class Form1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Required designer variable.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private System.ComponentModel.IContainer components = null;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Clean up any resources being used.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name=&quot;disposing&quot;&amp;gt;true if managed resources should be disposed; otherwise, false.&amp;lt;/param&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected override void Dispose(bool disposing)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (disposing &amp;amp;&amp;amp; (components != null))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; components.Dispose();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.Dispose(disposing);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region Windows Form Designer generated code&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Required method for Designer support - do not modify&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// the contents of this method with the code editor.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void InitializeComponent()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.p1 = new System.Windows.Forms.PictureBox();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.button1 = new System.Windows.Forms.Button();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ofd = new System.Windows.Forms.OpenFileDialog();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.p2 = new System.Windows.Forms.PictureBox();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((System.ComponentModel.ISupportInitialize)(this.p1)).BeginInit();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((System.ComponentModel.ISupportInitialize)(this.p2)).BeginInit();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.SuspendLayout();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // p1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.p1.Location = new System.Drawing.Point(32, 12);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.p1.Name = &quot;p1&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.p1.Size = new System.Drawing.Size(420, 380);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.p1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.p1.TabIndex = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.p1.TabStop = false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // button1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.button1.Location = new System.Drawing.Point(538, 410);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.button1.Name = &quot;button1&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.button1.Size = new System.Drawing.Size(75, 23);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.button1.TabIndex = 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.button1.Text = &quot;Get Image&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.button1.UseVisualStyleBackColor = true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.button1.Click += new System.EventHandler(this.button1_Click);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ofd&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ofd.FileOk += new System.ComponentModel.CancelEventHandler(this.ofd_FileOk);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // p2&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.p2.Location = new System.Drawing.Point(636, 12);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.p2.Name = &quot;p2&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.p2.Size = new System.Drawing.Size(420, 380);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.p2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.p2.TabIndex = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.p2.TabStop = false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Form1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ClientSize = new System.Drawing.Size(1107, 474);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Controls.Add(this.button1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Controls.Add(this.p2);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Controls.Add(this.p1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Name = &quot;Form1&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Text = &quot;Hypatia Picture Filtering&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((System.ComponentModel.ISupportInitialize)(this.p1)).EndInit();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((System.ComponentModel.ISupportInitialize)(this.p2)).EndInit();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ResumeLayout(false);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private System.Windows.Forms.PictureBox p1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private System.Windows.Forms.Button button1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private System.Windows.Forms.OpenFileDialog ofd;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private System.Windows.Forms.PictureBox p2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/b&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;Form1.cs&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.ComponentModel;&lt;br /&gt;
using System.Data;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
&lt;br /&gt;
namespace PictureFiltering&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public partial class Form1 : Form&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Form1()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void button1_Click(object sender, EventArgs e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ofd.ShowDialog(this);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void ofd_FileOk(object sender, CancelEventArgs e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p1.Image = System.Drawing.Image.FromFile(ofd.FileName);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p2.Image = HypatiaFilters.ExchangeRedAndGreen((Bitmap)p1.Image);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/i&gt;&lt;u&gt;&amp;nbsp;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;u&gt;Program.cs&amp;nbsp;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;b&gt;&lt;i&gt;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
&lt;br /&gt;
namespace PictureFiltering&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; static class Program&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// The main entry point for the application.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [STAThread]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Application.EnableVisualStyles();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Application.SetCompatibleTextRenderingDefault(false);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Application.Run(new Form1());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/i&gt;&lt;u&gt;&lt;br /&gt;
&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/4176040643309051187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2011/11/handling-images-in-c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/4176040643309051187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/4176040643309051187'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2011/11/handling-images-in-c.html' title='Handling Images in C#'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXN7xGR9RXcXBeTUbAESB3PGHXvsw7YZGuiYonN7EDhuoT1sOSDSBLgBVa6DR5i6Lv2JzSaVE1WXPNFeELrzO2X-WWmLi52DGrNlW52y7XPrv-Xy0UXSlgeoVoZPfwCI4JOlDH5fi1YU62/s72-c/1.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-5340113285076393398</id><published>2011-11-26T22:49:00.001+05:30</published><updated>2011-11-26T22:50:40.981+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>A Basic Android Example</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;A Basic Android Example&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Android&lt;/b&gt;&lt;/u&gt; according to the definition provided at developer.android.com is&amp;nbsp;&lt;u&gt;&lt;b&gt; &lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;b&gt;&lt;i&gt;a software stack for mobile devices that includes an operating system, middleware and key applications. The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;It provides the necessary tools for developing software for the Android OS. Important parts are :-&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;1) SQLLite for Data Storage.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;2) Optimized Graphics&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;3) Media support for common audio/video formats &amp;amp; still image formats.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;4) GSM&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;5) Bluetooth&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;6) Camera, GPS , etc,&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;For developing Android applications we need to download the Android SDK, and also setup Eclipse on our computer. Both are available as free downloads. It is also possible to develop using only the Android SDK from the commandline.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Many setup guides are available on the internet, and setting up the environment should be a cinch.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;A Sample Application&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;To begin, let us develop a simple application that shall read two numbers from two textfields and display their sum in the third.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;First of all start Eclipse, New Project&amp;nbsp; and select Android Project.&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Since we are developing for the Samsung Galaxy, select Samsung Tab.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXm8wKAw7tzb2ZpsMDzcj4hC8m-33yYya2LzAg7czJ7y3YVZ6H5TuUwmaQtCClfOpVSZO5Ju34XP1USZw5yq-1tMb2JcYgX0M7WQgbo_12Li6G8ghUHYESQa293PMJVzmjYdewPPmWGrRe/s1600/1.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXm8wKAw7tzb2ZpsMDzcj4hC8m-33yYya2LzAg7czJ7y3YVZ6H5TuUwmaQtCClfOpVSZO5Ju34XP1USZw5yq-1tMb2JcYgX0M7WQgbo_12Li6G8ghUHYESQa293PMJVzmjYdewPPmWGrRe/s320/1.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgsj6eyq_qomAGJTnRcVo6MvcB_0B1UM3ttwx1I71jBZ_AW7XsnfqgPcy0swnBQn2KFUOHSR7yNCDDHnGqm4drZKcfHqTa-DAJaTiAypA6dz-3uGXNdZHeBpLucMRETAXSF7Aocz0lBt_U/s1600/2.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgsj6eyq_qomAGJTnRcVo6MvcB_0B1UM3ttwx1I71jBZ_AW7XsnfqgPcy0swnBQn2KFUOHSR7yNCDDHnGqm4drZKcfHqTa-DAJaTiAypA6dz-3uGXNdZHeBpLucMRETAXSF7Aocz0lBt_U/s320/2.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCY68AV-ZtEnWOsm79xZtybbZWBiqQ6LXTywXTimHfTzPH1cpJ9SwWqxJEmW-pdNWj46qmrV47556_NK8gd54zHm8ERWjeT87mQ540ejtfIwJVtFECt9t98n3HUrQcH0vt05na2N7tG2u2/s1600/3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCY68AV-ZtEnWOsm79xZtybbZWBiqQ6LXTywXTimHfTzPH1cpJ9SwWqxJEmW-pdNWj46qmrV47556_NK8gd54zHm8ERWjeT87mQ540ejtfIwJVtFECt9t98n3HUrQcH0vt05na2N7tG2u2/s320/3.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Android programming is done using the Java Programming Language, and user interface design is done using XML.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;To create the user interface .&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;After creating the project.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCzsyymnUnlJUzpImBoUYuV3U4DHqu5lEp8_cLszI5DxLQuCDXFMHfZvfgJa7SVygtKbv_ooOzaQXiyDS3Y2JvfxiWU6OoFt7iWp8rvlAp2MK51qcBNbdncC_p_7GfERXz5-0oUaWSn23u/s1600/4.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCzsyymnUnlJUzpImBoUYuV3U4DHqu5lEp8_cLszI5DxLQuCDXFMHfZvfgJa7SVygtKbv_ooOzaQXiyDS3Y2JvfxiWU6OoFt7iWp8rvlAp2MK51qcBNbdncC_p_7GfERXz5-0oUaWSn23u/s320/4.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Open main.xml&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;This will bring up the User Interface designer. It has two views. The Graphical Layout &amp;amp; the XML view&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYvL-45WLhhabhyxhcReQZu06Iq60AimxOLkSOwguNhp6kkmtuflkK8kUZyv0GGF_fnlxeVX_XWux4cnIY7soOjZFE0dj0Bk_8cIAqVVsDjzRPcL2d4J2GSGZCF-X4PDaDb0578D3xbOPG/s1600/5.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYvL-45WLhhabhyxhcReQZu06Iq60AimxOLkSOwguNhp6kkmtuflkK8kUZyv0GGF_fnlxeVX_XWux4cnIY7soOjZFE0dj0Bk_8cIAqVVsDjzRPcL2d4J2GSGZCF-X4PDaDb0578D3xbOPG/s320/5.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2zvVX4-K3hZQ0mridHZuxIK5cyy_as_4zs4Ps0NkUmJrXsJig5oPxAXGiEv5tn5IXpQ6TX-yxB67F6_xtIqptA0AIuwIZqT2M9vJFu_PHAbgO1F5ZN7Fbqw9fBJQrENLb2hDHY1M9VaqX/s1600/6.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2zvVX4-K3hZQ0mridHZuxIK5cyy_as_4zs4Ps0NkUmJrXsJig5oPxAXGiEv5tn5IXpQ6TX-yxB67F6_xtIqptA0AIuwIZqT2M9vJFu_PHAbgO1F5ZN7Fbqw9fBJQrENLb2hDHY1M9VaqX/s320/6.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Now we shall drag and drop three EditText boxes and a Button onto the mobile.&lt;br /&gt;
This is the user interface now.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoZkQrkfQNSybL9ZpDyLzBMibWTA23KXIq5wRRhCjKI1eL5tBbkVYUMib6DgpeL1fNYUtM2736ekI0aBI3F_qcF5qcsFj9f6mxW-rZrzRg_28ob4p0D7K4q_8XNlMQ0fgaoMOxWHhJzJqO/s1600/7.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoZkQrkfQNSybL9ZpDyLzBMibWTA23KXIq5wRRhCjKI1eL5tBbkVYUMib6DgpeL1fNYUtM2736ekI0aBI3F_qcF5qcsFj9f6mxW-rZrzRg_28ob4p0D7K4q_8XNlMQ0fgaoMOxWHhJzJqO/s320/7.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;This is the main.xml file&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;fill_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;fill_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orientation=&quot;vertical&quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;fill_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text=&quot;@string/hello&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EditText&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id=&quot;@+id/editText1&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:inputType=&quot;numberSigned&quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;requestFocus /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/EditText&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EditText&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id=&quot;@+id/editText2&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:inputType=&quot;numberSigned&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id=&quot;@+id/button1&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text=&quot;Button&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EditText&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id=&quot;@+id/editText3&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:inputType=&quot;numberSigned&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
We shall change the caption of the button to add.&lt;br /&gt;
This is done by adding a new String to &lt;br /&gt;
strings.xml&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;hello&quot;&amp;gt;Dedicated to Hypatia of Alexandria&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;app_name&quot;&amp;gt;HypatiaBasicAndroid&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name=&quot;buttoncaption&quot;&amp;gt;Add&amp;lt;/string&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/resources&amp;gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiys9uVc65NuYWFGem9IIarh5gcK80YOo3E4NG3MAkyibjXfrTZcMPQXU2rNLI98_jxyKSt1vrvxZDBqoi1_HOG34lPH9aYMm8lD9j-c0BbAlvgiDCMJlOOk2hjmKpDADepc4XI1OMuwmoC/s1600/8.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiys9uVc65NuYWFGem9IIarh5gcK80YOo3E4NG3MAkyibjXfrTZcMPQXU2rNLI98_jxyKSt1vrvxZDBqoi1_HOG34lPH9aYMm8lD9j-c0BbAlvgiDCMJlOOk2hjmKpDADepc4XI1OMuwmoC/s320/8.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7MhvpcI99vzaKiRBDQbn-3Ng0tLBMxG04v1B-AH8slEHK4YztNhZMd7C57-4LrtYfeaK_KPV7e1WYuk5x1q2-af78CIRKPz0LGE6eIAabTuzwG1xYswEDQ3GE8LLz6SVIxkQCTgMYE6Ns/s1600/9.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7MhvpcI99vzaKiRBDQbn-3Ng0tLBMxG04v1B-AH8slEHK4YztNhZMd7C57-4LrtYfeaK_KPV7e1WYuk5x1q2-af78CIRKPz0LGE6eIAabTuzwG1xYswEDQ3GE8LLz6SVIxkQCTgMYE6Ns/s320/9.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;&amp;nbsp;HypatiaBasicAndroidActivity.java&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;package hypatia.basic;&lt;br /&gt;
&lt;br /&gt;
import android.app.Activity;&lt;br /&gt;
import android.os.Bundle;&lt;br /&gt;
import android.view.View;&lt;br /&gt;
import android.view.View.OnClickListener;&lt;br /&gt;
import android.widget.Button;&lt;br /&gt;
import android.widget.EditText;&lt;br /&gt;
&lt;br /&gt;
public class HypatiaBasicAndroidActivity extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /** Called when the activity is first created. */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; EditText t1,t2,t3;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Button b;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(savedInstanceState);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(R.layout.main);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b=(Button)findViewById(R.id.button1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1=(EditText)findViewById(R.id.editText1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t2=(EditText)findViewById(R.id.editText2);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t3=(EditText)findViewById(R.id.editText3);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.setOnClickListener(new ButtonHandler());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; class ButtonHandler implements OnClickListener&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO Auto-generated method stub&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int a=Integer.parseInt(&quot;&quot; + t1.getText());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int b=Integer.parseInt(&quot;&quot; + t2.getText());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int sum=a+b;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; t3.setText(&quot;&quot; + sum);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO: handle exception&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; t3.setText(ex.getMessage());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;In future posts, we shall cover all of android.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/5340113285076393398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2011/11/basic-android-example.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/5340113285076393398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/5340113285076393398'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2011/11/basic-android-example.html' title='A Basic Android Example'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXm8wKAw7tzb2ZpsMDzcj4hC8m-33yYya2LzAg7czJ7y3YVZ6H5TuUwmaQtCClfOpVSZO5Ju34XP1USZw5yq-1tMb2JcYgX0M7WQgbo_12Li6G8ghUHYESQa293PMJVzmjYdewPPmWGrRe/s72-c/1.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-4289482571206094749</id><published>2011-06-16T22:29:00.000+05:30</published><updated>2026-09-12T09:10:51.103+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Genetic Algorithm in Matlab"/><category scheme="http://www.blogger.com/atom/ns#" term="Matlab"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Operations Research in Matlab"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>Basics of the Genetic Algorithm in Matlab</title><content type='html'>&lt;div class=&quot;lwc-genetic-algorithm-post&quot;&gt;
  &lt;h1&gt;Genetic Algorithm Optimization in MATLAB&lt;/h1&gt;

  &lt;p&gt;
    A genetic algorithm is a population-based optimization method inspired by
    natural selection. It repeatedly selects promising candidate solutions and
    creates new solutions using crossover and mutation.
  &lt;/p&gt;

  &lt;p&gt;Genetic algorithms can be useful when:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;The objective function is nonlinear, discontinuous or difficult to differentiate.&lt;/li&gt;
    &lt;li&gt;The search space contains several local optima.&lt;/li&gt;
    &lt;li&gt;Traditional derivative-based methods are unsuitable.&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;
    A genetic algorithm is not automatically faster or better than every other
    optimization technique. The appropriate method depends on the problem.
    For the linear examples below, &lt;code&gt;linprog&lt;/code&gt; would normally be more
    efficient, but they provide a simple introduction to MATLAB’s
    &lt;code&gt;ga&lt;/code&gt; syntax.
  &lt;/p&gt;

  &lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
    &lt;img
      alt=&quot;Genetic algorithm and natural selection&quot;
      loading=&quot;lazy&quot;
      src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVh6FcwsurgXfKkqNIfY8AT9vxaI75DnpbcUfTKcHLnFpkiV12uu6vxxrSFIHkGmgEXduFvooqB6qhuXc0Q7eVTBKdDSHOODDQ-yaZcijQ8g39H8pL75CRAJ-E77sNYY-qXcD-ELb9a-I/s1600/images.jpg&quot;
    /&gt;
  &lt;/div&gt;

  &lt;h2&gt;Main components&lt;/h2&gt;

  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Fitness function:&lt;/strong&gt; measures the quality of a candidate solution.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Selection:&lt;/strong&gt; chooses candidates for reproduction.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Crossover:&lt;/strong&gt; combines information from selected candidates.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Mutation:&lt;/strong&gt; introduces controlled random changes.&lt;/li&gt;
  &lt;/ul&gt;

  &lt;h2&gt;MATLAB syntax&lt;/h2&gt;

  &lt;pre&gt;&lt;code&gt;[x, fval, exitflag] = ga( ...
    fitnessFunction, ...
    numberOfVariables, ...
    A, b, ...
    Aeq, beq, ...
    lowerBounds, upperBounds);&lt;/code&gt;&lt;/pre&gt;

  &lt;p&gt;MATLAB expresses linear inequality constraints in this form:&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;A × x ≤ b&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;
    Use empty brackets, &lt;code&gt;[]&lt;/code&gt;, when an optional constraint is not
    required.
  &lt;/p&gt;

  &lt;h2&gt;Problem 1: Minimization with linear constraints&lt;/h2&gt;

  &lt;p&gt;Minimize:&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;z = −x&lt;sub&gt;1&lt;/sub&gt; + 2x&lt;sub&gt;2&lt;/sub&gt;&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;Subject to:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;−x&lt;sub&gt;1&lt;/sub&gt; + 3x&lt;sub&gt;2&lt;/sub&gt; ≤ 10&lt;/li&gt;
    &lt;li&gt;x&lt;sub&gt;1&lt;/sub&gt; + x&lt;sub&gt;2&lt;/sub&gt; ≤ 6&lt;/li&gt;
    &lt;li&gt;x&lt;sub&gt;1&lt;/sub&gt; − x&lt;sub&gt;2&lt;/sub&gt; ≤ 2&lt;/li&gt;
    &lt;li&gt;x&lt;sub&gt;1&lt;/sub&gt; ≥ 0 and x&lt;sub&gt;2&lt;/sub&gt; ≥ 0&lt;/li&gt;
  &lt;/ul&gt;

  &lt;h3&gt;Fitness function: fitness1.m&lt;/h3&gt;

  &lt;pre&gt;&lt;code&gt;function y = fitness1(x)
    y = -x(1) + 2*x(2);
end&lt;/code&gt;&lt;/pre&gt;

  &lt;h3&gt;MATLAB commands&lt;/h3&gt;

  &lt;pre&gt;&lt;code&gt;A = [-1  3;
      1  1;
      1 -1];

b = [10;
      6;
      2];

lb = [0 0];

[x, fval, exitflag] = ga( ...
    @fitness1, 2, A, b, [], [], lb, []);&lt;/code&gt;&lt;/pre&gt;

  &lt;p&gt;The solution should be approximately:&lt;/p&gt;

  &lt;pre&gt;&lt;code&gt;x ≈ [2 0]
fval ≈ -2&lt;/code&gt;&lt;/pre&gt;

  &lt;p&gt;
    Genetic algorithms use randomness, so the displayed values may differ
    slightly between runs.
  &lt;/p&gt;

  &lt;h2&gt;Problem 2: Converting greater-than constraints&lt;/h2&gt;

  &lt;p&gt;Minimize:&lt;/p&gt;

  &lt;p&gt;&lt;strong&gt;z = 20x&lt;sub&gt;1&lt;/sub&gt; + 40x&lt;sub&gt;2&lt;/sub&gt;&lt;/strong&gt;&lt;/p&gt;

  &lt;p&gt;Subject to:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;36x&lt;sub&gt;1&lt;/sub&gt; + 6x&lt;sub&gt;2&lt;/sub&gt; ≥ 108&lt;/li&gt;
    &lt;li&gt;3x&lt;sub&gt;1&lt;/sub&gt; + 12x&lt;sub&gt;2&lt;/sub&gt; ≥ 36&lt;/li&gt;
    &lt;li&gt;20x&lt;sub&gt;1&lt;/sub&gt; + 12x&lt;sub&gt;2&lt;/sub&gt; ≥ 100&lt;/li&gt;
    &lt;li&gt;x&lt;sub&gt;1&lt;/sub&gt; ≥ 0 and x&lt;sub&gt;2&lt;/sub&gt; ≥ 0&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;
    MATLAB requires inequalities in the form &lt;strong&gt;A × x ≤ b&lt;/strong&gt;.
    Therefore, multiply each greater-than constraint by −1:
  &lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;−36x&lt;sub&gt;1&lt;/sub&gt; − 6x&lt;sub&gt;2&lt;/sub&gt; ≤ −108&lt;/li&gt;
    &lt;li&gt;−3x&lt;sub&gt;1&lt;/sub&gt; − 12x&lt;sub&gt;2&lt;/sub&gt; ≤ −36&lt;/li&gt;
    &lt;li&gt;−20x&lt;sub&gt;1&lt;/sub&gt; − 12x&lt;sub&gt;2&lt;/sub&gt; ≤ −100&lt;/li&gt;
  &lt;/ul&gt;

  &lt;h3&gt;Fitness function: fitness2.m&lt;/h3&gt;

  &lt;pre&gt;&lt;code&gt;function y = fitness2(x)
    y = 20*x(1) + 40*x(2);
end&lt;/code&gt;&lt;/pre&gt;

  &lt;h3&gt;MATLAB commands&lt;/h3&gt;

  &lt;pre&gt;&lt;code&gt;A = [-36  -6;
      -3 -12;
     -20 -12];

b = [-108;
      -36;
     -100];

lb = [0 0];

[x, fval, exitflag] = ga( ...
    @fitness2, 2, A, b, [], [], lb, []);&lt;/code&gt;&lt;/pre&gt;

  &lt;p&gt;The solution should be approximately:&lt;/p&gt;

  &lt;pre&gt;&lt;code&gt;x ≈ [3.7647  2.0588]
fval ≈ 157.6471&lt;/code&gt;&lt;/pre&gt;

  &lt;h2&gt;Important observation&lt;/h2&gt;

  &lt;p&gt;
    The original third row of matrix &lt;code&gt;A&lt;/code&gt; used
    &lt;code&gt;[-20 -10]&lt;/code&gt;, although the stated constraint contained
    &lt;code&gt;12x₂&lt;/code&gt;. It has been corrected to &lt;code&gt;[-20 -12]&lt;/code&gt;.
  &lt;/p&gt;

  &lt;p&gt;
    &lt;strong&gt;Learn With Champak:&lt;/strong&gt; Experiment with different population
    sizes, mutation settings and stopping criteria to observe how they affect
    the quality and speed of the result.
  &lt;/p&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/4289482571206094749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2011/06/basics-of-genetic-algorithm-in-matlab.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/4289482571206094749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/4289482571206094749'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2011/06/basics-of-genetic-algorithm-in-matlab.html' title='Basics of the Genetic Algorithm in Matlab'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVh6FcwsurgXfKkqNIfY8AT9vxaI75DnpbcUfTKcHLnFpkiV12uu6vxxrSFIHkGmgEXduFvooqB6qhuXc0Q7eVTBKdDSHOODDQ-yaZcijQ8g39H8pL75CRAJ-E77sNYY-qXcD-ELb9a-I/s72-c/images.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-956258681221626286</id><published>2011-06-14T21:07:00.000+05:30</published><updated>2026-09-12T09:07:48.979+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Equations"/><category scheme="http://www.blogger.com/atom/ns#" term="Expressions in Matlab"/><category scheme="http://www.blogger.com/atom/ns#" term="Matlab"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Polynomials"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>Solving Equations using Matlab</title><content type='html'>&lt;div class=&quot;lwc-matlab-post&quot;&gt;
  &lt;h1&gt;Equations and Polynomials in MATLAB&lt;/h1&gt;

  &lt;p&gt;Algebra has a long history shaped by Indian, Babylonian, Egyptian, Greek and Persian mathematicians. Brahmagupta made important contributions to arithmetic, algebra and the treatment of zero, while the word &lt;em&gt;algebra&lt;/em&gt; comes from the title of Al-Khwarizmi&amp;rsquo;s work &lt;em&gt;Al-Kitab al-Mukhtasar fi Hisab al-Jabr wal-Muqabala&lt;/em&gt;.&lt;/p&gt;

  &lt;h2&gt;Basic rule of equations&lt;/h2&gt;

  &lt;p&gt;An equation remains balanced when the same valid operation is performed on both sides. If &lt;strong&gt;LHS = RHS&lt;/strong&gt;, then:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;LHS + x = RHS + x&lt;/li&gt;
    &lt;li&gt;LHS &amp;minus; x = RHS &amp;minus; x&lt;/li&gt;
    &lt;li&gt;LHS &amp;times; x = RHS &amp;times; x&lt;/li&gt;
    &lt;li&gt;LHS &amp;divide; x = RHS &amp;divide; x, provided x &amp;ne; 0&lt;/li&gt;
  &lt;/ul&gt;

  &lt;h2&gt;Representing a polynomial in MATLAB&lt;/h2&gt;

  &lt;p&gt;MATLAB represents a polynomial using a vector of coefficients arranged in descending powers.&lt;/p&gt;

  &lt;pre&gt;&lt;code&gt;p = [1 0 6 20];&lt;/code&gt;&lt;/pre&gt;

  &lt;p&gt;This represents &lt;strong&gt;x&lt;sup&gt;3&lt;/sup&gt; + 6x + 20&lt;/strong&gt;.&lt;/p&gt;

  &lt;h2&gt;Evaluating the polynomial&lt;/h2&gt;

  &lt;p&gt;Use &lt;code&gt;polyval&lt;/code&gt; to evaluate the polynomial for a given value of &lt;code&gt;x&lt;/code&gt;.&lt;/p&gt;

  &lt;h3&gt;For x = 1&lt;/h3&gt;

  &lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt; polyval(p, 1)

ans =

    27&lt;/code&gt;&lt;/pre&gt;

  &lt;h3&gt;For x = 2.5&lt;/h3&gt;

  &lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt; polyval(p, 2.5)

ans =

    50.6250&lt;/code&gt;&lt;/pre&gt;

  &lt;h3&gt;For the complex value x = 1 + i&lt;/h3&gt;

  &lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt; polyval(p, 1 + i)

ans =

    24.0000 + 8.0000i&lt;/code&gt;&lt;/pre&gt;

  &lt;h2&gt;Finding the roots&lt;/h2&gt;

  &lt;p&gt;Use the &lt;code&gt;roots&lt;/code&gt; function to calculate the roots of the polynomial.&lt;/p&gt;

  &lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt; roots(p)

ans =

    1.0000 + 3.0000i
    1.0000 - 3.0000i
   -2.0000&lt;/code&gt;&lt;/pre&gt;

  &lt;p&gt;The roots can also be stored in a vector:&lt;/p&gt;

  &lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt; r = roots(p);&lt;/code&gt;&lt;/pre&gt;

  &lt;h2&gt;Reconstructing the polynomial&lt;/h2&gt;

  &lt;p&gt;Use &lt;code&gt;poly&lt;/code&gt; to recover the polynomial coefficients from its roots.&lt;/p&gt;

  &lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt; v = poly(r)

v =

    1.0000    0.0000    6.0000   20.0000&lt;/code&gt;&lt;/pre&gt;

  &lt;h2&gt;Plotting the polynomial&lt;/h2&gt;

  &lt;p&gt;Create a vector of x-values, evaluate the polynomial and plot the result.&lt;/p&gt;

  &lt;pre&gt;&lt;code&gt;x = 0:0.01:10;
y = polyval(p, x);
plot(x, y);
grid on;
xlabel(&#39;x&#39;);
ylabel(&#39;p(x)&#39;);
title(&#39;p(x) = x^3 + 6x + 20&#39;);&lt;/code&gt;&lt;/pre&gt;

  &lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
    &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja7yRrtG3qBhys2phtv1ozaL0nSPwMgLvRPkOGt2OSs7JJ-IwRlO-Diy_YVgFQ6nRdxP767UOXXRYWJIIxQaA9XxOU4TDlrvTup30kq5mnwXm-_Uu4MavZj-OpZDRNkf9CNViq31WwWgcd/s1600/1.png&quot;&gt;
      &lt;img alt=&quot;Graph of the polynomial in MATLAB&quot; border=&quot;0&quot; loading=&quot;lazy&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja7yRrtG3qBhys2phtv1ozaL0nSPwMgLvRPkOGt2OSs7JJ-IwRlO-Diy_YVgFQ6nRdxP767UOXXRYWJIIxQaA9XxOU4TDlrvTup30kq5mnwXm-_Uu4MavZj-OpZDRNkf9CNViq31WwWgcd/s640/1.png&quot; /&gt;
    &lt;/a&gt;
  &lt;/div&gt;

  &lt;h2&gt;Multiplying polynomials&lt;/h2&gt;

  &lt;p&gt;Use &lt;code&gt;conv&lt;/code&gt; to multiply two polynomials. To multiply the original polynomial by &lt;strong&gt;x &amp;minus; 2&lt;/strong&gt;:&lt;/p&gt;

  &lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt; product = conv(p, [1 -2])

product =

     1    -2     6     8   -40&lt;/code&gt;&lt;/pre&gt;

  &lt;p&gt;The resulting polynomial is &lt;strong&gt;x&lt;sup&gt;4&lt;/sup&gt; &amp;minus; 2x&lt;sup&gt;3&lt;/sup&gt; + 6x&lt;sup&gt;2&lt;/sup&gt; + 8x &amp;minus; 40&lt;/strong&gt;.&lt;/p&gt;

  &lt;h2&gt;Dividing polynomials&lt;/h2&gt;

  &lt;p&gt;Use &lt;code&gt;deconv&lt;/code&gt; to divide polynomials. Dividing the product by &lt;strong&gt;x &amp;minus; 2&lt;/strong&gt; returns the original polynomial:&lt;/p&gt;

  &lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt; deconv(product, [1 -2])

ans =

     1     0     6    20&lt;/code&gt;&lt;/pre&gt;

  &lt;p&gt;&lt;strong&gt;Learn With Champak:&lt;/strong&gt; Practise these commands by changing the coefficients, evaluating the polynomial at different values and comparing the resulting graphs.&lt;/p&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/956258681221626286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2011/06/solving-equations-using-matlab.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/956258681221626286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/956258681221626286'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2011/06/solving-equations-using-matlab.html' title='Solving Equations using Matlab'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja7yRrtG3qBhys2phtv1ozaL0nSPwMgLvRPkOGt2OSs7JJ-IwRlO-Diy_YVgFQ6nRdxP767UOXXRYWJIIxQaA9XxOU4TDlrvTup30kq5mnwXm-_Uu4MavZj-OpZDRNkf9CNViq31WwWgcd/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-5324200618585582054</id><published>2011-06-11T22:05:00.000+05:30</published><updated>2011-06-11T22:05:44.452+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="3D Plots in Matlab"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Matlab"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Plots in Matlab"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>3 D Plots in Matlab</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;3 D Plots in Matlab&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;To create 3D plots , first of all we need to create 3 variables. x,y and z.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Create the x and y&amp;nbsp; arrays:-&lt;/b&gt;&lt;/div&gt;&lt;i&gt;&lt;b&gt;&amp;gt;&amp;gt; x=-3:0.25:3;&lt;br /&gt;
&amp;gt;&amp;gt; y=-3:0.25:3;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Create the meshgrid:-&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;gt;&amp;gt; [X Y]=meshgrid(x,y);&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Define&lt;/b&gt;:-&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;Z=sqrt(X.^2 + Y.^2);&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;mesh(X,Y,Z);&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXI0KL0T5a_U-UN2BMkkW3XRm9nioUCYGAjHAkMIEpgPkAWFmhrTWhXvmwbTYXnP_CyNZoLmh1dNwraU2v8qMgAhrMI1_jND2Olej7GrbYL-1ecz6km0_W59hGHqnoMh9wKhFZ5RT8ulKO/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;274&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXI0KL0T5a_U-UN2BMkkW3XRm9nioUCYGAjHAkMIEpgPkAWFmhrTWhXvmwbTYXnP_CyNZoLmh1dNwraU2v8qMgAhrMI1_jND2Olej7GrbYL-1ecz6km0_W59hGHqnoMh9wKhFZ5RT8ulKO/s320/1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;gt;&amp;gt;surf(X,Y,Z);&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ8tqvkCzp3gUJcegBfOkmmgwBds-4-_3aG0NjeFsxqgZQT6E_vSUSuS5ntFJ4P6KbP80scTunHmdi30h2Qi-5b8OF64u4tjC69MDjhmNK2GDbbwIiCw8mKoj9E5AJD-_m4sIZi_LCb2q2/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;274&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJ8tqvkCzp3gUJcegBfOkmmgwBds-4-_3aG0NjeFsxqgZQT6E_vSUSuS5ntFJ4P6KbP80scTunHmdi30h2Qi-5b8OF64u4tjC69MDjhmNK2GDbbwIiCw8mKoj9E5AJD-_m4sIZi_LCb2q2/s320/1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;gt;&amp;gt;surf(X,Y,-Z);&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBGusCNzC2ZWdkhvKQ9lBnWjCKMQSWd_Pu8yKcPcNp56voCPj370pX9VkmpK5PeQydhiEKeAiDcz9CfoL5pu1QGo-D_j7hX-RH-NOjQhn1OEjsKjXF-kUFYnf1LuNXjh1kHQOQ0UyNLFKB/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgSRlLMwZIsESbhyphenhyphenI5MWZoRoJ9XpMbTQoQv_puuH_ajFoSlHpJpC96smvfDTDTc9IR-V8_JxgGhyphenhyphen7ue17qRHzhm1OEGhCNmKNwjD8mk8BrX8ho5F6uhSVfyg2Epya-r7UiOZKHVvUhMK05/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;274&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgSRlLMwZIsESbhyphenhyphenI5MWZoRoJ9XpMbTQoQv_puuH_ajFoSlHpJpC96smvfDTDTc9IR-V8_JxgGhyphenhyphen7ue17qRHzhm1OEGhCNmKNwjD8mk8BrX8ho5F6uhSVfyg2Epya-r7UiOZKHVvUhMK05/s320/1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&amp;gt;&amp;gt;waterfall(X,Y,Z):-&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZsF3Wq24yWP0zzgg3L5tQJoA4iQX9_rVXul5hutcwn7NDHTnxwqeUYKnRkv6liLf1qbzjyO1MM20gOLSBgTiDpaDjzxdhQif3XjKVDQYs6eb_MvSbeZdk79c1d7lStJFCchtG6IugfA7A/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;274&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZsF3Wq24yWP0zzgg3L5tQJoA4iQX9_rVXul5hutcwn7NDHTnxwqeUYKnRkv6liLf1qbzjyO1MM20gOLSBgTiDpaDjzxdhQif3XjKVDQYs6eb_MvSbeZdk79c1d7lStJFCchtG6IugfA7A/s320/1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;gt;&amp;gt;contour(x,y,z):&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4KUOANlU6IAToXhPPaGyQhyLOuHHUjLDEjj706xnHtPw000ImoNl1LmT6RM1klblsyJwOnNLnkgZa0Ar-QxL5q94rNTbiDiJAea8Sd894W95A0FNQZmY55Fq-8UUfelWNna1lvbvnh8gj/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;274&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4KUOANlU6IAToXhPPaGyQhyLOuHHUjLDEjj706xnHtPw000ImoNl1LmT6RM1klblsyJwOnNLnkgZa0Ar-QxL5q94rNTbiDiJAea8Sd894W95A0FNQZmY55Fq-8UUfelWNna1lvbvnh8gj/s320/1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;&amp;gt; surfc(X,Y,Z):-&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeGRBdADIYF2dGzn0e-Kagtguo4ekdidEV85PF6eexD2MU1UCgp87knGO74EM8EsjvDdZ9WCzExIC2EGIdwa6_lUtJ4_EguONiiUyb1UPKnrG4keatCMxxqiVtZ4hs5QlW38NRRknzaS42/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;274&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeGRBdADIYF2dGzn0e-Kagtguo4ekdidEV85PF6eexD2MU1UCgp87knGO74EM8EsjvDdZ9WCzExIC2EGIdwa6_lUtJ4_EguONiiUyb1UPKnrG4keatCMxxqiVtZ4hs5QlW38NRRknzaS42/s320/1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;&amp;nbsp;Now we arrive to the view part:&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;View is used to give the viewing angle of the plot. the syntax of the command is :-&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;view(azimuth,elevation);&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;where&amp;nbsp; the azimuth is an angle measured in degrees&amp;nbsp; in the x-y plane and is measured relative to the negative y axis and positive as always in the anti clockwise direction.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;The elevation is the angle measured from the x-y plane in the direction of the z - axis.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt; &lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;default values are azimuth=-37.5 and elevation =35.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;u&gt;Here are the results of applying different views to the last plot:-&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;gt;&amp;gt; view(-65,30);&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&lt;u&gt; &lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9T7xzZFDvkTmBdjwx6bhHkJwQNwbHqYyeYeawjjuFIWVsGwfJ2fRVuPOE2VJlxz07BKihRsMLMLXcqEGki0bLXR1yniwRpr6J2Ct5_Yu9rhLd6WaHgfGyryGLnQWQAxt1DKdoQpbX6kUX/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;274&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9T7xzZFDvkTmBdjwx6bhHkJwQNwbHqYyeYeawjjuFIWVsGwfJ2fRVuPOE2VJlxz07BKihRsMLMLXcqEGki0bLXR1yniwRpr6J2Ct5_Yu9rhLd6WaHgfGyryGLnQWQAxt1DKdoQpbX6kUX/s320/1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&amp;nbsp;&amp;gt;&amp;gt; view(-37.5,40);&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnoBXItnDoatpACsWIQAvTRX3c4ouOh0cuw1GIAOzPak_SC6xE8fa1hiuq3zXhyamCpdotknVeASe8BiXTrH3KOU04-Tg2l3s9xcuE5TfHoryS2ohFWnW1vyxNLwsJSQubmNwzNgGDjA1_/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;274&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnoBXItnDoatpACsWIQAvTRX3c4ouOh0cuw1GIAOzPak_SC6xE8fa1hiuq3zXhyamCpdotknVeASe8BiXTrH3KOU04-Tg2l3s9xcuE5TfHoryS2ohFWnW1vyxNLwsJSQubmNwzNgGDjA1_/s320/1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;Next we shall move to interpolation using Matlab.&lt;/b&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/5324200618585582054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2011/06/3-d-plots-in-matlab.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/5324200618585582054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/5324200618585582054'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2011/06/3-d-plots-in-matlab.html' title='3 D Plots in Matlab'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXI0KL0T5a_U-UN2BMkkW3XRm9nioUCYGAjHAkMIEpgPkAWFmhrTWhXvmwbTYXnP_CyNZoLmh1dNwraU2v8qMgAhrMI1_jND2Olej7GrbYL-1ecz6km0_W59hGHqnoMh9wKhFZ5RT8ulKO/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2827804973871198688.post-4222900046610730121</id><published>2011-06-11T09:01:00.000+05:30</published><updated>2011-06-11T09:01:18.480+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Champak"/><category scheme="http://www.blogger.com/atom/ns#" term="Champak Roy"/><category scheme="http://www.blogger.com/atom/ns#" term="Matlab"/><category scheme="http://www.blogger.com/atom/ns#" term="Matrices in Matlab"/><category scheme="http://www.blogger.com/atom/ns#" term="Matrix Multiplication"/><category scheme="http://www.blogger.com/atom/ns#" term="Nai Basti"/><category scheme="http://www.blogger.com/atom/ns#" term="Pandepur"/><category scheme="http://www.blogger.com/atom/ns#" term="Varanasi"/><title type='text'>Matrices in Matlab</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;u&gt;&lt;b&gt;Matrices in Matlab&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Matrix manipulation is probably the most important part of Matlab. It is what most people will use it for. In this post we shall learn how to create matrices, perform basic manipulations, and to solve simultaneous equations using Matlab.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;Creating a Matrix:-&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;gt;&amp;gt; a=[1,4,-1;1,1,-6;3,-1,-1];&lt;br /&gt;
a&lt;br /&gt;
&lt;br /&gt;
a =&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp; -1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; -6&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; -1&amp;nbsp;&amp;nbsp;&amp;nbsp; -1&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; &lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Transposing the matrix :-&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;gt;&amp;gt; a&#39;&lt;br /&gt;
&lt;br /&gt;
ans =&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; -1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -1&amp;nbsp;&amp;nbsp;&amp;nbsp; -6&amp;nbsp;&amp;nbsp;&amp;nbsp; -1&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; &lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Inverse of a Matrix:-&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;gt;&amp;gt; inv(a)&lt;br /&gt;
&lt;br /&gt;
ans =&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0986&amp;nbsp;&amp;nbsp; -0.0704&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.3239&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.2394&amp;nbsp;&amp;nbsp; -0.0282&amp;nbsp;&amp;nbsp; -0.0704&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0563&amp;nbsp;&amp;nbsp; -0.1831&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0423&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; &lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;&lt;i&gt;&amp;gt;&amp;gt; a*inv(a)&lt;br /&gt;
&lt;br /&gt;
ans =&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.0000&amp;nbsp;&amp;nbsp; -0.0000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;
&amp;nbsp;&amp;nbsp; -0.0000&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.0000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0000&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0000&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.0000&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; The identity matrix as you would expect.&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Now let&#39;s try and solve the given equation using Matlab:-&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;1) x + y + z =9&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;2)2x - 3y + 4z =13&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;3)3x + 4y + 5z=40&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Create two matrices a &amp;amp; b:-&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;gt;&amp;gt; a=[1,1,1;2,-3,4;3,4,5]&lt;br /&gt;
&lt;br /&gt;
a =&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp; -3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; b=[9;13;40]&lt;br /&gt;
&lt;br /&gt;
b =&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 13&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 40&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; &lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;This equation can be represented as&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;AX=B&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;=&amp;gt;inv(A) * A * X= inv(A) * B multiplying both sides by inv(A)&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;=&amp;gt; X=inv(A)* B&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;gt;&amp;gt; inv(a)*b&lt;br /&gt;
&lt;br /&gt;
ans =&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.0000&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.0000&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 5.0000&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; &lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;which means&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;x=1&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;y=3&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;z=5&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;u&gt;&lt;b&gt;Now, let&#39;s try it the other way round.&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;The same equation can be represented as X&#39;*A&#39;=B&#39; where &#39; represents the Transpose.&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;multiplying both sides by inv(A&#39;)&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;=&amp;gt;X&#39;*A&#39;*inv(A&#39;)=B&#39;*inv(A&#39;)&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;=&amp;gt;X&#39;=B&#39;*inv(A&#39;)&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;i&gt;&lt;b&gt;&amp;gt;&amp;gt; b&#39;*inv(a&#39;)&lt;br /&gt;
&lt;br /&gt;
ans =&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.0000&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.0000&amp;nbsp;&amp;nbsp;&amp;nbsp; 5.0000&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;which means&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;x=1&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;y=3&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;b&gt;z=5&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://champakonline.blogspot.com/feeds/4222900046610730121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://champakonline.blogspot.com/2011/06/matrices-in-matlab.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/4222900046610730121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2827804973871198688/posts/default/4222900046610730121'/><link rel='alternate' type='text/html' href='http://champakonline.blogspot.com/2011/06/matrices-in-matlab.html' title='Matrices in Matlab'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>