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

Tworzenie zmiennej przez użytkownika?

+2 głosów
133 wizyt
pytanie zadane 6 kwietnia 2015 w C i C++ przez Pitu Nowicjusz (140 p.)
Cześć,

Na samym początku powiem, że trudno mi sformuować o co chodzi, więc zrobię to w łopatologiczny spobób. Jak zrobić, by program pobierał od użytkownika jakąś liczbę, np. 2, i ją "zapamiętywał". Czyli, że przy następym uruchomieniu, użytkownik będzie mógł zobaczyć, jaką liczbę przedtem wpisał.

Albo inaczej: by użytkownik tworzył zmienną i nadawał jej wartość.

 

Taki śmieszny pomysł na jaki wpadłem, to zrobić tablicę jakichś liczb (dajmy na to int liczby[10];), zrobić jakiś licznik (int licz=0;), pobrać od użytkownika jedną komórkę z tablicy (cin>>liczby[licz++], zapisać ją (i zmienną licz)  do pliku tekstowego. Następnie program będzie wyświetlał, co w tym pliku tekstowym jest. Wiem, że jest błąd w tym rozumowaniu, bo licznik przy uruchamianiu będzie zawsze równy zero (nie jest to na pewno jedyny mankament), ale ogólny zarys tego co wymyśliłem chyba udało mi się przedstawić. I wolałem napisać swój pomysł, niż tak z pustymi rękami tworzyć temat. :)

Widzicie już jakbym musiał się z tym motać, więc proszę o jakieś zagadnienia dotyczące tego problemu, podpowiedzi i ogólnie, "co i jak".

PS A może tego nie da się "normalnie" zrobić?

3 odpowiedzi

+2 głosów
odpowiedź 6 kwietnia 2015 przez Harsay Pasjonat (23,380 p.)

"Zapamiętywanie zmiennych" można wykonać poprzez zapisywanie wartości do pliku tekstowego i wczytanie jej ponownie przy kolejnym uruchomieniu programu.

W tym przypadku wykorzystamy klasę std::ofstream (do zapisu pliku) oraz std::ifstream (do odczytu pliku)

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

int main()
{

    std::ofstream zapis;
    std::ifstream odczyt;
    std::string poprzedniaZmienna;
    int zmienna = 0;

    odczyt.open("zapisane.txt");

    if(odczyt.is_open())
    {
        std::getline(odczyt, poprzedniaZmienna);
        std::cout << "Poprzednia zmienna: " << poprzedniaZmienna << std::endl;
        odczyt.close();
    }
    else
    {
        std::cout << "Problem z odczytaniem pliku." << std::endl;
    }

    zapis.open("zapisane.txt");

    if(zapis.is_open())
    {
        std::cout << "Wpisz zmienna: ";
        std::cin >> zmienna;
        zapis << zmienna;
        zapis.close();
    }
    else
    {
        std::cout << "Problem z zapisem do pliku." << std::endl;
    }
}

W tym wypadku można zapisać jedną zmienną, ponieważ przy tworzeniu nowego zapisu nadpisywany jest plik.

Jeżeli chcesz przykład z zapamiętywaniem kilku zmiennych - wal śmiało :)

0 głosów
odpowiedź 6 kwietnia 2015 przez hit02 Nałogowiec (34,210 p.)
Ja nie widzę problemów. Zapisujesz zmienne do pliku w jakimś formacie. Na przykład

4 bajty licznik

10 * 4 bajty tablica

(4, bo int zazwyczaj ma 4 bajty), a przy następnym uruchomieniu wczytujesz wszystko z pliku.
0 głosów
odpowiedź 6 kwietnia 2015 przez Arkadiusz Waluk Ekspert (250,210 p.)

Szczerze mówiąc to nie bardzo rozumiem o co Ci chodzi...

przy następym uruchomieniu, użytkownik będzie mógł zobaczyć, jaką liczbę przedtem wpisał

Nie widzę tutaj innego sposobu jak zapis zmiennej do pliku. Nie wiem więc po co użytkownik miałby "tworzyć zmienną" skoro zostanie ona utworzona przez program a jej wartość którą ostatnio podał użytkownik zostanie wczytana z pliku.

No chyba, że źle coś zrozumiałem? Mógłbyś napisać do czego chcesz użyć tego sposobu to wtedy na pewno łatwiej będzie mi i może innym zrozumieć?

Podobne pytania

0 głosów
1 odpowiedź 64 wizyt
0 głosów
1 odpowiedź 982 wizyt
Porady nie od parady
Pytania na temat serwisu SPOJ należy zadawać z odpowiednią kategorią dotyczącą tej strony.SPOJ

66,384 zapytań

113,133 odpowiedzi

239,497 komentarzy

46,640 pasjonatów

Przeglądających: 139
Pasjonatów: 0 Gości: 139

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...