diff options
| -rw-r--r-- | .gitignore | 398 | ||||
| -rw-r--r-- | Project1/Contacts.h | 50 | ||||
| -rw-r--r-- | Project1/Project1.sln | 31 | ||||
| -rw-r--r-- | Project1/Project1.vcxproj | 139 | ||||
| -rw-r--r-- | Project1/Project1.vcxproj.filters | 30 | ||||
| -rw-r--r-- | Project1/contacts.cpp | 286 | ||||
| -rw-r--r-- | Project1/program.cpp | 67 |
7 files changed, 1001 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8a30d25 --- /dev/null +++ b/.gitignore @@ -0,0 +1,398 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml diff --git a/Project1/Contacts.h b/Project1/Contacts.h new file mode 100644 index 0000000..4ce76c4 --- /dev/null +++ b/Project1/Contacts.h @@ -0,0 +1,50 @@ +#ifndef CONTACTS_HEADER_H +#define CONTACTS_HEADER_H + + + +// functions + +struct contact +{ + int a = 0; + size_t id = 0; + size_t count = 0; + char Name[30]; + char Email[105]; + char StreetAddress[45]; + char City[35]; + char State[4]; + int Zip = 0; + contact() : a(true), id(0), count(0), Zip(0) {} +}; + +//struct contact +//{ +// bool a = true; +// size_t id = 0; +// size_t count = 0; +// char Name[25]{}; +// char Email[100]{}; +// char StreetAddress[35]{}; +// char City[30]{}; +// char State[3]{}; +// int Zip = 0; +//}; +//contact newContact[11]; + +int menu(); + +char addNew(contact newContact[], size_t MAX, size_t& t); + +void update(contact newContact[], size_t MAX); + +void printAll(contact newContact[], size_t& MAX); + +contact contact_double(contact*& newContact, size_t& MAX, size_t t); + +size_t max_double(size_t MAX); + +void delete_contact(contact newContact[], size_t MAX); + +#endif CONTACTS_HEADER_H
\ No newline at end of file diff --git a/Project1/Project1.sln b/Project1/Project1.sln new file mode 100644 index 0000000..951f197 --- /dev/null +++ b/Project1/Project1.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.8.34511.84 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Project1", "Project1.vcxproj", "{643642F2-1A17-4D44-8DB9-B427BCDCC9A2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {643642F2-1A17-4D44-8DB9-B427BCDCC9A2}.Debug|x64.ActiveCfg = Debug|x64 + {643642F2-1A17-4D44-8DB9-B427BCDCC9A2}.Debug|x64.Build.0 = Debug|x64 + {643642F2-1A17-4D44-8DB9-B427BCDCC9A2}.Debug|x86.ActiveCfg = Debug|Win32 + {643642F2-1A17-4D44-8DB9-B427BCDCC9A2}.Debug|x86.Build.0 = Debug|Win32 + {643642F2-1A17-4D44-8DB9-B427BCDCC9A2}.Release|x64.ActiveCfg = Release|x64 + {643642F2-1A17-4D44-8DB9-B427BCDCC9A2}.Release|x64.Build.0 = Release|x64 + {643642F2-1A17-4D44-8DB9-B427BCDCC9A2}.Release|x86.ActiveCfg = Release|Win32 + {643642F2-1A17-4D44-8DB9-B427BCDCC9A2}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {08002DB6-7F55-4FC3-BFCB-8DE7FFE2493E} + EndGlobalSection +EndGlobal diff --git a/Project1/Project1.vcxproj b/Project1/Project1.vcxproj new file mode 100644 index 0000000..31b4e05 --- /dev/null +++ b/Project1/Project1.vcxproj @@ -0,0 +1,139 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <VCProjectVersion>17.0</VCProjectVersion> + <Keyword>Win32Proj</Keyword> + <ProjectGuid>{643642f2-1a17-4d44-8db9-b427bcdcc9a2}</ProjectGuid> + <RootNamespace>Project1</RootNamespace> + <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v143</PlatformToolset> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v143</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v143</PlatformToolset> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v143</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="Shared"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <SDLCheck>true</SDLCheck> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <SDLCheck>true</SDLCheck> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + <GenerateDebugInformation>true</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <SDLCheck>true</SDLCheck> + <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <SDLCheck>true</SDLCheck> + <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <ConformanceMode>true</ConformanceMode> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + <GenerateDebugInformation>true</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClInclude Include="Contacts.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="contacts.cpp" /> + <ClCompile Include="program.cpp" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/Project1/Project1.vcxproj.filters b/Project1/Project1.vcxproj.filters new file mode 100644 index 0000000..1ea8744 --- /dev/null +++ b/Project1/Project1.vcxproj.filters @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <ClInclude Include="Contacts.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="program.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="contacts.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/Project1/contacts.cpp b/Project1/contacts.cpp new file mode 100644 index 0000000..295df0d --- /dev/null +++ b/Project1/contacts.cpp @@ -0,0 +1,286 @@ +#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 = 0; i < MAX, i++;) + { + for(newContact[i].a = 1; ++i;) + { + newContact[i].a = 0; + for (auto j = newContact[i].id; j < MAX; j++) + { + if(newContact[i].id != 0) + { + i = i + 1; + } + } + newContact[i].id = i; + 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; + break; + } + } + for (size_t i = t ; i < MAX; i++) + { + newContact[i].a = 0; + 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].a == 1) + { + i = i + 1; + } + 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) +{ + /*hell on earth is in this condenced comment*/ + //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[25] = newContact[a].Name[25]; + // 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]; + + contact* doubleContact = new contact[MAX * 2]; + for (auto a = 0u; a < MAX; ++a) + { + doubleContact[a] = newContact[a]; + } + delete[] newContact; + newContact = doubleContact; + MAX = MAX * 2; + return newContact[MAX - 1]; +} + +size_t max_double(size_t MAX) +{ + MAX = MAX * 2; + return MAX; +} + +void delete_contact(contact newContact[], size_t MAX) +{ + //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 + cout << "The list of contacts and their names will now print" << endl; + for (auto i = 0u; i < MAX; i++) + { + if (newContact[i].id == 0) { + break; + } + if (newContact[i].id < 0) { + break; + } + if (newContact[i].id > MAX) { + break; + } + //if (newContact[i].a == 1) + //{ + // break; + //} + cout << "Id number: " << newContact[i].id << " is under the name: " << newContact[i].Name << endl; + //size_t delete_choice = 0; + //cout << "\n"; + //cin.ignore(1000, '\n'); + //cout << "Enter the id number of the contact you'd like to delete" << endl; + //cin >> delete_choice; + //if (delete_choice == newContact[i].id) + //{ + // newContact[i].a = 1; + // cout << "Contact number: " << newContact[i].id << " deleted" << endl; + // newContact[i + 1].id = newContact[i + 1].id - 1; + // break; + //} + } + for (auto i = 0u; i < MAX; i++) + { + size_t delete_choice = 0; + cout << "\n"; + cin.ignore(1000, '\n'); + cout << "Enter the id number of the contact you'd like to delete" << endl; + cin >> delete_choice; + if (delete_choice != newContact[i].id) + { + i = i + 1; + } + if (delete_choice == newContact[i].id) + { + newContact[i].a = 1; + cout << "Contact number: " << newContact[i].id << " deleted" << endl; + newContact[i + 1].id = newContact[i + 1].id - 1; + break; + } + } + //cout << "The list of contacts and their names will now print" << endl; + // for (auto i = 0u; i <= MAX; i++) + // { + // if (newContact[i].id == 0) { + // break; + // } + // if (newContact[i].id < 0) { + // break; + // } + // if (newContact[i].id > MAX) { + // break; + // } + // //if (newContact[i].a == 1) + // //{ + // // break; + // //} + // cout << "Id number: " << newContact[i].id << " is under the name: " << newContact[i].Name << endl; + // } + //size_t delete_choice = 0; + //cout << "\n"; + //cin.ignore(1000, '\n'); + //cout << "Enter the id number of the contact you'd like to delete" << endl; + //cin >> delete_choice; + // if (delete_choice == newContact[i].id) + // { + // newContact[i].a = 1; + // cout << "Contact number: " << newContact[i].id << " deleted" << endl; + // break; + // } +}
\ No newline at end of file diff --git a/Project1/program.cpp b/Project1/program.cpp new file mode 100644 index 0000000..ef06d25 --- /dev/null +++ b/Project1/program.cpp @@ -0,0 +1,67 @@ +// name: Connor McDowell +// date: 2/19/2024 +// class: CST116 +// reason: homework number 6 + +#include "Contacts.h" +#include <iostream> + +using std::cin; +using std::cout; +using std::endl; + +//constexpr size_t MAX = 3; + +int main() +{ + size_t MAX = 3; + int O = 1; + /* t = index counter*/ + size_t t = 0; + contact* newContact = new contact[MAX]; + int length = sizeof(newContact[MAX]); + //cout << sizeof(newContact[MAX]) << endl; + while (O == 1) + { + //cout << MAX << endl; + // c = choice input + int c = 0; + cout << "1. Enter a contact\n"; + cout << "2. Update a contact\n"; + cout << "3. print all contacts\n"; + cout << "4. Delete a contact\n"; + cout << "5. Quit\n"; + cout << "\nEnter your choice: " << endl; + cin >> c; + switch (c) + { + case 1: + addNew(newContact, MAX, t); + if (t >= MAX) // Check if the number of contacts exceeds MAX + { + contact* newContactTemp = new contact[MAX * 2]; // Double the size + for (size_t i = 0; i < MAX; ++i) // Copy existing contacts + newContactTemp[i] = newContact[i]; + delete[] newContact; // Deallocate old memory + newContact = newContactTemp; // Update pointer + MAX *= 2; // Update MAX + } + break; + case 2: + update(newContact, MAX); + break; + case 3: + printAll(newContact, MAX); // Print only the existing contacts + break; + case 4: + delete_contact(newContact, MAX); + break; + case 5: + O = 0; + break; + default: + cout << "Invalid choice. Please enter a number from 1 to 5." << endl; + } + } + return 0; +}
\ No newline at end of file |