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

problem cz ytaniem programu

Object Storage Arubacloud
0 głosów
437 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,000 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,000 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,000 p.)
Odpowiadając na pytanie, zrób jak napisał Dawid, a będzie okey.

Podobne pytania

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

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,940 pasjonatów

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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...