• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EST 23:04
CET 05:04
KST 13:04
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
RSL Season 3 - Playoffs Preview0RSL Season 3 - RO16 Groups C & D Preview0RSL Season 3 - RO16 Groups A & B Preview2TL.net Map Contest #21: Winners12Intel X Team Liquid Seoul event: Showmatches and Meet the Pros10
Community News
Weekly Cups (Dec 1-7): Clem doubles, Solar gets over the hump1Weekly Cups (Nov 24-30): MaxPax, Clem, herO win2BGE Stara Zagora 2026 announced15[BSL21] Ro.16 Group Stage (C->B->A->D)4Weekly Cups (Nov 17-23): Solar, MaxPax, Clem win3
StarCraft 2
General
Weekly Cups (Dec 1-7): Clem doubles, Solar gets over the hump Chinese SC2 server to reopen; live all-star event in Hangzhou Maestros of the Game: Live Finals Preview (RO4) BGE Stara Zagora 2026 announced Weekly Cups (Nov 24-30): MaxPax, Clem, herO win
Tourneys
2025 RSL Offline Finals Dates + Ticket Sales! Sparkling Tuna Cup - Weekly Open Tournament Tenacious Turtle Tussle StarCraft2.fi 15th Anniversary Cup RSL Offline Finals Info - Dec 13 and 14!
Strategy
Custom Maps
Map Editor closed ?
External Content
Mutation # 503 Fowl Play Mutation # 502 Negative Reinforcement Mutation # 501 Price of Progress Mutation # 500 Fright night
Brood War
General
[BSL21] RO8 Bracket & Prediction Contest BW General Discussion BGH Auto Balance -> http://bghmmr.eu/ Let's talk about Metropolis Foreign Brood War
Tourneys
[ASL20] Grand Finals Small VOD Thread 2.0 [Megathread] Daily Proleagues [BSL21] RO16 Group D - Sunday 21:00 CET
Strategy
Simple Questions, Simple Answers Fighting Spirit mining rates Current Meta Game Theory for Starcraft
Other Games
General Games
Stormgate/Frost Giant Megathread EVE Corporation Nintendo Switch Thread Path of Exile ZeroSpace Megathread
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
Mafia Game Mode Feedback/Ideas Survivor II: The Amazon Sengoku Mafia TL Mafia Community Thread
Community
General
US Politics Mega-thread Russo-Ukrainian War Thread YouTube Thread European Politico-economics QA Mega-thread Things Aren’t Peaceful in Palestine
Fan Clubs
White-Ra Fan Club
Media & Entertainment
Anime Discussion Thread [Manga] One Piece Movie Discussion!
Sports
Formula 1 Discussion 2024 - 2026 Football Thread
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
TL+ Announced Where to ask questions and add stream?
Blogs
Online gaming resear…
phantomlancer23
How Sleep Deprivation Affect…
TrAiDoS
I decided to write a webnov…
DjKniteX
James Bond movies ranking - pa…
Topin
Thanks for the RSL
Hildegard
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1523 users

C++ Cockblockage..

Blogs > Dave[9]
Post a Reply
1 2 Next All
Dave[9]
Profile Blog Joined October 2003
United States2365 Posts
Last Edited: 2009-12-10 05:35:10
December 10 2009 02:33 GMT
#1
Editted, I suck at sorting anyone care to help? I get an error that tells me I can't convert parameter 1 of 's_sort' from 'int' to 'int []'

If anything if you can help, point out what I'm doing wrong
+ Show Spoiler +

 
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

struct Student_Statistics
{
int student_id;
string name;
double quiz1, quiz2, quiz3, quiz4, quiz5;
double midterm1, midterm2, final;
double average;
char letter_grade;
};

