help implementing canvas.cpp but with only #include "canvas.h",
class header file doesnt have height
-----------------------------------------------------------------------------------------------------------------------
canvas.h
#ifndef CANVAS_H
#define CANVAS_H
#include <string>
using namespace std;
// In this homework, you'll manipulate ASCII art images
// consisting of a rectangular grid of chararacter pixels.
class Canvas
{
public:
// Allocates a canvas of the given width and height 5 that
// consists entirely of ' ' (space) chars.
Canvas(int width);
// Allocates a canvas with width 5 and height 5 that looks like:
//
// ### #### #### ####
// # # # # # # #
// ##### or #### or # or # #
// # # # # # # #
// # # #### #### ####
//
// depending upon which character ('A', 'B', 'C', or 'D') is
// given as a parameter. If some other character is given,
// allocates a canvas of ' ' chars with width 5 and height 5.
Canvas(char x);
// Allocates a canvas containing the sequence of characters
// in the string with 2 columns of space between each pair
// of adjacent characters. For instance, Canvas("BADCAB")
// should yield:
//
// #### ### #### #### ### ####
// # # # # # # # # # # #
// #### ##### # # # ##### ####
// # # # # # # # # # # #
// #### # # #### #### # # ####
//
// Any characters in s not from {'A', 'B', 'C', 'D'} should be
// replaced with empty 5x5 space, just like previous constructor.
Canvas(string s);
// Returns the width of the canvas.
int width();
// Returns the entire canvas as a single string, consisting of each row
// of the canvas, followed by the newline character ('\n').
string to_string();
// Replaces every instance in the canvas of old_char with new_char.
// For instance, if old_char is '#' and new char is '@', then:
//
// ### @@@
// # # @ @
// ##### becomes @@@@@
// # # @ @
// # # @ @
//
void replace(char old_char, char new_char);
// Adds a character to the Canvas's sequence of characters.
void add(char x);
// Destructor. Deallocates all of the memory allocated by the canvas.
~Canvas();
private:
// A canvas is represented as a 2D char array, i.e.
// an array of pointers to char (sub)arrays.
// Each subarray corresponds to a column of the image.
char** C;
int _width;
};
#endif
#include <string>
#include <cstdlib>
#include <iostream>
#include "canvas.h"
using namespace std;
inline void _test(const char* expression, const char* file, int line)
{
cerr << "test(" << expression << ") failed in file " << file;
cerr << ", line " << line << "." << endl;
abort();
}
#define test(EXPRESSION) ((EXPRESSION) ? (void)0 : _test(#EXPRESSION, __FILE__, __LINE__))
void interactive_mode(char ink)
{
cout << "Enter a string and press Enter ";
cout << "to see the ASCII art version." << endl;
while (cin)
{
string line;
getline(cin, line);
string invalid_chars;
for (int i = 0; i < line.size(); ++i)
if (line[i] < 'A' || line[i] > 'D')
invalid_chars += line[i];
if (invalid_chars.size() > 0)
{
cout << " String contained invalid chars: ";
for (int i = 0; i < invalid_chars.size(); ++i)
{
cout << "'" << invalid_chars[i] << "'";
if (i != invalid_chars.size() - 1)
cout << ", ";
}
cout << "." << endl;
}
else if (line.size() > 0)
{
Canvas C(line);
C.replace('#', ink);
cout << C.to_string();
}
}
exit(0);
}
int main()
{
// Interactive mode.
// Uncomment the "interactive_mode..." line below to
// use your Canvas implementation interactively.
//
// The parameter specifies the character used to fill letters.
//
// interactive_mode('@');
// Test Canvas(int)
Canvas C1(3);
test(C1.width() == 3);
test(C1.to_string() == string(" \n")
+ " \n"
+ " \n"
+ " \n"
+ " \n");
Canvas C2(4);
test(C2.width() == 4);
test(C2.to_string() == string(" \n")
+ " \n"
+ " \n"
+ " \n"
+ " \n");
Canvas C3(7);
test(C3.width() == 7);
test(C3.to_string() == string(" \n")
+ " \n"
+ " \n"
+ " \n"
+ " \n");
// Test Canvas(char)
Canvas C4('A');
test(C4.width() == 5);
test(C4.to_string() == string(" ### \n")
+ "# #\n"
+ "#####\n"
+ "# #\n"
+ "# #\n");
Canvas C5('B');
test(C5.width() == 5);
test(C5.to_string() == string("#### \n")
+ "# #\n"
+ "#### \n"
+ "# #\n"
+ "#### \n");
Canvas C6('C');
test(C6.width() == 5);
test(C6.to_string() == string(" ####\n")
+ "# \n"
+ "# \n"
+ "# \n"
+ " ####\n");
Canvas C7('D');
test(C7.width() == 5);
test(C7.to_string() == string("#### \n")
+ "# #\n"
+ "# #\n"
+ "# #\n"
+ "#### \n");
Canvas C8('E');
test(C8.width() == 5);
test(C8.to_string() == string(" \n")
+ " \n"
+ " \n"
+ " \n"
+ " \n");
// Test replace()
C5.replace('#', '@');
test(C5.width() == 5);
test(C5.to_string() == string("@@@@ \n")
+ "@ @\n"
+ "@@@@ \n"
+ "@ @\n"
+ "@@@@ \n");
C5.replace(' ', '-');
test(C5.width() == 5);
test(C5.to_string() == string("@@@@-\n")
+ "@---@\n"
+ "@@@@-\n"
+ "@---@\n"
+ "@@@@-\n");
C5.replace('-', '@');
test(C5.width() == 5);
test(C5.to_string() == string("@@@@@\n")
+ "@@@@@\n"
+ "@@@@@\n"
+ "@@@@@\n"
+ "@@@@@\n");
C5.replace('@', '$');
test(C5.width() == 5);
test(C5.to_string() == string("$$$$$\n")
+ "$$$$$\n"
+ "$$$$$\n"
+ "$$$$$\n"
+ "$$$$$\n");
C6.replace(' ', '*');
test(C6.width() == 5);
test(C6.to_string() == string("*####\n")
+ "#****\n"
+ "#****\n"
+ "#****\n"
+ "*####\n");
C7.replace('#', '*');
test(C7.width() == 5);
test(C7.to_string() == string("**** \n")
+ "* *\n"
+ "* *\n"
+ "* *\n"
+ "**** \n");
C8.replace('#', ' ');
test(C8.width() == 5);
test(C8.to_string() == string(" \n")
+ " \n"
+ " \n"
+ " \n"
+ " \n");
// Test add()
Canvas C9('A');
C9.add('C');
test(C9.width() == 12);
test(C9.to_string() == string(" ### ####\n")
+ "# # # \n"
+ "##### # \n"
+ "# # # \n"
+ "# # ####\n");
C9.add('B');
test(C9.width() == 19);
test(C9.to_string() == string(" ### #### #### \n")
+ "# # # # #\n"
+ "##### # #### \n"
+ "# # # # #\n"
+ "# # #### #### \n");
C9.add('D');
test(C9.width() == 26);
test(C9.to_string() == string(" ### #### #### #### \n")
+ "# # # # # # #\n"
+ "##### # #### # #\n"
+ "# # # # # # #\n"
+ "# # #### #### #### \n");
C9.add('!');
test(C9.width() == 33);
test(C9.to_string() == string(" ### #### #### #### \n")
+ "# # # # # # # \n"
+ "##### # #### # # \n"
+ "# # # # # # # \n"
+ "# # #### #### #### \n");
C9.add('C');
test(C9.width() == 40);
test(C9.to_string() == string(" ### #### #### #### ####\n")
+ "# # # # # # # # \n"
+ "##### # #### # # # \n"
+ "# # # # # # # # \n"
+ "# # #### #### #### ####\n");
// Test Canvas(string)
Canvas C10("ADD");
test(C10.width() == 19);
test(C10.to_string() == string(" ### #### #### \n")
+ "# # # # # #\n"
+ "##### # # # #\n"
+ "# # # # # #\n"
+ "# # #### #### \n");
Canvas C11("VBAD!");
test(C11.width() == 33);
test(C11.to_string() == string(" #### ### #### \n")
+ " # # # # # # \n"
+ " #### ##### # # \n"
+ " # # # # # # \n"
+ " #### # # #### \n");
Canvas C12("DAD CAB");
test(C12.width() == 47);
test(C12.to_string() == string("#### ### #### #### ### #### \n")
+ "# # # # # # # # # # #\n"
+ "# # ##### # # # ##### #### \n"
+ "# # # # # # # # # # #\n"
+ "#### # # #### #### # # #### \n");
cout << "Assignment complete." << endl;
}
-----------------------------------------------------------------------As code is pretty standared I haven't commented. If you find any problem I am avaible in comments.
#include <string>
#include <cstdlib>
#include <iostream>
#include "canvas.h"
void Canvas::Canvas(int width, int height)
{
char *temp;
temp = (char *)malloc(sizeof(char) * width);
C = (char **)malloc(sizeof(temp) * height);
}
void Canvas::Canvas(char x)
{
char *temp;
int i;
temp = (char *)malloc(sizeof(char) * 5);
C = (char **)malloc(sizeof(temp) * 5);
width = 5;
height = 5;
string s1, s2, s3, s4, s5;
if (x == 'A')
{
s1 + = " ### ";
s2 + = " # # ";
s3 + = "#####";
s4 + = " # # ";
s5 + = " # # ";
}
else if (x == 'B')
{
s1 + = "#### ";
s2 + = "# #";
s3 + = "#####";
s4 + = "# #";
s5 + = "#### ";
}
else if (x == 'C')
{
s1 + = " ####";
s2 + = "# ";
s3 + = " ";
s4 + = "# ";
s5 + = " ####";
}
else if (x == 'D')
{
s1 + = "#### ";
s2 + = "# #";
s3 + = "# #";
s4 + = "# #";
s5 + = "#### ";
}
for (i = 0; i < 5; i++)
C[0][i] = s1[i];
for (i = 0; i < 5; i++)
C[1][i] = s2[i];
for (i = 0; i < 5; i++)
C[2][i] = s3[i];
for (i = 0; i < 5; i++)
C[3][i] = s4[i];
for (i = 0; i < 5; i++)
C[4][i] = s5[i];
}
void Canvas::Canvas(string S)
{
int len = S.length();
char *temp;
int j = 0;
temp = (char *)malloc(sizeof(char) * 5 * len);
C = (char **)malloc(sizeof(temp) * 5);
string s1, s2, s3, s4, s5;
width = 5 * len;
height = 5;
for (int i = 0; i < len; i++, j = j + 5)
{
char x = S[i];
if (x == 'A')
{
s1 + = " ### ";
s2 + = " # # ";
s3 + = "#####";
s4 + = " # # ";
s5 + = " # # ";
}
else if (x == 'B')
{
s1 + = "#### ";
s2 + = "# #";
s3 + = "#####";
s4 + = "# #";
s5 + = "#### ";
}
else if (x == 'C')
{
s1 + = " ####";
s2 + = "# ";
s3 + = " ";
s4 + = "# ";
s5 + = " ####";
}
else if (x == 'D')
{
s1 + = "#### ";
s2 + = "# #";
s3 + = "# #";
s4 + = "# #";
s5 + = "#### ";
}
else
{
s1 + = " ";
s2 + = " ";
s3 + = " ";
s4 + = " ";
s5 + = " ";
}
}
for (j = 0; j < len * 5; j++)
C[0][j] = s1[j];
for (j = 0; j < len * 5; j++)
C[1][j] = s2[j];
for (j = 0; j < len * 5; j++)
C[2][j] = s3[j];
for (j = 0; j < len * 5; j++)
C[3][j] = s4[j];
for (j = 0; j < len * 5; j++)
C[4][j] = s5[j];
}
int Canvas::width()
{
return width;
}
int Canvas::height()
{
return height;
}
string Canvas::to_string()
{
int row = 0, col;
string ans;
while (row < height)
{
col = 0;
while (col < width)
{
if (C[row + 3][col + 1] == '#')
ans += 'A';
else if (C[row + 2][col + 2] == '#')
ans += 'B';
else if (C[row + 2][col] == '#')
ans += 'D';
else
ans += 'C';
col = col + 5;
}
ans += '\n';
row = row + 5;
}
return ans;
}
void Canvas::replace(char old_char, char new_char)
{
int i, j;
for (i = 0; i < width; i++)
{
for (j = 0; j < height; j++)
{
if (C[i][j] == old_char)
C[i][j] = new_char;
}
}
}
Canvas::~Canvas()
{
int i;
for (i = height - 1; i >= 0; i--)
delete (C[i]);
width = 0;
height = 0;
}
Thank you.
help implementing canvas.cpp but with only #include "canvas.h", class header file doesnt have height ----------------------------------------------------------------------------------------------------------------------- canvas.h...
Help finding my errors in C++ please Header file #ifndef _FISH_SHOWER_H #define _FISH_SHOWER_H #include <iostream> #include <string> using namespace std; //NOTE: Prototypes are correct, use as a guide void WriteHeader(); void FillVectors(vector<string> &type, vector<int> &minGals, vector<int> &maxGallons); void AskFishShowerTypes(vector<string> &type, int *pIndex); void CalcPondVol(int *pGal); bool ValidateFishShower(int index, int pondVol, vector<int> &minGals, vector<int> &maxGals, vector<int> &rec); void WriteInfo(string showerType, int gallons); void WriteInfo(string showerType, vector<string> &showerTypes, vector<int> &recommendations, int gallons); #endif Main file #include "FishShower.h" using namespace std; int main()...
Write a C++ Program. You have a following class as a header file (dayType.h) and main(). #ifndef H_dayType #define H_dayType #include <string> using namespace std; class dayType { public: static string weekDays[7]; void print() const; string nextDay() const; string prevDay() const; void addDay(int nDays); void setDay(string d); string getDay() const; dayType(); dayType(string d); private: string weekDay; }; #endif /* // Name: Your Name // ID: Your ID */ #include <iostream>...
Can you tell me what is wrong and fix this code. Thanks #include <iostream> #include <string> #include <fstream> #include <sstream> using namespace std; //function void displaymenu1(); int main ( int argc, char** argv ) { string filename; string character; string enter; int menu1=4; char repeat; // = 'Y' / 'N'; string fname; string fName; string lname; string Lname; string number; string Number; string ch; string Displayall; string line; string search; string found; string document[1000][6]; ifstream infile; char s[1000];...
Write a cpp program
Server.h
#ifndef SERVER_H
#define SERVER_H
#include
#include
#include
#include
using namespace std;
class Server
{
public:
Server();
Server(string, int);
~Server();
string getPiece(int);
private:
string *ascii;
mutex access;
};
#endif
--------------------------------------------------------------------------------------------------------------------------
Server.cpp
#include "Server.h"
#include
#include
Server::Server(){}
Server::Server(string filename, int threads)
{
vector loaded;
ascii = new string[threads];
ifstream in;
string line;
in.open(filename);
if (!in.is_open())
{
cout << "Could not open file...
Requirements I have already build a hpp file for the class architecture, and your job is to implement the specific functions. In order to prevent name conflicts, I have already declared a namespace for payment system. There will be some more details: // username should be a combination of letters and numbers and the length should be in [6,20] // correct: ["Alice1995", "Heart2you", "love2you", "5201314"] // incorrect: ["222@_@222", "12306", "abc12?"] std::string username; // password should be a combination of letters...
In C++ please!
*Do not use any other library functions(like strlen) than the
one posted(<cstddef>) in the code below!*
/**
CS 150 C-Strings
Follow the instructions on your handout to complete the
requested function. You may not use ANY library functions
or include any headers, except for <cstddef> for
size_t.
*/
#include <cstddef> // size_t for sizes and indexes
///////////////// WRITE YOUR FUNCTION BELOW THIS LINE
///////////////////////
///////////////// WRITE YOUR FUNCTION ABOVE THIS LINE
///////////////////////
// These are OK after...
#include <cstring> // for strlen() #include <cassert> // for assert() #include <iostream> // for cout using namespace std; class MyString { private: char *m_data; int m_length; public: MyString(const char *source = "") { assert(source); // make sure source isn't a null string // Find the length of the string // Plus one character for a terminator ...
Use C++
#include <iostream> #include <stdlib.h> #include <stdio.h> #include <cstring> using namespace std; /I Copy n characters from the source to the destination. 3 void mystrncpy( ???) 25 26 27 28 29 11- 30 Find the first occurrance of char acter c within a string. 32 ??? mystrchr???) 34 35 36 37 38 39 / Find the last occurrance of character c within a string. 40 II 41 ??? mystrrchr ???) 42 43 45 int main() char userInput[ 81]; char...
How can I make this compatible with older C++ compilers that DO NOT make use of stoi and to_string? //Booking system #include <iostream> #include <iomanip> #include <string> using namespace std; string welcome(); void print_seats(string flight[]); void populate_seats(); bool validate_flight(string a); bool validate_seat(string a, int b); bool validate_book(string a); void print_ticket(string passenger[], int i); string flights [5][52]; string passengers [4][250]; int main(){ string seat, flight, book = "y"; int int_flight, p = 0, j = 0; int seat_number,...
I have this program using class that plays the game hangman the only thing that I need to make is a file or a function that will store the 10 words ( hey, ace, cow, fix, fly, fun, ice, max, new, sam) when the user starts the game the words most be chosen randomly not in any order C++ code: // Header of the class #ifndef Hangman_H #define Hangman_H #include <string> #include <iostream> #include <string.h> using namespace std; class Hangman...