1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
У меня в программке ошибка спотыкаюсь на mas[j-1]="privet"; Надо написать программку чтобы динамическая массив постоянно увеличивался на 1 и записывался в ячейку сразу данные а у меня чего то не выходит наверное неправильно рассчитал
вот сама программка
#include <stdafx.h> #include <string> #include <iostream> using namespace std; int main() { cout<<"test"<<endl; int i,j; j=0; string *mas,*ms; for(i=0; i<50;i++) { j++; if (j ==1) { mas =new string [j]; mas[j-1]="0"; } cout<<"j = "<<j<<endl; if (j>1) { ms = new string [j-1]; ms=mas; mas =new string [j]; mas=ms; cout<<"mas ["<<j-2<<"] = "<<mas[j-2]<<endl; mas[j-1]="privet"; //cout<<mas[j-1]<<endl; } } cout<<"ppppppppppppp"<<endl; //for (i=0; i<=j; i++) cout<<"mas = "<<mas<<" i = "<<i<<" j = "<<j<<endl; cout<<"end"<<endl; return 0; }
--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
ifstream fin2("mano.txt", ios::in);//citaem po odnomu simbolu i delaem slovo vikidivaem vse lisnee while(fin2.good())//zapisivaem v vektor { cRai = fin2.get(); if(fin2.good())
{ for ( i=0; i<=26; i++) { if (cRai == simb[i]) a++; } if (a == 0) if (cRai !=t) if (cRai != '"') if (cRai !=' ') { word+=cRai; } if (cRai == st) { iV.push_back(word); word = ""; } if (cRai ==t) { iV.push_back(word); word = ""; } a=0; } }
// cout<<"+++++++++++++masive++++++++++++"<<endl; //cout<<i<<endl; // sortiruem slova for ( j = 1; j<=i; j++) for (a = j+1; a<=i; a++) if (mas[j]>mas[a]) { word = mas[j]; mas[j]=mas[a]; mas[a]=word; }
ofstream fin1("rez.txt", ios::out); fin1<<"Slova povtorialis"; fin1<<endl; //smotrim skolko slov napisano gde i vivodim daze esli slovo tolko v odnom meste s=1; for ( j = 1; j<=i-1; j++) { for (a = j+1; a<=i; a++) { if (mas[j] == mas[a]) su++; }
fin1<<" slovo "<<mas[j]<<" naxoditsia v "<<su+1<<" mestax"; fin1<<endl; j=j+su; su=0; } fin1.close(); fin2.close(); return 0; }
Одна ошибка там пустое место записывает Сказали переделать вместо вектора сделать динамический массив чтобы меньше памяти использовала исправить ошибку и оптимизировать программу ну я сделал вот так
{ for ( i=0; i<=26; i++) { if (cRai == simb[i]) a++; } if (a == 0) if (cRai !=t) if (cRai != '"') if (cRai !=' ') { s++; word+=cRai; } if (cRai == st) { j++; s++; ms=ms+word+" "; word = ""; } if (cRai ==t) { j++; s++; ms=ms+word+" "; word = ""; } a=0; } } j++; s++; ms=ms+word+" "; word=""; //cout<<ms<<" j ="<<j<<endl;
mas = new string [j];
//cout<<s<<endl; x=0; for (i=0;i<s;i++) { if (ms[i] != st) word=word+ms[i]; if (ms[i] == st) { mas[x]=word; x++; word=""; } }
// cout<<"+++++++++++++masive++++++++++++"<<endl; //cout<<i<<endl; // sortiruem slova for ( j = 1; j<x; j++) for (a = j+1; a<x; a++) if (mas[j]>mas[a]) { word = mas[j]; mas[j]=mas[a]; mas[a]=word; }
////smotrim skolko slov napisano gde i vivodim daze esli slovo tolko v odnom meste //s=1; su=1; for ( j = 1; j<x-1; j++) { for (a = j+1; a<x; a++) { //cout<<mas[j]<<" "<<mas[a]<<" j = "<<j<<" a = "<<a<<endl; if (mas[j] == mas[a]) su++; else a=x; }
fin1<<" slovo "<<mas[j]<<" naxoditsia v "<<su<<" mestax"; fin1<<endl; j=j+su; su=1; } if (mas[x-2] != mas[x-1]) fin1<<" slovo "<<mas[x-1]<<" naxoditsia v "<<su<<" mestax"; fin1<<endl; fin1.close(); fin2.close(); return 0; }
и теперь хотел избавится от одного цикла
for (i=0;i<s;i++) { if (ms[i] != st) word=word+ms[i]; if (ms[i] == st) { mas[x]=word; x++; word=""; } }
--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.