Обеспечьте корректную работу программы суммирования параграфа 13.9.7
http://www.kselax.ru/2013/04/zadacha-na-associativnyj-massiv/
для имен содержащих пробелы.
Не знаю та программка, что в этой задаче 13.7 она у меня и так работает корректно.Вот ее код:
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 |
//programma kotora9 podcchituvaet cymmy ynikal6nux znachenii po klyuchy #include <iostream> using std::cout; using std::endl; #include <cstdlib> using std::exit; #include <string> using std::string; template<typename K,typename V> struct znach { K key; V value; znach* prev; znach* next; znach(K k, V v) :key(k),value(v),prev(0),next(0){} }; template<typename K,typename V> struct programm { znach<K,V>* data; V sum; K mass[200]; public: programm():data(0),sum(0){}; void add(K k, V v) { if(data==0) { cout <<"cpicok pyct"<<endl; data=new znach<K,V>(k,v); } else { cout <<"ect6 elementu"<<endl; addHelper(data,k,v); } } void addHelper(znach<K,V>* ptr, K& k, V& v) { if(ptr->next==0) { ptr->next=new znach<K,V>(k,v); cout <<"mu dobavili vtoroi"<<endl; } else addHelper(ptr->next,k,v); } void print() { if(data==0) { cout <<"cpicok pyct"<<endl; } else printHelper(data); } void printHelper(znach<K,V>* ptr) { if(ptr!=0) cout <<ptr->key<<' '<<ptr->value<<endl; if(ptr->next!=0) printHelper(ptr->next); } void printSum() { if(data==0) { cout <<"cpicok pyct"<<endl; } else { int i=0; printSumHelper(data,i); /*for(int j=0;j<i;j++) cout <<mass[j]<<' '; cout <<endl;*/ printSumHelper2(data,i); cout <<"sum= "<<sum<<endl; } } void printSumHelper(znach<K,V>* ptr,int& i) { if(ptr!=0) { mass[i++]=ptr->key; } if(ptr->next!=0) printSumHelper(ptr->next,i); } void printSumHelper2(znach<K,V>* ptr,int& i) { //cout <<"i= "<<i<<" ptr->next= "<<ptr->next<<endl; if(ptr!=0) { int flag=0; for(int j=0;j<i;j++) if(mass[j]==ptr->key) flag++; if(flag==1) { sum+=ptr->value; } } if(ptr->next!=0) printSumHelper2(ptr->next,i); } }; int main() { programm<string,int> p; p.add("hel d",3); p.add("hel3 d",4); p.add("hel3 d",4); /*p.add(0,1); /*p.add(1,2); p.add(1,3); p.add(2,4);*/ p.print(); p.printSum(); return 0; } |
Ничо не менял все и так работает как положено хоть с пробелами хоть без пробелов.
[youtube]http://www.youtube.com/watch?v=gfLDycW1b40[/youtube]