• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

problem cz ytaniem programu

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
500 wizyt
pytanie zadane 13 maja 2020 w C i C++ przez Atman Użytkownik (810 p.)

Nasze zadanie to pracowanie na pliku tekstowym i dalsza obróbka jednak nie wiem dlaczego podany program wyświetla błąd w linijce z ifstream p(sciezkaDoPliku). Pracuję w CodeBlocku bo nie mam dojścia do Visuala ale koleżance w Visualu działa. Czym to może być spowodowane?

#include <string>
#include <fstream>
#include <iostream>

using namespace std;

float* OdczytajMacierzZPliku(std::string sciezkaDoPliku, int& szerokosc, int &wysokosc)
{
  szerokosc = 0;
  wysokosc = 0;

  // otwieramy plik do odczytu ifstream == input
  ifstream p(sciezkaDoPliku);
  // sprawdzamy czy plik jest otwarty
  if (!p.is_open())
     return nullptr;

  p >> szerokosc;
  p >> wysokosc;


  int rozmiarTablicy = szerokosc * wysokosc;
  float* tab = new float[rozmiarTablicy];

  for (int y = 0; y < wysokosc; ++y)
  {
     for (int x = 0; x < szerokosc; ++x)
     {
      // musimy przeliczyc indeks w tablicy
      int indeks = y * szerokosc + x;
      p >> tab[indeks];
     }
  }

   // musimy zamknac plik
    p.close();

    return tab;
    }

int main()
{

    string sciezkaDoPliku = "macierz.txt";
    int szerokosc = 0, wysokosc = 0;
    float* tab = OdczytajMacierzZPliku(sciezkaDoPliku, szerokosc, wysokosc);
    // w celach testowych wyswietl zawartosc na ekran

    for (int y = 0; y < wysokosc; ++y)
    {
      for (int x = 0; x < szerokosc; ++x)
      {
         // musimy przeliczyc indeks w tablicy
         int indeks = y * szerokosc + x;
         cout << tab[indeks] << "\t";
      }
       cout << std::endl;
    }

     // prosze pamietac o usunieciu tablicy !!!
     delete[] tab;

}

 

1 odpowiedź

0 głosów
odpowiedź 13 maja 2020 przez tkz Nałogowiec (42,020 p.)
Stara wersja kompilatora, zmień nazwę pliku z std::string na const char*.
komentarz 13 maja 2020 przez Atman Użytkownik (810 p.)
Ale nie ma takiej linijki w kodzie więc jak mam ją zamienić?
komentarz 13 maja 2020 przez Atman Użytkownik (810 p.)
Okej znalazłem ale teraz jest problem z nullptr. Pokazuje że nie zostało zdeklarowane
komentarz 13 maja 2020 przez dawid2002 Mądrala (5,190 p.)
Chodzi oto, że jak masz parametr "std::string sciezkaDoPliku" to masz zmienić na "const char* sciezkaDoPliku" (patrz linia 7). Chociaż moim zdaniem lepiej byłoby gdybyś w linii 13 zamienił sciezkaDoPliku na sciezkaDoPliku.c_str().
komentarz 13 maja 2020 przez tkz Nałogowiec (42,020 p.)
Tak naprawdę nie ma to większego znaczenia na co zmieni, byle był char. Po prostu starsza wersja konstruktora tylko to przyjmuje. Dlaczego używasz tablic w stylu C, a nie vectora?
komentarz 14 maja 2020 przez Atman Użytkownik (810 p.)
Taki program wysłała nam nasz pani jako podstawę do dalszej pracy. Nie wiem co nią kierowało ja tylko mam wykonac zadanie na tym programie więc nie moge do końca odpowiedzieć na to pytanie.
komentarz 14 maja 2020 przez tkz Nałogowiec (42,020 p.)
Odpowiadając na pytanie, zrób jak napisał Dawid, a będzie okey.

Podobne pytania

0 głosów
1 odpowiedź 186 wizyt
pytanie zadane 15 grudnia 2018 w Java przez Tom_Ja Dyskutant (7,970 p.)
0 głosów
2 odpowiedzi 1,590 wizyt
pytanie zadane 20 października 2018 w Java przez Kamyyylo Początkujący (460 p.)
0 głosów
1 odpowiedź 208 wizyt
pytanie zadane 25 października 2016 w C i C++ przez ewazdomu Początkujący (320 p.)

93,172 zapytań

142,184 odpowiedzi

321,965 komentarzy

62,496 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 918p. - dia-Chann
  2. 902p. - Łukasz Piwowar
  3. 901p. - CC PL
  4. 894p. - Łukasz Eckert
  5. 872p. - Michal Drewniak
  6. 867p. - Marcin Putra
  7. 858p. - rafalszastok
  8. 856p. - rucin93
  9. 842p. - Dawid128
  10. 840p. - Adrian Wieprzkowicz
  11. 830p. - Piotr Aleksandrowicz
  12. 826p. - Michał Telesz
  13. 819p. - Mariusz Fornal
  14. 814p. - Mikbac
  15. 812p. - TheLukaszNs
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...