hi, i am new to C/C++ and have just finished a program based on the UK
national lottery, where you enter 6 numbers, six are generated by the
computer and there are appropriate messages and a compare function to decide
your winnings. I am using Microsoft's C++ version 6 standard, the program
is as follows:
/* * * * * * * * * * * * * * * * * * * *
* *
* Lottery Simulation By Sam Halston *
* *
* * * * * * * * * * * * * * * * * * * * */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NMAX 6
int a[NMAX];
int b[NMAX];
void getIntArray(int x[]);
void bubbleSort(int x[]);
void printArrays(int x[], int y[]);
void getrandomarray( int x[]);
void winnings();
int wins = 0;
int main(void) {
//welcome
printf("\t Welcome To The National Lottery!\n");
printf("\tPleas e Enter Six Whole Numbers Between 1 And 49\n\n");
getIntArray(a);
getrandomarray( b);
bubbleSort(a);
bubbleSort(b);
printf("Your Numbers In Numerical Order Are: \n");
printArrays(a, b);
winnings();
return 0;
}
void getIntArray(int x[])
{
int n = 0;
int temp;
here://I know goto loops are not liked in C, but this is the best way to
achieve this feature in my opinion!
;
do {
printf("Choose A Number\n");
scanf("%d", &temp);
if (temp==0) break;
if (n==5)
{
printf("All Six Numbers Have Been Entered, Press Zero To Confirm\n");
}
if ((temp<01) || (temp>49))
{
printf("%s\n", "Sorry, That Is An Unacceptable Number. Please Re Enter");
goto here;
}
if (temp==a[0])
{
printf("%s\n", "Sorry, You Have Already Selected That Number. Please Make
Another Choice");
goto here;
}
if (temp==a[1])
{
printf("%s\n", "Sorry, You Have Already Selected That Number. Please Make
Another Choice");
goto here;
}
if (temp==a[2])
{
printf("%s\n", "Sorry, You Have Already Selected That Number. Please Make
Another Choice");
goto here;
}
if (temp==a[3])
{
printf("%s\n", "Sorry, You Have Already Selected That Number. Please Make
Another Choice");
goto here;
}
if (temp==a[4])
{
printf("%s\n", "Sorry, You Have Already Selected That Number. Please Make
Another Choice");
goto here;
}
if (temp==a[5])
{
printf("%s\n", "Sorry, You Have Already Selected That Number. Please Make
Another Choice");
goto here;
}
else
a[n++] = temp;
}while (1);
}
void bubbleSort(int x[])
/* It sorts in non-decreasing order the six positions of a. It uses
* a technique called the bubble sort method.
*/
{
int lcv;
int limit = NMAX-1;
int temp;
int lastChange;
while (limit) {
lastChange = 0;
for (lcv=0;lcv<limi t;lcv++)
if (x[lcv]>x[lcv+1]) {
temp = x[lcv];
x[lcv] = x[lcv+1];
x[lcv+1] = temp;
lastChange = lcv;
}
limit = lastChange;
}
}
void printArrays(int x[], int y[])
/* These values are printed out, six per line. */
{
//print user array
for (int i=0; i<NMAX;)
{
printf("\t%d ", x[i++]);
if (i%6==0)
printf("\n");
}
printf("\n");
printf("The Drawn Numbers In Numerical Order Are: \n");
//print random array
for (i=0; i<NMAX;){
printf("\t%d ", y[i++]);
if (i%6==0)
printf("\n");
}
printf("\n");
}
void getrandomarray( int x[])
{
//make random numbers
srand((unsigned int)time((time_ t *)NULL));
for (int i=0; i<NMAX; i++)
{
x[i] = (rand()%49)+1; //This safety feature makes the
generator regenerate should any
for(int j=0; j<i; j++) //of its numbers be the same as previous
numbers.
{
if(x[i] == x[j])
i--;
}
}
}
void bubblesort(int x[])
/* It sorts in non-decreasing order the first 6 positions of b. It uses
* the bubble sort method.
*/
{
int lcv;
int limit = NMAX-1;
int temp;
int lastChange;
while (limit)
{
lastChange = 0;
for (lcv=0;lcv<limi t;lcv++)
{
/* Notice that the values in positions LIMIT+1 .. in
* their final position, i.e. they are sorted right */
if (a[lcv]>a[lcv+1])
{
temp = x[lcv];
x[lcv] = x[lcv+1];
x[lcv+1] = temp;
lastChange = lcv;
}
limit = lastChange;
}
}
}
void winnings()
{
for(int i=0; i<6; i++)
{
for(int j=0; j<6; j++)
{
if(a[i]==b[j])
{
wins++;
}
}
if(wins==0)
{
printf("You Haven't Matched Any Numbers, Sorry\n");
return;
}
if(wins==1)
{
printf("You Have Matched One Number, Sorry\n");
return;
}
}
if(wins==2)
{
printf("You Have Matched Two Numbers, Sorry\n");
return;
}
if(wins==3)
{
printf("You Have Matched 3 Numbers. Well Done, You Have Won £10\n");
return;
}
if(wins==4)
{
printf("You Have Matched 4 Numbers. Well Done, You Have Won £500\n");
return;
}
if(wins==5)
{
printf("You Have Matched 5 Numbers. Well Done, You Have Won £300,000!\n");
return;
}
if(wins==6)
{
printf("You Have Matched 3 Numbers. Congratulations , You Have Won
£5,000,000!!\n" );
return;
}
}
ok-so i guess its a mess to most of you, it compiles and runs no bother,
just doesnt give a correct readout at the end of how many numbers have
matched! iv looed at this for 4 days now, seems to me that only one or no
numbers are being matched almost as if its doing a true and false as to
whether any numbers match. trouble is, the lottery rules are 0, 1 or 2
numbers matched = £0, 3 =£10, 4=£500, 5=£300,000, 6= £5,000,000. any quick
fixes or suggestions as to an alternative end will be greatly appreciated,
but if i could stick to this structure it would be good as i am trying hard
to understand even what i've written! did anyone find this or am i just
doomed to not be a programmer!?
thanks in advance
sam
Jul 22 '05
10 1415
"Karl Heinz Buchegger" <kb******@gasca d.at> wrote in message
news:40******** *******@gascad. at... sam wrote: thanks for the help, it's looking a lot tidier now! i still cant get the numbers to compare properly at the end though, only 0 and 1 numbers
works, as if im still doing a true or false comparison, why is it so hard to compare numbers!? It isn't. Let me show you something. The beauty of consistent code indentation and
how it helps to identify some type of bugs.
Lets look at your winnings function(), but this time reformatted such that the indentation is consistent, correct and stands out a little bit
more by using 2 spaces instead of just 1
void winnings() {
for(int i=0; i<6; i++) { for(int j=0; j<6; j++) { if(a[i]==b[j]) { wins++; } }
if(wins==0) { printf("You Haven't Matched Any Numbers, Sorry\n"); return; } if(wins==1) { printf("You Have Matched One Number, Sorry\n"); return; } }
if(wins==2) { printf("You Have Matched Two Numbers, Sorry\n"); return; } if(wins==3) { printf("You Have Matched 3 Numbers. Well Done, You Have Won £10\n"); return; } if(wins==4) { printf("You Have Matched 4 Numbers. Well Done, You Have Won £500\n"); return; } if(wins==5) { printf("You Have Matched 5 Numbers. Well Done, You Have Won
£300,000!\n"); return; } if(wins==6) { printf("You Have Matched 3 Numbers. Congratulations , You Have Won
£5,000,000!!\n" ); return; } }
Do you notice something? The if-s handling the case for 0 and 1 are not at the same indentation
level then the other cases! Also the if-s for cases 0 and 1 are at the complete wrong indentation level. You need to compare *all* numbers, not just a[0]
with all b[j] to decide if there are 0 or 1 matches.
<Uncle voice>"And one more thing..."
Am I the only one who notices case 6: "You Have Matched 3 Numbers"?
--
Mabden This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: cody |
last post by:
I have to write an algorithm with must ensure that objects are put in
buckets (which are always 4 in size).
The objects have two properties: A and B. It is not allowed that in a bucket
are objects with the same A or B value. But there can be more than one
object with A = null or B = null in the bucket.
Sometimes there is only one valid solution, sometimes there are more valid
solutions, and sometimes there isn't a complete solution at...
|
by: cleveralex1212 |
last post by:
Sorry to disturb. I'm truly a beginner in C++ and my knowledge of it is
really not much. I've been facing a serious problem during these few
days. Let me describe my situation as clearly as I can and I do hope
you guys can give me a helping hand.
Suppose I have a number of people's personal information such as name,
age, hobbies, etc. How can I store them in a way that can be easily
amended by each person? How can I group the people with...
|
by: Abhishek |
last post by:
I have a problem transfering files using sockets from pocket pc(.net compact
c#) to desktop(not using .net just mfc and sockets 2 API). The socket
communication is not a issue and I am able to transfer data across.On the
serve I am using Socket 2 API (recv function to read bytes)and not using
..NET. I use FileStream to open the file on the pocket pc, then associate a
BinaryReader object with the stream and call ReadBytes to read all the...
|
by: Sarah |
last post by:
I need to access some data on a server. I can access it directly using UNC
(i.e. \\ComputerName\ShareName\Path\FileName) or using a mapped network
drive resource (S:\Path\FileName).
Here is my problem: my vb.net program has problems with UNC. If the UNC
server is restarted or goes off-line, my VB.net program crashes. The code
for UNC access to the file is included below and is put in the tick event of
a form timer control running every...
|
by: Juan Antonio Villa |
last post by:
Hello, I'm having a problem replicating a simple database using the binary
log replication, here is the problem:
When the master sends an update to the slave, an example update reads as
follows:
UPDATE MainInfo SET dAddress='38 Holland Blvd', dCity='miami',
dState='FL', dZip='33000', dCountry='USA', dPhone='999987565',
dNum='AC15857', dName='Michael A Scott' WHERE did=22'
| |
by: Harold Howe |
last post by:
I am having a problem deserializing objects from a library when the
following conditions exist:
1- The library is strongly named
2- The serialized file was created with version 1.0 of the assembly
3- I am trying to deserialize from an EXE that references version 2.0 of
the assembly
4- Both version 1.0 and 2.0 of the assembly reside in the GAC (no policy
redirects exist).
|
by: HC |
last post by:
Hello, all, I started out thinking my problems were elsewhere but as I
have worked through this I have isolated my problem, currently, as a
difference between MSDE and SQL Express 2005 (I'll just call it
Express for simplicity).
I have, to try to simplify things, put the exact same DB on two
systems, one running MSDE and one running Express. Both have 2 Ghz
processors (one Intel, one AMD), both have a decent amount of RAM
(Intel system...
|
by: EM.Bateman |
last post by:
Working on Visual Studio .Net I've implemented a class:
#ifndef CONTRIBUTOR_H
#define CONTRIBUTOR_H
enum Gender {male=1, female, unk};
#include <iostream>
#include <iomanip>
#include <string>
|
by: Wilson |
last post by:
i am learning to program using c++ and was set a task of making a
simple encryption algorithim. I choose to start with one where simply
each letter is replaced with its equivilent in the alphabet when
written backmards, i am hoping to make this more complex soon. Below
is the program i wrote but it does not work, it simply returns the
exact same text you enter. Could you please advise on how to sort
this, and also suggest any ways of...
|
by: Dave Burns |
last post by:
I am self hosting a Web Service in a Windows service. I am trying to start
the service using the NT AUTHORITY\NetworkService account.
I get a NullReferenceException on ServiceHost.Open() in the
ServiceBase.OnStart() method. SCM throws a 1067 error as well.
I get the same problem with NT AUTHORITY\LocalService.
When I use the LocalSystem account, my domain account, or another regular
user account, the windows service starts just fine.
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it.
Here is my compilation command:
g++-12 -std=c++20 -Wnarrowing bit_field.cpp
Here is the code in...
| |
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth.
The Art of Business Website Design
Your website is...
|
by: Hystou |
last post by:
Overview:
Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own....
Now, this would greatly impact the work of software developers. The idea...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules.
He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms.
Adolph will...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one.
At the time of converting from word file to html my equations which are in the word document file was convert into image.
Globals.ThisAddIn.Application.ActiveDocument.Select();...
| |
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols.
I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| | |