void s_sort( int x[],string y[],double a[],double b[], int n);
double find_lowest(Student_Statistics student);
int main()
{
Student_Statistics Student[30];
ifstream in_file;
char grade_file[80];
int i = 0;
int j;
int k;
double all_averagesA = 0;
double all_averages;

cout << "Enter an input file: ";
cin >> grade_file;
in_file.open(grade_file);


cout << "---------------------------------------------------" << endl;
cout << " Individual Course Report" << endl;
cout << "---------------------------------------------------" << endl;

while(!in_file.eof())
{
in_file >> Student[i].student_id >> Student[i].name
>> Student[i].quiz1 >> Student[i].quiz2 >> Student[i].quiz3 >> Student[i].quiz4 >> Student[i].quiz5
>> Student[i].midterm1 >> Student[i].midterm2 >> Student[i].final;

cout.setf(ios::showpoint);
cout.setf(ios::fixed);
cout.precision(2);
if(find_lowest(Student[i]) >= 90)
{
Student[i].letter_grade = 'A';
}
if((find_lowest(Student[i]) < 90) && (find_lowest(Student[i]) >= 80))
{
Student[i].letter_grade = 'B';
}
if((find_lowest(Student[i]) < 80) && (find_lowest(Student[i]) >= 70))
{
Student[i].letter_grade = 'C';
}
if((find_lowest(Student[i]) < 70) && (find_lowest(Student[i]) >= 60))
{
Student[i].letter_grade = 'D';
}
if(find_lowest(Student[i]) < 60)
{
Student[i].letter_grade = 'F';
}
s_sort(Student[i].student_id, Student[i].name, find_lowest(Student[i]), Student[i].letter_grade, i);
cout << Student[i].student_id << ' ' << Student[i].name << " - " << find_lowest(Student[i]) <<" (" << Student[i].letter_grade << ')' << endl;
i++;
}
cout << endl;
cout << "---------------------------------------------------" << endl;
cout << " Statistics" << endl;
cout << "---------------------------------------------------" << endl;
cout << "Number of Students: " << i << endl;

for(j=0;j<i;j++)
{
all_averagesA+=find_lowest(Student[j]);
all_averages=all_averagesA/i;

}
cout.setf(ios::showpoint);
cout.setf(ios::fixed);
cout.precision(1);
cout << "Average of all students: " << all_averages << endl;
cout << "Grade Distribution (histrogram)" << endl;

cout << " A: ";
for(k=0;k<i;k++)
{
if(Student[k].letter_grade == 'A')
{
cout << '*';
}
}
cout << endl;

cout << " B: ";
for(k=0;k<i;k++)
{
if(Student[k].letter_grade == 'B')
{
cout << '*';
}
}
cout << endl;

cout << " C: ";
for(k=0;k<i;k++)
{
if(Student[k].letter_grade == 'D')
{
cout << '*';
}
}
cout << endl;

cout << " D: ";
for(k=0;k<i;k++)
{
if(Student[k].letter_grade == 'D')
{
cout << '*';
}
}
cout << endl;

cout << " F: ";
for(k=0;k<i;k++)
{
if(Student[k].letter_grade == 'F')
{
cout << '*';
}
}
cout << endl;

return 0;
}


double find_lowest(Student_Statistics student)
{
if((student.quiz1 < student.quiz2) && (student.quiz1 < student.quiz3) && (student.quiz1 < student.quiz4) && (student.quiz1 < student.quiz5))
{
student.average = ((student.quiz2*(.2) + student.quiz3*(.2) + student.quiz4*(.2) + student.quiz5*(.2) + student.midterm1*(.4) + student.midterm2*(.4) + student.final*(.4))/128)*100;
}
else if((student.quiz2 < student.quiz1) && (student.quiz2 < student.quiz3) && (student.quiz2 < student.quiz4) && (student.quiz2 < student.quiz5))
{
student.average = ((student.quiz1*(.2) + student.quiz3*(.2) + student.quiz4*(.2) + student.quiz5*(.2) + student.midterm1*(.4) + student.midterm2*(.4) + student.final*(.4))/128)*100;
}
else if((student.quiz3 < student.quiz1) && (student.quiz3 < student.quiz2) && (student.quiz3 < student.quiz4) && (student.quiz3 < student.quiz5))
{
student.average = ((student.quiz1*(.2) + student.quiz2*(.2) + student.quiz4*(.2) + student.quiz5*(.2) + student.midterm1*(.4) + student.midterm2*(.4) + student.final*(.4))/128)*100;
}
else if((student.quiz4 < student.quiz1) && (student.quiz4 < student.quiz2) && (student.quiz4 < student.quiz3) && (student.quiz4 < student.quiz5))
{
student.average = ((student.quiz1*(.2) + student.quiz2*(.2) + student.quiz3*(.2) + student.quiz5*(.2) + student.midterm1*(.4) + student.midterm2*(.4) + student.final*(.4))/128)*100;
}
else if((student.quiz5 < student.quiz1) && (student.quiz5 < student.quiz2) && (student.quiz5 < student.quiz3) && (student.quiz5 < student.quiz4))
{
student.average = ((student.quiz1*(.2) + student.quiz2*(.2) + student.quiz3*(.2) + student.quiz4*(.2) + student.midterm1*(.4) + student.midterm2*(.4) + student.final*(.4))/128)*100;
}

return student.average;
}
void s_sort(double x[],string y[],double a[],double b[], int n)
{
int m; // keep the index of current smallest value
double hold;
string hold2;
double hold3;
double hold4;

for (int k=0; k<=n-2; k++)
{
m = k;
for (int j=k+1; j <= n-1; j++)
{
if (x[j] > x[m])
m = j;
}

hold = x[m];
hold2 = y[m];
hold3 = a[m];
hold4 = b[m];
x[m] = x[k];
y[m] = y[k];
a[m] = a[k];
b[m] = b[k];
x[k] = hold;
y[k] = hold2;
a[k] = hold3;
b[k] = hold4;

}

return;
}








http://www.teamliquid.net/forum/viewmessage.php?topic_id=104154&currentpage=316#6317
huameng
Profile Blog Joined April 2007
United States1133 Posts
December 10 2009 02:40 GMT
#2
Why is find_lowest declared as void, even though it returns something?

And why does it have a parameter, even though when you call it, you pass nothing?

skating
GogoKodo
Profile Blog Joined April 2003
Canada1785 Posts
Last Edited: 2009-12-10 02:47:08
December 10 2009 02:46 GMT
#3
In addition to what huameng said you also are using variable 'i' inside of find_lowest, but 'i' isn't in that scope.
twitter: @terrancem
ghostWriter
Profile Blog Joined January 2009
United States3302 Posts
December 10 2009 02:46 GMT
#4
Man, there's nothing more annoying than trying to find out why your code won't compile.
Sullifam
GogoKodo
Profile Blog Joined April 2003
Canada1785 Posts
December 10 2009 02:47 GMT
#5
Oh also, looks like you have some capitalized Student[i] when you probably mean lowercase student[i] near the end of find_lowest
twitter: @terrancem
Dave[9]
Profile Blog Joined October 2003
United States2365 Posts
December 10 2009 02:50 GMT
#6
omggggggggg so much to fix, lol...
http://www.teamliquid.net/forum/viewmessage.php?topic_id=104154&currentpage=316#6317
GogoKodo
Profile Blog Joined April 2003
Canada1785 Posts
Last Edited: 2009-12-10 02:53:05
December 10 2009 02:50 GMT
#7
From the code it looks like find_lowest should take in a single 'Student_Statistics' variable.
so declared as such
double find_lowest(Student_Statistics student)

so you would call it like so;
find_lowest(Student[i])

then inside of find_lowest get rid of all the references to 'student[i]' and just use 'student' instead
twitter: @terrancem
Phyre
Profile Blog Joined December 2006
United States1288 Posts
December 10 2009 02:50 GMT
#8
You seem to have all kinds of scope problems. It's like you're treating every variable like it was global or something, like "i" being accessed in find_lowest(). As has already been mentioned you designed find_lowest() to take a parameter but you give it no parameters when you use it. Lots of problems here.
"Oh no, I got you with your pants... on your face... That's not how you wear pants." - Nintu, catching 1 hatch lurks.
Dave[9]
Profile Blog Joined October 2003
United States2365 Posts
December 10 2009 02:53 GMT
#9
looks like the main thing my compiler is saying is:

