ASDV-Cpp/Assignments/lab3_CalebFontenot/twoDarraysChar.cpp

129 lines
3.1 KiB
C++

//
// Created by caleb on 3/20/24.
//
#include <iostream>
char** create2DarrayChar(int rows, int columns) {
char **pp = new char* [rows];
for (int i = 0; i < rows; ++i) {
pp[i] = new char[columns + 1];
}
return pp;
}
void populateChar(char** pp, int rows, int columns) {
int ascii = 'A';
for (int i = 0; i < rows; ++i) {
int j = 0;
for (j = 0; j < columns -1; ++j) {
pp[i][j] = ascii + i + j;
}
pp[i][j] = '\0';
ascii += 10;
if (ascii > 100) {
ascii = 65;
}
}
}
void populateCharReverse(char** pp, int rows, int columns) {
int ascii = 'A';
for (int i = 0; i < rows; ++i) {
//for (int i = rows - 1; i >= 0; --i) {
int j = columns;
for (int j = 0; j < columns; ++j) {
//for (j = columns - 1; j >= 0; --j) {
pp[i][j] = ascii - i - j;
}
pp[i][j] = '\0';
ascii += 10;
if (ascii > 100) {
ascii = 65;
}
}
}
///////////////////////////////////////////////////////////////////////////
/* traverses */
void traverseChar(char** pp, int rows, int columns) {
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < columns; ++j) {
std::cout << pp[i][j] << " ";
}
}
std::cout << std::endl;
}
void traverseCharSingleLoop (char** pp, int rows) {
for (int i = 0; i < rows; ++i) {
std::cout << pp[i] << std::endl;
}
}
/////////////////////////////////////////////////////////////////////////////
/* frees */
void freeMemoryChar(char **pp, int rows) {
for (int i = 0; i < rows; ++i) {
delete[] pp[i];
}
}
/////////////////////////////////////////////////////////////////////////////
/* Dereference versions */
char** create2DarrayCharDereference(int rows, int columns) {
char **pp = new char* [rows];
for (int i = 0; i < rows; ++i) {
*(pp + i) = new char[columns + 1];
}
return pp;
}
void populateCharDereference(char** pp, int rows, int columns) {
int ascii = 'A';
for (int i = 0; i < rows; ++i) {
int j = 0;
for (j = 0; j < columns -1; ++j) {
*(*(pp + i) + j) = ascii + i + j;
}
pp[i][j] = '\0';
ascii += 10;
if (ascii > 100) {
ascii = 65;
}
}
}
void traverseCharDereference(char** pp, int rows, int columns) {
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < columns; ++j) {
std::cout << *(*(pp + i) + j) << " ";
}
}
std::cout << std::endl;
}
void traverseCharSingleLoopDereference(char** pp, int rows) {
for (int i = 0; i < rows; ++i) {
std::cout << *(pp + i) << std::endl;
}
}
void freeMemoryCharDereference(char **pp, int rows) {
for (int i = 0; i < rows; ++i) {
delete[] *(pp + i);
}
}
void sort(char **pp, int columns, int rows) {
char temp;
for (int i = 0; i < columns; ++i) {
for (int j = 0; j < (rows - 1); ++j) {
if (pp[i][j] > pp[i][j + 1]) {
temp = pp[i][j];
pp[i][j] = pp[i][j + 1];
pp[i][j + 1] = temp;
}
}
}
}