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

Tworzenie zmiennej przez użytkownika?

Object Storage Arubacloud
+2 głosów
387 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,640 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 (33,970 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 (287,950 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ź 568 wizyt
0 głosów
1 odpowiedź 2,614 wizyt

92,551 zapytań

141,399 odpowiedzi

319,531 komentarzy

61,938 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!

...