Finished ex7.*
This commit is contained in:
parent
6591677706
commit
d9cbe495da
6 changed files with 205 additions and 0 deletions
31
ex7.1/main.cpp
Normal file
31
ex7.1/main.cpp
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
int main () {
|
||||||
|
const char fname[] = "../ex5.3/example.txt";
|
||||||
|
|
||||||
|
std::ifstream fh(fname);
|
||||||
|
|
||||||
|
if ( !fh ) {
|
||||||
|
std::cout << "Error opening (hardcoded) File '" << fname << "'" << std::endl;
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::map<std::string,int> myMap;
|
||||||
|
std::string word;
|
||||||
|
|
||||||
|
while ( fh >> word ) {
|
||||||
|
myMap[word] += 1; // Lookup the 'word' key and increase its counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto iter = myMap.begin();
|
||||||
|
while ( iter != myMap.end() ) {
|
||||||
|
std::cout << iter->first << ", " << iter->second << std::endl;
|
||||||
|
|
||||||
|
iter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
42
ex7.2/main.cpp
Normal file
42
ex7.2/main.cpp
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
bool isPalindrome(std::vector<T> v) {
|
||||||
|
|
||||||
|
// The Empty Vector is also a Palindrome I guess
|
||||||
|
if ( v.begin() == v.end() ) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto iter_front = v.begin() ;
|
||||||
|
auto iter_end = v.end() - 1;
|
||||||
|
|
||||||
|
// If
|
||||||
|
while ( iter_front < iter_end ) {
|
||||||
|
|
||||||
|
// Values are not the same so it is not a palindrome
|
||||||
|
if ( *iter_front != *iter_end ) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Move iterators
|
||||||
|
iter_front++;
|
||||||
|
iter_end--;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
std::vector<int> l = {1, 2, 3, 2, 1};
|
||||||
|
|
||||||
|
if ( isPalindrome(l) ) {
|
||||||
|
std::cout << "This is a Palindrome" << std::endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
std::cout << "This is *not* a Palindrome" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
17
ex7.3/main_list.cpp
Normal file
17
ex7.3/main_list.cpp
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#include <list>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
std::list<int> l;
|
||||||
|
|
||||||
|
// Fill List
|
||||||
|
for (int i = 0; i < 10000000 ; i++) {
|
||||||
|
l.push_back(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( auto iter = l.begin(); iter != l.end(); iter++ ) {
|
||||||
|
if ( *iter % 3 == 0 ) {
|
||||||
|
iter = l.erase( iter );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
17
ex7.3/main_vector.cpp
Normal file
17
ex7.3/main_vector.cpp
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
std::vector<int> l;
|
||||||
|
|
||||||
|
// Fill List
|
||||||
|
for (int i = 0; i < 10000 ; i++) {
|
||||||
|
l.push_back(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( auto iter = l.begin(); iter != l.end(); iter++ ) {
|
||||||
|
if ( *iter % 3 == 0 ) {
|
||||||
|
iter = l.erase( iter );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
47
ex7.4/Stack.hh
Normal file
47
ex7.4/Stack.hh
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
//Stack.h
|
||||||
|
#include <deque>
|
||||||
|
|
||||||
|
#ifndef STACK_H
|
||||||
|
#define STACK_H
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
class Stack {
|
||||||
|
// Interface
|
||||||
|
public:
|
||||||
|
Stack() {
|
||||||
|
_s = new std::deque<T>();
|
||||||
|
}
|
||||||
|
|
||||||
|
int nitems() { return _s->size() ; }
|
||||||
|
bool empty() { return (_s->size() == 0) ; }
|
||||||
|
|
||||||
|
void push(T c) {
|
||||||
|
_s->push_back(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
T pop() {
|
||||||
|
if (empty()) {
|
||||||
|
std::cout << "Stack::pop() Error: stack is empty" << std::endl ;
|
||||||
|
return 0 ;
|
||||||
|
}
|
||||||
|
|
||||||
|
T tmp = _s->back();
|
||||||
|
_s->pop_back();
|
||||||
|
|
||||||
|
return tmp;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void inspect() {
|
||||||
|
for ( auto iter = _s->begin(); iter != _s->end() ; iter++ )
|
||||||
|
{
|
||||||
|
std::cout << *iter << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Implementation
|
||||||
|
private:
|
||||||
|
std::deque<T>* _s ;
|
||||||
|
|
||||||
|
};
|
||||||
|
#endif
|
51
ex7.4/main.cpp
Normal file
51
ex7.4/main.cpp
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
#include <iostream>
|
||||||
|
#include "Stack.hh"
|
||||||
|
|
||||||
|
using namespace std ;
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
Stack<double> s ;// initialize Stack
|
||||||
|
|
||||||
|
// Write doubles into Stack
|
||||||
|
int i ;
|
||||||
|
for (i=0 ; i<10 ; i++) {
|
||||||
|
cout << "pushing value " << i*i << " in stack" << endl ;
|
||||||
|
|
||||||
|
s.push(i*i) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << "Clone s to sclone" << endl;
|
||||||
|
Stack<double> sclone = s;
|
||||||
|
|
||||||
|
cout << "Inspect s's FIFO" << endl;
|
||||||
|
s.inspect();
|
||||||
|
|
||||||
|
cout << "Inspect sclone's FIFO" << endl;
|
||||||
|
sclone.inspect();
|
||||||
|
//The Same Data
|
||||||
|
|
||||||
|
while (!s.empty()) {
|
||||||
|
double val = s.pop() ;
|
||||||
|
cout << "popping value " << val << " from stack" << endl ;
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << "Inspect s's FIFO" << endl;
|
||||||
|
s.inspect();
|
||||||
|
|
||||||
|
cout << "Inspect sclone's FIFO" << endl;
|
||||||
|
sclone.inspect();
|
||||||
|
//Not the Same Data after copy constructor
|
||||||
|
|
||||||
|
for (int i = 0; i < 5 ; i++ )
|
||||||
|
{
|
||||||
|
s.push(100*i) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << "Inspect s's FIFO" << endl;
|
||||||
|
s.inspect();
|
||||||
|
|
||||||
|
cout << "Inspect sclone's FIFO" << endl;
|
||||||
|
sclone.inspect();
|
||||||
|
//Not the Same Data after copy constructor
|
||||||
|
return 0 ;
|
||||||
|
}
|
Reference in a new issue