#include <stdio.h>
#include <stdlib.h>

#include "house.h"

char * copy_string(char * input)
{
  int length = string_length(input);
  char * result = (char *) malloc(sizeof(char) * (length + 1));

  int i;
  for (i = 0; i <= length; i++)
  {
    result[i] = input[i];
  }

  return result;
}


int string_length(char * my_string)
{
  int counter = 0;
  while(1)
  {
    if (my_string[counter] != 0)
    {
      counter++;
    }
    else
    {
      break;
    }
  }

  return counter;
}


struct house input_house()
{
  struct house result;

  printf("enter street number:\n");
  scanf("%d", &(result.street_number));

  char * buffer = (char *) malloc(sizeof(char) * 1000);
  printf("enter street name (use underscore instead of space):\n");
  scanf("%s", buffer);
  result.street_name = copy_string(buffer);
  free(buffer);

  printf("enter price:\n");
  scanf("%d", &(result.price));

  return result;
}


void print_house(char * info, struct house p1)
{
  printf("%s\n", info);
  printf("address: %d, %s\n", p1.street_number, p1.street_name);
  printf("price: $%d\n", p1.price);
}


int compare_prices(struct house p1, struct house p2)
{
  if (p1.price < p2.price)
  {
    return -1;
  }
  else if (p1.price == p2.price)
  {
    return 0;
  }
  else
  {
    return 1;
  }
}


int main()
{
  struct house first_house = input_house();
  struct house second_house = input_house();

  print_house("first house:", first_house);  
  printf("\n\n");
  print_house("second house", second_house);

  int comparison = compare_prices(first_house, second_house);
  switch(comparison)
  {
  case -1:
    printf("the first house is cheaper\n");
    break;

  case 0:
    printf("the two houses are equally expensive\n");
    break;

  case 1:
    printf("the second house is cheaper\n");
    break;

  default:
    printf("invalid comparison value %d, there must be a bug\n", comparison);
    break;
  }

  free(first_house.street_name);
  free(second_house.street_name);
}


