CS PRJ 2 This needs to be written in C data structures and a

CS PRJ 2:

This needs to be written in C++ data structures and algorithms. Please Wrie comments explaining methods etc and also write a short algorithm before doing it.

Thanks.

Instructions:

Build a Weather Program:

Create a simple weather app. You should be able to:

1.     Select from a list of U.S. cities

2.     Should show the current weather for selected city (use the Yahoo Weather API https://developer.yahoo.com/weather/)

3.     Should also show weather for the next 10 days

4.     For each day (current and next 10 days) display the following:

· The date (e.g. \"Monday, November 21st, 2016\")

· High temp

· Low temp

· Description (e.g. \"Partly Cloudy\")

5. Write a brief Paragraph explaining the data structures/algorithms used and description

Solution

Code for Weather Temperature Recording using C++:

#include <iostream.h>

#include <fstream.h>

#include <iomanip.h>

#include <math.h>

#include <conio.h>

#include <string.h>

fstream file;

char year[5]=\"\";

//Non-Member function to find month, to avoid user data-entrychar *returnMonth(int m){

    switch(m){

        case 1 : return(\"January\");

        case 2 : return(\"February\");

        case 3 : return(\"March\");

        case 4 : return(\"April\");

        case 5 : return(\"May\");

        case 6 : return(\"June\");

        case 7 : return(\"July\");

        case 8 : return(\"August\");

        case 9 : return(\"September\");

        case 10 : return(\"October\");

        case 11 : return(\"November\");

        case 12 : return(\"December\");

    }

    return(\"Invalid\");

}

//Non-Member functions, checks for whether file is loaded or not//it returns 1 if not loaded and 0 otherwise.int checkFile(){

    if(file==NULL){

       cout<<\"\ There is No Data to Display\ \";

       getch();

       return(1);

    }

    return(0);

}

class weather

{

     public:

     double avgtemp[12];

     char month[12][20];

     weather();

     void getdata(int m){ //simple getdata...

     strcpy(month[m],returnMonth(m)); //avoiding user to input

     cout<<\"\ Enter temperature for \"<<month[m]<<\" : ?\\b\";

     cin>>avgtemp[m];

     }

     void displaydata(int m){ //simple displaydata

     cout<<setw(20)<<setprecision(2)<<setiosflags(ios::left)

         <<setiosflags(ios::showpoint)

         <<month[m]<<setw(10)<<setiosflags(ios::right)<<avgtemp[m];

     }

     void displaytemp(int i){ //Display only Temperature data

      cout<<setw(10)<<setprecision(2)<<setiosflags(ios::right)

          <<setiosflags(ios::showpoint)<<avgtemp[i];

     }

     double returntemp(int i){

      return(avgtemp[i]);

     }

     void loadfile();

     void displaytempscale(); //for displaying temperature scalevoid updatedata(int m,double t)

     {

    strcpy(month[m],returnMonth(m));

    avgtemp[m]=t;

     }

     int validate(double t){ //Validate entered temperature (change to suit ur requirement).if(t>55 || t < (-20))

       return(1); //states that invalid entryelsereturn(0); //valid entry

     }

};

weather :: weather(){ //Constructor to intialize objectfor(int i=0;i<12;i++)

    {

        avgtemp[i]=0;

        month[i][0]=NULL;

    }

}

void weather :: loadfile(){ //for Selecting Year or creation of new year file.

    clrscr();

    file.close(); //It is required when trying to open different year files,//while there is already loaded any year file.char filename[20]=\"\";

    cout<<\"\ *****Select a Year to Work With*****\ \ \";

    cout<<\"Enter Year (eg: 2001) : ?\\b\";

    cin>>year;

    strcat(filename,\"c:\\\\\"); //Here i am assuming that path must be c:\\

    strcat(filename,\"data\"); //if u wan\'t to skip that criteria just remove this lines.

    strcat(filename,year);

    strcat(filename,\".dat\");

    file.open(filename,ios::ate|ios::nocreate|ios::in|ios::out|ios::binary);

    if(file==NULL){

        char ans;

        cout<<\"\ File Dose Not Exist\ \"

            <<\"Do you wan\'t to create it! (y or n) N : ?\\b\"; //By default No

        ans=getche();

        if(ans==\'y\'|| ans==\'Y\'){

           file.open(filename,ios::ate|ios::in|ios::out|ios::binary);

           cout<<\"\ \ File Created Successfully\";

        }

        else{

           file;

           cout<<\"\ \ Fail to load data file\";

        }

    }

       else if(file!=NULL){

        cout<<\"\ Data File is successfully loaded\";

       }

       getch();

}

void weather :: displaytempscale(){

    int i,c=0;

    cout<<\"\ \ \";

    for(i=1;i<=70;i++)

    {

       if(i<=10)

          cout<<\"0\";

       else if(i<=20)

          cout<<\"1\";

       else if(i<=30)

          cout<<\"2\";

       else if(i<=40)

          cout<<\"3\";

       else if(i<=50)

          cout<<\"4\";

       else if(i<=60)

          cout<<\"5\";

       else if(i<=70)

          cout<<\"7\";

    }

    cout<<\"\ \";

    for(i=1;i<=7;i++)

    {

      for(c=0;c<10;c++)

        cout<<c;

    }

    cout<<\"\ \";

}

void intro()

{

    clrscr();

    cout<<\"\ \ \ \ \ \ \ \ \\t\\t\\t\";

    cout<<\"\\t\\t\\tEmail : admin@syntax-example.com\ \"

        <<\"\\t\\t\\tWebsite : http://www.syntax-example.com\";

    cout<<\"\ \ \\t\\t\\t\";

    cout<<\"Thanks for using this software.\";

    getch();

}

void main(){

    char choice=\'1\';

    int cnt,i,j,iNum,totstars=0,location,m;

    double decNum,dNum,high=0,low=99999,avg=0,t;

    char c;

    weather obj;

    file.close();

    do{

        clrscr();

        cout<<\"\ *****Main Menu*****\ \";

        cout<<\"1> Select a year to work with\ \"

            <<\"2> Display data as Table\ \"

            <<\"3> Display data as horizontal histogram\ \"

            <<\"4> Display Yearly Statistics to date\ \"

            <<\"5> Record Data\ \"

            <<\"6> Change Data\ \"

            <<\"7> Save Data\ \"

            <<\"0> Exit\ \"

            <<\"Please enter a number (0...7) => \";

        choice=getche();

        //again for sake of simplicity i have directly return code

        //in case brace rather than going for member-function.

        switch(choice){

            case \'0\' : intro();

                    goto out;

            case \'1\' : obj.loadfile();

                    break;

            case \'2\' : clrscr();

                    cout<<\"\ *****Display Data as a Table*****\ \ \";

                    if(checkFile()){

                       goto endtable;

                     }

                    cout<<\"\ Table of Temperature data for \"<<year;

                    cout<<\"\ \ \";

                    file.seekg(0,ios::end);

                    cnt=file.tellg();

                    cnt=cnt/sizeof(obj); //cnt contains how many records previously recorded

                    file.seekg(0,ios::beg);

                    for(i=1;i<=cnt;i++)

                    {

                       if(i==1)

                        cout<<\"\ Quater 1 : \";

                       else if(i==4)

                        cout<<\"\ Quater 2 : \";

                       else if(i==7)

                        cout<<\"\ Quater 3 : \";

                       else if(i==10)

                        cout<<\"\ Quater 4 : \";

                       file.read((char *)&obj, sizeof(obj));

                       if(!file.eof()){

                           obj.displaytemp(i);

                    }

                    file.clear();

                    }

                    getch();

                   endtable:

                    break;

            case \'3\' : clrscr();

                    cout<<\"\ *****Display Data as a Horizontal Histogram*****\ \ \";

                    if(checkFile()){

                       goto endhistogram;

                    }

                    cout<<\"Histogram of Temperature data for \"<<year;

                    obj.displaytempscale();

                    file.seekg(0,ios::end);

                    cnt=file.tellg();

                    cnt=cnt/sizeof(obj); //cnt contains how many records previously recorded

                    file.seekg(0,ios::beg);

                    for(i=1;i<=cnt;i++)

                    {

                       cout<<\"\ \"<<setw(15)<<setiosflags(ios::left)<<returnMonth(i);

                       file.read((char *)&obj, sizeof(obj));

                       if(!file.eof()){

                         decNum=obj.returntemp(i);

                         iNum=floor(decNum);

                         dNum=decNum-iNum; //for finding decimal part.

                         totstars=iNum;

                         if(dNum >= 0.5)

                        totstars++;

                         for(j=1;j<=totstars;j++)

                        cout<<\"*\";

                         cout<<\" \"<<totstars;

                    }

                    file.clear();

                    }

                    obj.displaytempscale();

                    getch();

                    endhistogram:

                    break;

            case \'4\' : clrscr();

                    cout<<\"\ *****Display Yearly Statistics to Date*****\ \ \";

                    if(checkFile()){

                       goto endstatus;

                    }

                    cout<<\"Temperature Statistics data for \"<<year;

                    cnt=file.tellg();

                    cnt=cnt/sizeof(obj); //cnt contains how many records previously recorded

                    file.seekg(0,ios::beg);

                    high=avg=0;

                    low=99999;

                   for(i=1;i<=cnt;i++)

                    {

                       file.read((char *)&obj, sizeof(obj));

                       double tmp=obj.returntemp(i);

                       if(!file.eof()){

                         if(high < tmp)

                        high=tmp;

                         if(low > tmp)

                        low=tmp;

                         avg=avg+tmp;

                    }

                    file.clear();

                    }

                    avg=avg/double(cnt);

                    cout<<\"\ \ Highest Monthly Average : \"<<high;

                    cout<<\"\ Lowest Monthly Average : \"<<low;

                    cout<<\"\ Average Yearly Temperature : \"<<avg;

                    getch();

                    endstatus:

                    break;

            case \'5\' :      clrscr();

                    cout<<\"\ *****Record Data*****\ \ \";

                    if(checkFile()){

                        goto endRecord;

                        }

                    else{

                   cnt=file.tellg();

                    cnt=cnt/sizeof(obj); //cnt contains how many records previously recorded

                    if(cnt==12)

                        cout<<\"\ \ Data-Entry of \"<<year<<\" is already been done\ \";

                    for(i=cnt+1;i<=12;i++)

                    {

                        enteragain:

                        cout<<\"\ Do u wan\'t to enter data for\"<<returnMonth(i)<<\" (Y or N) Y : ?\\b\";

                        c=getche();

                        if(c==\'n\' || c==\'N\')

                           goto endRecord;

                        obj.getdata(i);

                        if(obj.validate(obj.returntemp(i)))

                        {

                            cout<<\"\ Invalid Data Entry\ \";

                           goto enteragain;

                        }

                        cin.get(c);

                        file.write((char *) &obj, sizeof(obj));

                    }

                     }

                     getch();

                     endRecord:

                      break;

            case \'6\' : clrscr();

                    cout<<\"\ *****Change Data*****\ \ \";

                    if(checkFile()){

                       goto endchange;

                    }

                    else{

                    cnt=file.tellg();

                    cnt=cnt/sizeof(obj); //cnt contains how many records previously recorded

                    tryagain:

                    cout<<\"\ Enter Month (in digit) whose temperature is to be changed : ?\\b\";

                    cin>>m;

                    if(m <= 0 || m > cnt){

                        cout<<\"\ \ Invalid Month\ \";

                        getch();

                        goto tryagain;

                    }

                    tempagain:

                    cout<<\"\ Enter Temperature : ?\\b\";

                    cin>>t;

                    if(obj.validate(t))

                     {

                         cout<<\"\ Invalid Data Entry\ \";

                         goto tempagain;

                     }

                    file.seekg(0,ios::beg);

                    location= (m-1) * sizeof(obj);

                    file.seekp(location);

                    obj.updatedata(m,t);

                     cin.get(c);

                    file.write((char *) &obj, sizeof(obj))<<flush;

                     }

                     endchange:

                     break;

            case \'7\' : clrscr();

                   cout<<\"\ *****Store the Current Data*****\ \ \";

                   if(checkFile()){

                    goto endsave;

                    }

                   flush(file);

                   cout<<\"\ Data in Memory is Saved successfully\ \";

                   getch();

                   endsave:

                   break;

            default : cout<<\"\ \ Invalid Input\ \";

                   getch();

        }

    }while(choice!=\'0\');

flush(file);

file.close();

clrscr();

out:

}

CS PRJ 2: This needs to be written in C++ data structures and algorithms. Please Wrie comments explaining methods etc and also write a short algorithm before do
CS PRJ 2: This needs to be written in C++ data structures and algorithms. Please Wrie comments explaining methods etc and also write a short algorithm before do
CS PRJ 2: This needs to be written in C++ data structures and algorithms. Please Wrie comments explaining methods etc and also write a short algorithm before do
CS PRJ 2: This needs to be written in C++ data structures and algorithms. Please Wrie comments explaining methods etc and also write a short algorithm before do
CS PRJ 2: This needs to be written in C++ data structures and algorithms. Please Wrie comments explaining methods etc and also write a short algorithm before do
CS PRJ 2: This needs to be written in C++ data structures and algorithms. Please Wrie comments explaining methods etc and also write a short algorithm before do
CS PRJ 2: This needs to be written in C++ data structures and algorithms. Please Wrie comments explaining methods etc and also write a short algorithm before do
CS PRJ 2: This needs to be written in C++ data structures and algorithms. Please Wrie comments explaining methods etc and also write a short algorithm before do
CS PRJ 2: This needs to be written in C++ data structures and algorithms. Please Wrie comments explaining methods etc and also write a short algorithm before do
CS PRJ 2: This needs to be written in C++ data structures and algorithms. Please Wrie comments explaining methods etc and also write a short algorithm before do
CS PRJ 2: This needs to be written in C++ data structures and algorithms. Please Wrie comments explaining methods etc and also write a short algorithm before do

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site