zależności między namespace

0

witam, ma problem z funkcją która szuka zależności między namespace, nie mieliśmy lepszego pomysłu niż ten poniżej, ale problem pojawia się tu że nie wchodzi nam program zupełnie do pierwszego ifa przez co nie dostajemy pożadanego rezultatu ma ktoś może pomysł czemu tak się dzieje? https://pastebin.com/Uk70fbtn

4
		int i = 0, j = 0;
		string *nm = new string[i];
		string *unm = new string[j];

Jaką wielkość mają te tablice?

				string szukany, szukany1;
				size_t gdzie = linijka.find(szukany);
				size_t gdzie1 = linijka1.find(szukany1);

Co tu jest szukane?

				if (linijka.find("namespace") != string::npos && linijka.find("{") != string::npos && linijka.find("find") == string::npos && linijka.find("cout") == string::npos)

Opisz słowami jakiej linii szukasz (jakie słowa zawiera, jakich nie zawiera). Może masz błędy w warunku.

						nm[i] = nazwa_pliku;
						i++;
 
						unm[j] = nazwa_pliku1;
						j++;

W związku z pierwszym fragmentem ciężko powiedzieć gdzie lądują te dane.

Jeżeli ten post nie wyląduje w koszu to niewiele się poradzi bez reszty kodu oraz przykładowych plików z danymi.

1
Gab Riela napisał(a):

witam, ma problem z funkcją która szuka zależności między namespace, nie mieliśmy lepszego pomysłu niż ten poniżej, ale problem pojawia się tu że nie wchodzi nam program zupełnie do pierwszego ifa przez co nie dostajemy pożadanego rezultatu ma ktoś może pomysł czemu tak się dzieje? https://pastebin.com/Uk70fbtn

  1. podaj treść problemu jaką ma rozwiązywać ten kod
  2. jaki jest oczekiwany i faktyczny wynik działania tego kodu
  3. podaj więcej kodu (najlepiej cały).
  4. formatuj kod jakoś bardziej sensownie: http://format.krzaq.cc/
  5. dziel kod na małe problemy - funkcje
  6. już sama pętla while (!plik.eof()) jest źle, szczególnie, że zaraz potem robisz: getline(plik, linijka); i getline(plik, linijka1); https://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-i-e-while-stream-eof-cons
  7. oczywisty bug: string* nm = new string[i]; a parzcież int i = 0, j = 0;
  8. https://dsp.krzaq.cc/post/176/ucze-sie-cxx-kiedy-uzywac-new-i-delete/
  9. kod lepiej umieszczać w treści pytania:
void relation5()
{
    int i = 0, j = 0;
    string* nm = new string[i];
    string* unm = new string[j];

    cout << endl
         << "______________" << endl;
    for (auto it = pliki.begin(); it != pliki.end(); it++) {
        ifstream plik(*it);

        while (!plik.eof()) {
            string linijka, linijka1;
            getline(plik, linijka);
            getline(plik, linijka1);

            string szukany, szukany1;
            size_t gdzie = linijka.find(szukany);
            size_t gdzie1 = linijka1.find(szukany1);

            if (linijka.find("namespace") != string::npos && linijka.find("{") != string::npos && linijka.find("find") == string::npos && linijka.find("cout") == string::npos) {
                gdzie += szukany.size();
                string nazwa_pliku = linijka.substr(gdzie);

                if (linijka1.find("using") != string::npos && linijka1.find("namespace") != string::npos) {
                    gdzie1 += szukany1.size();
                    string nazwa_pliku1 = linijka1.substr(gdzie1);

                    nm[i] = nazwa_pliku;
                    i++;

                    unm[j] = nazwa_pliku1;
                    j++;
                }
            }
        }

        for (int a = 0; a < i; a++) {
            for (int b = 0; b < j; b++) {
                cout << nm[i] << " -> " << unm[j] << endl;
            }
        }
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1