Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   Challenge (http://www.go4expert.com/forums/challenge-t9882/)

Ken 9Apr2008 16:59

Challenge
 
The program should do the following:

1) dispaly mileage chart from text file

2) create file to put the array towns and distances in a text
file

3) Input started location and finish location i.e. Bath to london

4) Display other mileage chart from array

5) Display total cost of journey at 40 ppm up to 100 miles and
30ppm for mileas in excess of this

6) Exit prgram and display a goodbye message

Here is the program code below

Code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "node.h"


struct Chart
{
char Town[10][10];
int Distance[10][10];
};

Chart chart=
{
 { "London", "Bath", "Cardiff", "Carlisle", "Durham", "Exeter", "Leeds", "Norwich", "Truro", "York" },
  { 0, 23, 12, 89, 456, 123, 46, 732, 345, 123 },
  { 23, 0, 46, 234, 123, 46, 89, 234, 567, 90 },
  { 12, 46, 0, 767, 456, 46, 234, 123, 732, 35 },
  { 89, 234, 767, 0, 732, 32, 48, 67, 98, 100 },
  { 456, 123, 456, 732, 0, 234, 46, 89, 89, 732 },
  { 123, 46, 46, 32, 234, 0, 123, 46, 123, 234 },
  { 46, 89, 234, 48, 46, 123, 0, 46, 89, 19 },
  { 732, 234, 123, 67, 89, 46, 46, 0, 123, 732 },
  { 345, 567, 732, 98, 89, 123, 89, 123, 0, 78 },
  { 123, 90, 35, 100, 732, 234, 19, 732, 78, 0 },
};

int ReadChart(const char Towns[],const Chart* chart )
 {
  FILE *fp;

    fp = fopen("Towns.txt", "r");
    if (fp == NULL)
                                                                                                 
    return 0;
 else
  {
    size_t res = fread(chart, sizeof(Chart), 1, fp);
    fclose(fp);
   
    return res;
  }
 }

int WriteChart(const char Towns[], const Chart* chart)
 {
  FILE *fp;

  fp = fopen("Towns.txt", "w");
  if (fp == NULL)
  return 0;
 else
 {
  size_t res = fwrite(chart, sizeof(Chart), 1, fp);
  fclose(fp);
  return res;
 }
}             

int main(void)
{
 char Distance;
 int  valid_input;
 int row,col;
 char des1,des2,des3;
 int menu;            /* Holds all chices open to the user */
 double total = 0.00;          /* the result of the calculation */

 
  printf("\n\nWhat would you like to do?\n\n");    /* WRITE instructions */
  printf("\t1 = Display Mileage chart from text file\n");
  printf("\t2 = Input of a Journey between two points via up to 3 intermediate stops\n");
  printf("\t3 = Display total cost of journey at 40 ppm up to 100 miles and 30ppm for mileas in excess of this\n");
  printf("\t4 = Exit program\n");
  printf("\n\nPleas make your selection now:\n\t");
  scanf("%d",&menu);                  /* READ calculation type */
   
  valid_input = 0;
    while( valid_input == 0 )
        {
          printf("\t Please enter first destination point\n");   
          printf("%s",des1);
          printf("\t Please enter second destination point\n");   
          printtf("%s",des2);
          printf("\t Please enter thrid destination point\n");   
          printf("%s",des3);
         
                    else 
                    {
                    printf("\tError: Invalid \n");   
                    }
              }
  switch (menu != 4)
  {
    case 1: 
    FILE *infile;
    infile = fopen("Towns.dat", "r");      // using relative path name of file
              if (infile == NULL)
            {
            printf("Unable to open file.");
            }
             
              for(row=1; row<11;row++) // reads in the data into the array in 2 loops
              {                   
                      for(col=1;col<11;col++)
                      {
                        fscanf(infile,"%d", chart[row-1][col-1]);
                       
                      }
              }     
                     
              for(row=0; row<10;row++)

              {                 
                      printf("\n\n"); 
                      for(col=0;col<10;col++)
                      {
                        printf("%-2d ",chart[row][col]);
                      }
                   
              }
                      printf("\n\n continue?");
                    scanf("%d", &menu);
             
 
  break;


  case 2:
    prinf("\t Please enter first destination point\n");   
    printf("%s",des1);
    prinf("\t Please enter second destination point\n");   
    printf("%s",des2);
    prinf("\t Please enter thrid destination point\n");   
    printf("%s",des3);
 
  break;

  case 3:
      if (Distance => 100)
    {
      total= 0.40*100;
    }
   
    if (Distance < 100)
    {
      total= 0.30*100;
    }
  break;

  case 4:
    printf("Thank you for using my program");
  break;

  default:
      printf("Invalid option selected\n"); 
}
 
 int search (node *root, int key)
 {
  if ( root != NULL)
  {
    if ( key == root->data )
      return 1;
    else if ( key < root->data )
      return search ( root->left, key );
    else  if ( key > root->data )
      return search ( root->right, key );
  }

  return 0;
 } 
}

node.h header file below

Code:

/* utilize an ifndef/define mechanism, so nodes will be define exactly once */#ifndef _NODE_H#define _NODE_H /* Maximum length of names */#define strMax 90 /* Define the node structure itself */struct node{  char data [strMax];  struct node * left;  struct node * right;}; #endif/* utilize an ifndef/define mechanism, so nodes will be define exactly once */
#ifndef _NODE_H
#define _NODE_H

/* Maximum length of names */
#define strMax 90

/* Define the node structure itself */
struct node
{
  char data [strMax];
  struct node * left;
  struct node * right;
};

#endif

Here is the text file

Code:

          London  Bath  Cardiff  Carlisle  Durham  Exeter  Leeds  Norwich  Truro    York
London      0    114.66  151.22  309.14    269.11  195.90  195.33  117.87  284.74  209.43
Bath      115.16    0      55.95  288.37    293.02  86.41  219.24  235.72  175.25  233.34
Cardiff  151.61  56.17    0      303.39    308.04  109.81  234.26  272.17  198.65  248.36
Carlisle  309.35  288.23  303.39    0        73.73  348.15  117.24  280.36  436.99  116.36
Durham    269.78  293.42  308.58    73.75      0    353.34  82.10  239.13  442.17  75.13
Exeter    196.04  85.71  109.14  347.90    352.56    0    278.78  316.61    87.49  292.88
Leeds    196.11  219.75  234.91  117.17    80.32  279.67    0    171.06  368.50  24.76
Norwich  118.49  235.75  272.31  283.26    241.67  316.99  173.45    0      405.83  182.76
Truro    284.56  174.22  197.65  436.42    441.07  87.07  367.30  405.12    0    381.39
York      212.84  236.48  251.64  116.53    74.93  296.40  24.21  180.26  385.23    0


I Have got this to work in Miracle C but it has to be able to work in unix. Why dosent my program work in unix

The problem that i have found it will not work in unix and has problems with the code but i have tried using alternavtive methord but to no success.

If anyone could a help me find a solution to this that would be super and i would be very grateful.

SpOonWiZaRd 25Apr2008 16:01

Re: Challenge
 
Go ask it in the programming section, but welcome to the site!

shabbir 25Apr2008 16:44

Re: Challenge
 
Quote:

Originally Posted by SpOonWiZaRd
Go ask it in the programming section, but welcome to the site!

Moved


All times are GMT +5.5. The time now is 12:36.