aboutsummaryrefslogtreecommitdiff
path: root/Project1/contacts.cpp
blob: 4c9814b05c261c59479e968a185f2fb2d567ce1c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include "Contacts.h"
#include <iostream>
#include <list>
#include <vector>

using std::cin;
using std::cout;
using std::endl;

char addNew(contact newContact[], size_t MAX, size_t& t)
{
    //using couts to prompt using for all parts of newContact struct.
    //update plans: check for newContact[i].bool value, if false, use a modified void update
    //(new function thats just void update with different couts) to be called with an if statement.
    //or another for.
    //for (size_t i = 0; i < max/length; i++)
    //if (bool == false)
    // void mod_update
    // to check for any "empty"/deleted contacts before adding one. if bool == false should include break after mod_update.
    //CURRENTLY WORKS
    for (size_t i = t ; i < MAX; i++)
    {
        newContact[i].id = i+1;
        newContact[i].count = t;
        cin.ignore(1000, '\n');
        cout << "Please enter each piece of information when you are prompted to" << endl;
        cout << "enter name: " << endl;
        cin.getline(newContact[i].Name, 25);
        cout << "enter Email: " << endl;
        cin.getline(newContact[i].Email, 100);
        cout << "enter Street Address: " << endl;
        cin.getline(newContact[i].StreetAddress, 35);
        cout << "enter city: " << endl;
        cin.getline(newContact[i].City, 30);
        cout << "enter State as two letter abbreviation: " << endl;
        cin.getline(newContact[i].State, 3);
        cout << "Please enter the next value as a series of numbers" << endl;
        cout << "enter Zip: " << endl;
        cin >> newContact[i].Zip;
        t++;
        break;
    }
    
    //cout << newContact[i]->Name << "\n" << newContact[i]->Email << "\n" << newContact[i]->StreetAddress << "\n" << newContact[i]->City << "\n" << newContact[i]->State << "\n" << newContact[i]->Zip << endl;
    return 0;
}
// print contact i
// name:
// email
// address
// city
// state
// zip

void update(contact newContact[], size_t MAX)
{
    //uses input based on list number from print (though when delete is made will be using that id/name print) to update the values of.
    //CURRENTLY WORKING
    cout << "select a contact to update based on their position in the list (check print all contacts for list position)" << endl;
    int c = 0;
    cin >> c;
    int t = c - 1;
    for (size_t i = t; i < MAX;)
    {
        cin.ignore(1000, '\n');
        cout << "Please enter each piece of information when you are prompted to" << endl;
        newContact[i].id = c;
        cout << "enter name: " << endl;
        cin.getline(newContact[i].Name, 25);
        cout << "enter Email: " << endl;
        cin.getline(newContact[i].Email, 100);
        cout << "enter Street Address: " << endl;
        cin.getline(newContact[i].StreetAddress, 35);
        cout << "enter city: " << endl;
        cin.getline(newContact[i].City, 30);
        cout << "enter State as two letter abbreviation: " << endl;
        cin.getline(newContact[i].State, 3);
        cout << "Please enter the next value as a series of numbers" << endl;
        cout << "enter Zip: " << endl;
        cin >> newContact[i].Zip;
        break;
    }
}

void printAll(contact newContact[], size_t& MAX)
{
    //prints all info but count and bool for every existing (non trash value filled) contact struct
    //CURRENTLY WORKING
    for (size_t i = 0; i <= MAX; ++i)
    {
        /*for (int t = -1; t < newContact[i].id;) {
            break;
        }*/
        if (newContact[i].id == 0) {
            break;
        }
        if (newContact[i].id < 0) {
            break;
        }
        if (newContact[i].id > MAX) {
            break;
        }

        cout << "List number: " << newContact[i].id << endl;
        cout << "name: " << newContact[i].Name << endl;
        cout << "Email: " << newContact[i].Email << endl;
        cout << "Address: " << newContact[i].StreetAddress << endl;
        cout << "city: " << newContact[i].City << endl;
        cout << "state: " << newContact[i].State << endl;
        cout << "Zip: " << newContact[i].Zip << endl;
    }
}

contact contact_double(contact*& newContact, size_t& MAX, size_t t)
{
    //supposedly doubles length. doesn't work.
    //current ideas: add if loop to whole main with the id counter t and if length of newContact = max double the length.
    //current problems: using const size_t max prevents editing size for the whole function, and it resets as soon as the while loop loops or leaves the scope of the if statement.
    contact* doubleContact = new contact[MAX * 2];
    for (auto a = 0u; a < MAX; ++a)
    {
        doubleContact[a].a = newContact[a].a;
        doubleContact[a].id = newContact[a].id;
        doubleContact[a].count = newContact[a].count;
        doubleContact[a].Name[30] = newContact[a].Name[30];
        doubleContact[a].Email[100] = newContact[a].Email[100];
        doubleContact[a].StreetAddress[35] = newContact[a].StreetAddress[35];
        doubleContact[a].City[30] = newContact[a].City[30];
        doubleContact[a].State[3] = newContact[a].State[3];
        doubleContact[a].Zip = newContact[a].Zip;
        cout << "List number: " << doubleContact[a].id << endl;
        cout << "name: " << doubleContact[a].Name << endl;
        cout << "Email: " << doubleContact[a].Email << endl;
        cout << "Address: " << doubleContact[a].StreetAddress << endl;
        cout << "city: " << doubleContact[a].City << endl;
        cout << "state: " << doubleContact[a].State << endl;
        cout << "Zip: " << doubleContact[a].Zip << endl;
    }
    newContact = doubleContact;
    delete[] doubleContact;
    //delete[] newContact;
    MAX = MAX * 2;
    //printAll(&doubleContact[MAX], MAX);
    //printAll(&newContact[MAX], MAX);
    return newContact[MAX];
}

size_t max_double(size_t MAX)
{
    MAX = MAX * 2;
    return MAX;
}

void delete_contact(contact newContact[])
{
    //Work in progress, add BOOL (true) to struct, when this is selected print id list with respective names
    //then take input of id list number and set bool to false
    //add to new part to addNew: if bool != 0 then copy and paste update code w/addNew couts 
}