Ładny brzuch

Siema mam nastepujacy problem wszystko sie kompiluje i dziala tylko cos nie wypisuje mi dobrze sortowanego tekstu. Program polega na tym ze :
- mam w pliku jakies zdania
- wyciaga z pliku te wyrazy ktore maja przynajmniej jedna literke 'a'
- zapisuje je do tablicy struktur
-sortuje w tablicy alfabetycznie ( tu cos nie jest tak ) ;/;/

#include <iostream> #include <string> #include <fstream> using namespace std; struct zdanie { zdanie *tab; string tekst; }; int sprawdz(string wyraz) { int licz = 0; for(int i=0; wyraz[i]!=0; i++) {  if(wyraz[i] == 'a') licz = licz+1;  if(licz == 1) return 1; } return 0; } void wypisz(char * in,zdanie *z) { int i = 0; z->tab = new zdanie [20]; ifstream plik; plik.open(in); string wyraz; while(plik>>wyraz) {  if(sprawdz(wyraz))  {  cout<<wyraz<<" ";  z->tab[i].tekst = wyraz;  i++;  }   } plik.close(); cout<<endl; } void wypisz2(zdanie *z) { for(int i=0;i<20;++i) {  cout<<z->tab[i].tekst<<endl; } } void sortowanie(zdanie *z) { zdanie tmp; for(int i=0;i<20;++i) {  for(int j=0;j<19;++j)  {     if(z->tab[j].tekst > z->tab[j+1].tekst)   {    z->tab[j+1] = tmp;    z->tab[j+1] = z->tab[j];    z->tab[j] = tmp;   }  } } } int main(int argc, char ** argv) { zdanie *z; if(argc < 2) {  cerr<<"Jako parametry wywolania podaj nazwe pliku (do odczytu)!\n";  exit(-1); } cout<<"Wyrazy pobrane :\n"; wypisz(argv[1],z); cout<<endl; cout<<"Wyrazy w tablicy \n"; cout<<"--------------------\n"; wypisz2(z); cout<<"Sortowanie alfabetyczne wyrazow \n"; cout<<"--------------------\n"; sortowanie(z); wypisz2(z); delete [] z->tab; return 0; }

z gory dziekuje za pomoc i pozdrawiam ;)



a juz mam sory ; p

nie bede robil drugiego tematu ale tutaj to dam zrobilem drugi raz podobny program
ma on wyjac wyrazy z pliku ktore maja 4 lub wiecej liter i roznica polega na tym ze w poprzednim programie tworzylem tablice struktur statycznie a tu tworze tablice stringow program ma sprawdzac jakiej ma byc wielkosci czyli ile tych wyrazow 4 literowych i wiecej jest w danym tekscie ale cos mi nie dziala jakis blad pamieci ;/;/

#include <iostream> #include <fstream> #include <string> using namespace std; int wielkosc_tablicy(char *in) { string tekst; ifstream plik; plik.open(in); int dlugosc = 0; while(plik>>tekst) {  int licz = 0;  int dlugosc = 0;  for(int i=0; tekst[i] != 0; ++i)  {   licz = licz + 1;   if(licz >=4) dlugosc = dlugosc +1;    } } plik.close();  if(dlugosc > 1000) return 0;  return dlugosc; }   int sprawdzenie(string tekst) { int licznik = 0; for(int i=0; tekst[i] != 0; ++i) {  licznik++; } if(licznik >= 4 ) return 1; else return 0; } void pobranie(string tekst,char *in,string *tab,int q) { int i = 0; tab = new string [q]; ifstream plik; plik.open(in); while(plik>>tekst) {  if(sprawdzenie(tekst))  tab[i] = tekst;  i++; } plik.close(); } void wypisanie(string *tab,int q) { string tekst; for(int i=0;i<q;++i) {  cout<<i<<"."<<tab[i]; } } int main(int argc,char **argv) { string *tab; string tekst; if(argc < 2) {  cerr<<"Blad . Za malo parametrow "; } int q = wielkosc_tablicy(argv[1]); pobranie(tekst,argv[1],tab,q); wypisanie(tab,q); return 0; }
Uytkownik Chudyyy edytowa ten post 23 czerwiec 2006, 08:49
while(plik>>tekst)
wydaje mi si, e takie co nie moe by...

Poza tym moesz atwo omin t ptelk, bo std::string ma skadow length(), ktra zwraca ilo znakw.



;/;/ pierwszy kod dziala a while(plik>>wyraz) jest w kodzie nie dziala sortowanie dobrze ze wzgeldu na sortowanie pomyslilem sie z przypisaniem zmiennej do indeksu tablicy ale tak wszyskto jest ok

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •