After a few minutes of doing them, I got kind of bored
and made a quick program to make punnett squares for me, as well as analyze the punnet square. Later I added more functions to make things easier for me.I just wanted to post it here to get a critique of my code, I'm kind of just starting out so I wanted to know how I'm doing. Don't take it easy on me though.

Here's the code:
Code:
#include <iostream>
using namespace std;
void boxes(char a, char b, char c, char d);
void analyze(char a2, char b2, char c2, char d2);
int main()
{
char a1,a2,a3,a4,resp;
resp = 'y';
cout<<"Punnet Squarer\n V1.0"<<endl;
while(resp == 'y'){
cout<<"enter first letter for top row A/a"<<endl;
cin>>a1;
cout<<"enter second letter for top row A/a"<<endl;
cin>>a2;
cout<<"enter first letter for side column A/a"<<endl;
cin>>a3;
cout<<"enter second letter for side comumn A/a"<<endl;
cin>>a4;
boxes(a1,a2,a3,a4);
analyze(a1,a2,a3,a4);
cout<<"\n\n";
cout<<"do another punnett square? y/n"<<endl;
cin>>resp;
}
return 0;
}
void boxes(char a, char b, char c, char d) {
if(a=='a' && c=='A'){
a='A';
c='a';
}
if(b=='a' && c=='A'){
b='A';
c='a';
}
if(a=='a' && d=='A'){
a='A';
d='a';
}
if(b=='a' && d=='A'){
b='A';
d='a';
}
cout<<"\n\n";
cout<<" ";
cout<<a<<c;
cout<<" ";
cout<<"|";
cout<<" ";
cout<<b<<c;
cout<<endl;
cout<<" ";
cout<<"--------"<<endl;
cout<<" ";
cout<<a<<d;
cout<<" ";
cout<<"|";
cout<<" ";
cout<<b<<d;
cout<<endl;
}
void analyze(char a2, char b2, char c2, char d2){
int count, homdcount, homrcount, hetrocount,homd,homr,hetro;
count=0;
homdcount=0;
homrcount=0;
hetrocount=0;
homd=0;
homr=0;
hetro=0;
/*Analysis section START*/
/* Analyze top left corner */
if(a2=='A' && c2=='A' || a2=='A' && c2=='a' || a2=='a' && c2=='A' ){
++count;
}
/* Analyze top right corner */
if(b2=='A' && c2=='A' || b2=='A' && c2=='a' || b2=='a' && c2=='A' ){
++count;
}
/* Analyze bottom left corner */
if(a2=='A' && d2=='A' || a2=='A' && d2=='a' || a2=='a' && d2=='A' ){
++count;
}
/* Analyze bottom right corner */
if(b2=='A' && d2=='A' || b2=='A' && d2=='a' || b2=='a' && d2=='A' ){
++count;
}
/*Analyze top left square*/
if(a2=='A' && c2=='A'){
++homdcount;
}
else if(a2=='a' && c2=='a'){
++homrcount;
}
else{
++hetrocount;
}
/*Analyze top right square*/
if(b2=='A' && c2=='A'){
++homdcount;
}
else if(b2=='a' && c2=='a'){
++homrcount;
}
else{
++hetrocount;
}
/*Analyze bottom left square*/
if(a2=='A' && d2=='A'){
++homdcount;
}
else if(a2=='a' && d2=='a'){
++homrcount;
}
else{
++hetrocount;
}
/*Analyze bottom right square*/
if(b2=='A' && d2=='A'){
++homdcount;
}
else if(b2=='a' && d2=='a'){
++homrcount;
}
else{
++hetrocount;
}
switch(hetrocount){
case 1:
hetro=25;
break;
case 2:
hetro=50;
break;
case 3:
hetro=75;
break;
case 4:
hetro=100;
break;
}
switch(homrcount){
case 1:
homr=25;
break;
case 2:
homr=50;
break;
case 3:
homr=75;
break;
case 4:
homr=100;
break;
}
switch(homdcount){
case 1:
homd=25;
break;
case 2:
homd=50;
break;
case 3:
homd=75;
break;
case 4:
homd=100;
break;
}
/*Analysis section END*/
/*Show results of Analysis*/
switch(count){
case 1:
cout<<"25% Dominant"<<endl;
break;
case 2:
cout<<"50% Dominant"<<endl;
break;
case 3:
cout<<"75% Dominant"<<endl;
break;
case 4:
cout<<"100% Dominant"<<endl;
break;
}
cout<<"analysis:"<<endl;
cout<<"This Generation is "<<homd<<"% Homozygous Dominant"<<endl;
cout<<"This Generation is "<<homr<<"% Homozygous recessive"<<endl;
cout<<"This Generation is "<<hetro<<"% Heterozygous"<<endl;
}