'student' is an undeclared identifier -- i dont even know where to begin to fix that..
'find lowest' illegal use of the type 'void


also, updated the code.
http://www.teamliquid.net/forum/viewmessage.php?topic_id=104154&currentpage=316#6317
Kwidowmaker
Profile Blog Joined October 2007
Canada978 Posts
December 10 2009 02:54 GMT
#10
just rewrite. It takes like 1/12 the time it took to write originally and it ends up being better code
Kk.
GogoKodo
Profile Blog Joined April 2003
Canada1785 Posts
December 10 2009 02:55 GMT
#11
On December 10 2009 11:53 Dave[9] wrote:
looks like the main thing my compiler is saying is:

'student' is an undeclared identifier -- i dont even know where to begin to fix that..
'find lowest' illegal use of the type 'void


also, updated the code.

You are using something that returns void in your cout. So cout is looking for something to print and it finds a function that returns void and it's confused.

Take a look at my suggestions and see if they help.
twitter: @terrancem
Heyoka
Profile Blog Joined March 2008
Katowice25012 Posts
December 10 2009 02:56 GMT
#12
this would be the easiest thing in sas you should make that part of your program imo
@RealHeyoka | ESL / DreamHack StarCraft Lead
Phyre
Profile Blog Joined December 2006
United States1288 Posts
December 10 2009 02:57 GMT
#13
On December 10 2009 11:53 Dave[9] wrote:
looks like the main thing my compiler is saying is:

'student' is an undeclared identifier -- i dont even know where to begin to fix that..
'find lowest' illegal use of the type 'void


also, updated the code.

When you declare the function of type "void" you are saying that the function will return nothing. Your function returns Student.average which is a variable of type "double".
"Oh no, I got you with your pants... on your face... That's not how you wear pants." - Nintu, catching 1 hatch lurks.
Eti307
Profile Blog Joined March 2004
Canada3442 Posts
Last Edited: 2009-12-10 02:58:08
December 10 2009 02:57 GMT
#14
this is messy lol

try something like this, only minor changes but now it's compiling. I can't test it since I don't have your input files but you can take it form here lol:
+ Show Spoiler +

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

struct Student_Statistics
{
int student_id;
string name;
double quiz1, quiz2, quiz3, quiz4, quiz5;
double midterm1, midterm2, final;
double average;
};

double find_lowest(Student_Statistics student);

int main()
{
Student_Statistics Student[30];
ifstream in_file;
char grade_file[80];
int i = 0;

cout << "Enter an input file: ";
cin >> grade_file;
in_file.open(grade_file);


cout << "---------------------------------------------------" << endl;
cout << " Individual Course Report" << endl;
cout << "---------------------------------------------------" << endl;

while(!in_file.eof())
{
in_file >> Student[i].student_id >> Student[i].name
>> Student[i].quiz1 >> Student[i].quiz2 >> Student[i].quiz3 >> Student[i].quiz4 >> Student[i].quiz5
>> Student[i].midterm1 >> Student[i].midterm2 >> Student[i].final;


cout << Student[i].student_id << Student[i].name << find_lowest(Student[i]) << endl;
i++;
}
return 0;
}


