Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zapis do pliku oraz odczyt z niego na funkcjach

Ostatnio zmodyfikowano 2016-12-11 23:42
Autor Wiadomość
Mashnar
Temat założony przez niniejszego użytkownika
Zapis do pliku oraz odczyt z niego na funkcjach
» 2016-12-11 22:00:09
Zacząłem pisać taki programik , który będzie odczytywał zapisywał z klawiatury jakieś dane z pliku i wyświetlał na ekranie ( liczby zmiennoprzecinkowe)

Bez funkcji mi działał, ale jak wsadziłem ( narazie tylko wyswietlanie i odczyt z pliku) do funkcji, to coś nie działa

Wstawiam kod.


C/C++
#include <iostream>
#include <cstdlib>
#include<cstdio>
#include<fstream>
using namespace std;
void wczytaj_z_pliku( char nazwa_plik[], float tablica[], int ilosc )
{
    fstream plik;
    plik.open( nazwa_plik, ios::in );
    if( plik.good() == true )
    {
       
       
        for( int i = 0; i < ilosc; i++ )
       
             plik >> tablica[ i ];
       
        plik.close();
    }
   
}
void wyswietl( float tablica[], int ilosc )
{
    for( int i = 0; i < ilosc; i++ )
    {
        cout << tablica[ i ] << endl;
    }
   
}

int main()
{
    int ilosc;
    char z;
    float * wsk_t;
    int n;
    wsk_t = new float[ n ];
    char n_plik[ 20 ];
    cout << "Ile danych wczytac" << endl;
    cin >> n;
   
    cout << "podaj nazwe pliku" << endl;
    cin >> n_plik;
    do {
        cout << "Co chcesz zrobic?" << endl;
        cout << "1: Wczytaj z pliku" << endl;
        cout << "2: Wczytaj z klawiatury" << endl;
        cout << "3: Wyswietl" << endl;
        cout << "4: Zapisz do pliku" << endl;
        cout << "5: Koniec" << endl;
        cin >> z;
        switch( z )
        {
        case 1:
            wczytaj_z_pliku( n_plik, wsk_t, n );
            wyswietl( wsk_t, n );
            break;
        case 2:
           
            break;
           
        case 3:
            break;
           
        case 4:
            break;
           
           
           
        }
       
       
       
    } while( z != 5 );
   
}
P-154792
Szustarol
» 2016-12-11 22:27:41
funkcje pracują na kopiach zmiennych
to już powinno Ci objaśnić sytuację :)
P-154796
Mashnar
Temat założony przez niniejszego użytkownika
» 2016-12-11 23:06:02
w sensie że chodzi o float tablica w deklaracji funkcji?

Zmieniłem na inne i nadal to samo..

Tak samo ta pętla do while coś zle działa , chociaż jak dla mnie powinno być ok.. Ale co ja tam sie znam, początki.
P-154804
michal11
» 2016-12-11 23:16:17
Pokaż fragment pliku.

C/C++
float * wsk_t;
int n;
wsk_t = new float[ n ];

zastanów się co tu robisz i jaką wartość ma n w momencie alokacji tablicy.
P-154807
Mashnar
Temat założony przez niniejszego użytkownika
» 2016-12-11 23:19:07
https://gyazo.com/349f2d4276d64ecf3582a91cf2b2cb5c

to jest cały ten plik

Hmm..no tutaj ma być liczba tych elementów które podaje pozniej...wyzerować trzeba na początku?
P-154808
michal11
» 2016-12-11 23:38:04
Jeżeli wyzerujesz to stworzysz tablice która ma zero elementów.

Zamień typ z z char na int, twój case 1 w switch w ogóle nie wchodził ( ponieważ kod cyfry 1 jest inny od 1 ). Pamiętaj żeby wpisywać nazwę pliku z rozszerzeniem.
P-154810
Mashnar
Temat założony przez niniejszego użytkownika
» 2016-12-11 23:42:32
Dziwne..zawsze robiłem w casie z charem i jezdziło ale jak zmieniłem na int to jest ok :P Dziękuje, nie zamykam bo może jeszcze bede potrzebował pomocy

No tak..przecież char to są znaki a nie liczby... głupi bład.
P-154811
« 1 »
  Strona 1 z 1