From: "John M. Aldrich" Newsgroups: comp.os.msdos.djgpp Subject: Re: why does this not work? Date: Thu, 16 Jul 1998 22:28:28 -0400 Organization: Two pounds of chaos and a pinch of salt. Lines: 48 Message-ID: <35AEB6CC.D2F98298@cs.com> References: <6olca3$8ps$1 AT mendelevium DOT btinternet DOT com> NNTP-Posting-Host: ppp113.cs.net Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk WillB wrote: > > I can't get this program to work. It is supposed to ask for name, age, and > month of birth, then print the name and age, then if else the different > months to choose the correct description of their horoscope. DJGPP tells me > january is undeclared and febuary is undeclared. What am I doing wrong. I'm > sorry if I have done something stupid- but I am new to this. Program is > below (in C) Nowhere in your code do you tell the compiler what 'january' and 'february' are; they aren't reserved words, variables, constants, or functions. You must define something like this (there are at least four ways): #define january 1 #define february 2 #define march 3 Alternatively: const int january=1; const int february=2; const int march=3; Another way: enum {january, february, march, /* ... */}; A fourth way is to use an array: const char * month_names[] = { "january", "february", "march", /* ... */ }; And then use just the numeric values or write a lookup function. BTW, an array lookup or a switch...case block is much more efficient than nested if's for the kind of application you're writing. -- John M. Aldrich, aka Fighteer I UIN# 7406319 -----BEGIN GEEK CODE BLOCK----- Version: 3.1 GCS d- s+:- a-->? C++>$ U@>++$ p>+ L>++ E>++ W++ N++ o+>++ K? w(---) O- M-- V? PS+ PE Y+ PGP- t+(-) 5- X- R+(++) tv+() b+++ DI++ D++ G>++ e(*)>++++ h!() !r !y+() ------END GEEK CODE BLOCK------