double find_lowest(Student_Statistics student)
{
if((student.quiz1 < student.quiz2) && (student.quiz1 < student.quiz3) && (student.quiz1 < student.quiz4) && (student.quiz1 < student.quiz5))
{
student.average = (student.quiz2 + student.quiz3 + student.quiz4 + student.quiz5)/4;
}
else if((student.quiz2 < student.quiz1) && (student.quiz2 < student.quiz3) && (student.quiz2 < student.quiz4) && (student.quiz2 < student.quiz5))
{
student.average = (student.quiz1 + student.quiz3 + student.quiz4 + student.quiz5)/4;
}
else if((student.quiz3 < student.quiz1) && (student.quiz3 < student.quiz2) && (student.quiz3 < student.quiz4) && (student.quiz3 < student.quiz5))
{
student.average = (student.quiz1 + student.quiz2 + student.quiz4 + student.quiz5)/4;
}
else if((student.quiz4 < student.quiz1) && (student.quiz4 < student.quiz2) && (student.quiz4 < student.quiz3) && (student.quiz4 < student.quiz5))
{
student.average = (student.quiz1 + student.quiz2 + student.quiz3 + student.quiz5)/4;
}
else if((student.quiz5 < student.quiz1) && (student.quiz5 < student.quiz2) && (student.quiz5 < student.quiz3) && (student.quiz5 < student.quiz4))
{
student.average = (student.quiz1 + student.quiz2 + student.quiz3 + student.quiz4)/4;
}

return student.average;
}
GogoKodo
Profile Blog Joined April 2003
Canada1785 Posts
December 10 2009 03:01 GMT
#15
On December 10 2009 11:57 Eti307 wrote:
this is messy lol

try something like this, only minor changes but now it's compiling. I can't test it since I don't have your input files but you can take it form here lol:
+ Show Spoiler +

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

struct Student_Statistics
{
int student_id;
string name;
double quiz1, quiz2, quiz3, quiz4, quiz5;
double midterm1, midterm2, final;
double average;
};

double find_lowest(Student_Statistics student);

int main()
{
Student_Statistics Student[30];
ifstream in_file;
char grade_file[80];
int i = 0;

cout << "Enter an input file: ";
cin >> grade_file;
in_file.open(grade_file);


cout << "---------------------------------------------------" << endl;
cout << " Individual Course Report" << endl;
cout << "---------------------------------------------------" << endl;

while(!in_file.eof())
{
in_file >> Student[i].student_id >> Student[i].name
>> Student[i].quiz1 >> Student[i].quiz2 >> Student[i].quiz3 >> Student[i].quiz4 >> Student[i].quiz5
>> Student[i].midterm1 >> Student[i].midterm2 >> Student[i].final;


cout << Student[i].student_id << Student[i].name << find_lowest(Student[i] << endl;
i++;
}
return 0;
}


double find_lowest(Student_Statistics student)
{
if((student.quiz1 < student.quiz2) && (student.quiz1 < student.quiz3) && (student.quiz1 < student.quiz4) && (student.quiz1 < student.quiz5))
{
student.average = (student.quiz2 + student.quiz3 + student.quiz4 + student.quiz5)/4;
}
else if((student.quiz2 < student.quiz1) && (student.quiz2 < student.quiz3) && (student.quiz2 < student.quiz4) && (student.quiz2 < student.quiz5))
{
student.average = (student.quiz1 + student.quiz3 + student.quiz4 + student.quiz5)/4;
}
else if((student.quiz3 < student.quiz1) && (student.quiz3 < student.quiz2) && (student.quiz3 < student.quiz4) && (student.quiz3 < student.quiz5))
{
student.average = (student.quiz1 + student.quiz2 + student.quiz4 + student.quiz5)/4;
}
else if((student.quiz4 < student.quiz1) && (student.quiz4 < student.quiz2) && (student.quiz4 < student.quiz3) && (student.quiz4 < student.quiz5))
{
student.average = (student.quiz1 + student.quiz2 + student.quiz3 + student.quiz5)/4;
}
else if((student.quiz5 < student.quiz1) && (student.quiz5 < student.quiz2) && (student.quiz5 < student.quiz3) && (student.quiz5 < student.quiz4))
{
student.average = (student.quiz1 + student.quiz2 + student.quiz3 + student.quiz4)/4;
}

return student.average;
}


Nice. That's basically exactly what I was suggesting. I was just working on putting it into pastebin but now that you have it, I don't need to.
twitter: @terrancem
Dave[9]
Profile Blog Joined October 2003
United States2365 Posts
December 10 2009 03:02 GMT
#16
Alright, you guys gave me enough hints that I arrived at Eti's code. thank you guys sooooooo much.

http://www.teamliquid.net/forum/viewmessage.php?topic_id=104154&currentpage=316#6317
HeavOnEarth
Profile Blog Joined March 2008
United States7087 Posts
December 10 2009 03:02 GMT
#17
dodeedo
"come korea next time... FXO house... 10 korean, 10 korean"
Eti307
Profile Blog Joined March 2004
Canada3442 Posts
December 10 2009 03:03 GMT
#18
I didn't want to completely change his code so I just modified it so it would work.

Just so you know Dave, there are way better ways to do this. But you're just starting from what I see.
We've all been there
Ironson
Profile Joined February 2008
20 Posts
December 10 2009 03:51 GMT
#19
In addition to the above comments, the find_lowest is broken:
1) The algorithm for finding the average of the four highest scores is wrong. Suppose I gave it a student with scores {1., 1., 2., 3., 4.}, where index i corresponds to student.quiz$i. You're likely to get a garbage response because the "average" field isn't explicitly initialized.
2) Assigning to student.average doesn't do anything, and is rather misleading (it's not incorrect for this program, but should you extend it in the future...). Either pass in student via reference/pointer, or create a local double variable to hold the result.
Chuiu
Profile Blog Joined June 2003
3470 Posts
December 10 2009 03:56 GMT
#20
If you're going to be programming and making spelling mistakes, make sure you learn how to use find/replace or regex, it fixes little problems like that very fast.
♞
1 2 Next All
Please log in or register to reply.
Live Events Refresh
Next event in 7h 56m
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
RuFF_SC2 168
Nina 56
StarCraft: Brood War
Leta 292
Hyun 161
Noble 31
ggaemo 29
Bale 26
Hm[arnc] 13
Icarus 8
Dota 2
monkeys_forever712
LuMiX0
League of Legends
C9.Mang0266
Cuddl3bear3
Other Games
summit1g10515
JimRising 696
Liquid`Hasu142
XaKoH 140
ViBE93
Trikslyr81
Livibee37
Organizations
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 14 non-featured ]
StarCraft 2
• intothetv
• AfreecaTV YouTube
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Rush1063
• Lourlo337
Other Games
• imaqtpie1538
• Shiphtur22
Upcoming Events
WardiTV 2025
7h 56m
Big Brain Bouts
12h 56m
RSL Revival
1d
StarCraft2.fi
1d 5h
IPSL
1d 12h
Sziky vs JDConan
OSC
1d 12h
Solar vs Percival
Gerald vs Nicoract
Creator vs ByuN
RSL Revival
2 days
Classic vs TBD
herO vs Zoun
WardiTV 2025
2 days
IPSL
2 days
Tarson vs DragOn
Wardi Open
3 days
[ Show More ]
Monday Night Weeklies
3 days
Replay Cast
3 days
Sparkling Tuna Cup
4 days
The PondCast
6 days
Liquipedia Results

Completed

Acropolis #4 - TS3
RSL Revival: Season 3
Kuram Kup

Ongoing

IPSL Winter 2025-26
KCM Race Survival 2025 Season 4
YSL S2
BSL Season 21
Slon Tour Season 2
WardiTV 2025
META Madness #9
SL Budapest Major 2025
ESL Impact League Season 8
BLAST Rivals Fall 2025
IEM Chengdu 2025
PGL Masters Bucharest 2025
Thunderpick World Champ.
CS Asia Championships 2025
ESL Pro League S22

Upcoming

BSL 21 Non-Korean Championship
Acropolis #4
IPSL Spring 2026
Bellum Gens Elite Stara Zagora 2026
HSC XXVIII
Big Gabe Cup #3
RSL Offline Finals
PGL Cluj-Napoca 2026
IEM Kraków 2026
BLAST Bounty Winter 2026
BLAST Bounty Winter Qual
eXTREMESLAND 2025
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2025 TLnet. All Rights Reserved.