Pobieranie zmiennych nieokreslonej ilosci

0

Kazdy umie chyba pobrac dane z pliku..to łatwe

Jak natomiast pobrac zmienne jak na przykładzie?:

1.Mam plik.txt --> w nim zapisane (nie wiadomo ile) tu np. (4 liczby):
2345 4632 1243 0987

2.chcĘ wczytac te liczby tak (nie wiedząc oczywiscie ze sa jak w tym wypadku 4 cztery ciągi cyfr),by kazdy ciąg tych cyfr przypisany został do innej zmiennej np. 2345=a; 4632=b itd...

(liczby bedą miały zawsze 2,3 lub 4 cyfry, a więc w pliku textowym muszą byc oddzielone przecinkiem kropka albo po prostu spacja i tu jest pies pogrzebany.

Jak zawsze prosze o pomoc albo chociaz o realna podpowiedz.

0
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cctype>

using namespace std;

int main()
{
  ifstream plik_we("C:\\test.txt");
  vector <unsigned> liczby;
  string linia;

  while ( getline(plik_we, linia) )
  {
    unsigned i = 0;

    while (i < linia.size())
    {
      if ( isdigit(linia[i]) )
      {
        unsigned liczba = 0;

        while ( isdigit(linia[i]) )
        {
          liczba = 10 * liczba + (linia[i] - '0');
          i++;
        }
        liczby.push_back(liczba);
        i--;
      }
      i ++;
    }
  }

  for (int i = 0; i < liczby.size(); i++)
   cout << liczby[i] << endl;

  cin.get();
  return 0;
}
0

Niestety, u mnie to nie pojdzie. Po zmianie nazw wyskakuje tylko jeden bład ,nie do przełknięcia (chyba). Udało mi sie sciągnąć borlanda 3.1 (error:must use c++ for the type iostream),wiec trzeba pewnie jakiejs innej wersji by ten kod powyzej ruszył.

,dziekuje za szybką odpowiedz,próbuje to jakos przebudowac,choć widze całkiem mi nowe rzeczy, Thx.

0

Radze sie przeniesc na cos nowszego kilka darmowych srodowisk to np. MinGW Developer Studio, BCB 6.0 PE, Dev-C++, ...

0

Nie udało mi sie tego przebudowac.Juz triala sciągam.

Ale jesli znajdzie sie jakas tega głowa ,co potrafi mi podpowiedziec jak to co w temacie w borlandzie 3.1 napisac , bede wdzieczy.

:-/

0

Masz kod w C, powinien dzialac bez problemu.

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

typedef struct _Lista
{
  unsigned int liczba;
  struct _Lista *nast;
} *Lista;

void Dodaj(Lista *, unsigned int);
void Usun_Liste(Lista *);

void main(void)
{
  FILE *plik = fopen("C:\\test.txt", "rt");
  int znak;
  Lista lista = NULL,
        p = NULL;

  while ((znak = fgetc(plik)) != EOF)
  {
    if ( isdigit(znak) )
    {
      unsigned int liczba = 0;

      while ( isdigit(znak) )
      {
        liczba = 10 * liczba + (znak - '0');
        znak = fgetc(plik);
      }
      Dodaj(&lista, liczba);
    }
  }
  fclose(plik);

  p = lista;
  while (p)
  {
    printf("%u\n", p->liczba);
    p = p->nast;
  }

  Usun_Liste(&lista);
  system("Pause > NUL");
};

void Dodaj(Lista *glowa, unsigned int co)
{
  if ( !*glowa )
  {
    (*glowa) = (Lista) malloc(sizeof(struct _Lista));
    (*glowa)->liczba = co;
    (*glowa)->nast = NULL;
    return;
  }
  Dodaj(&((*glowa)->nast), co);
}
void Usun_Liste(Lista *glowa)
{
  if ( !*glowa )
   return;
  Usun_Liste(&((*glowa)->nast));
  free(*glowa);
  *glowa = NULL;
}

Co do tej wersji trial, to co Ty sciagasz? Przeciez to co podalem to wersje pelne i darmowe.

0

jakie masz rozszerzenie zrodla ?? *.c ?? jak tak to zmien na *.cpp i sprawdz czy dalej masz ten blad.

0

Sciagałem ze strony borlanda buildera enterpr..... cos około 177 MB byc moze i nie trial. Po sciągnięciu okazało sie ze archiwum ist corupted hehe.

Jesli chodzi o kod to niby działa ale nie działa(tylko mi ?)
Nie wyskakuja zadne błedy kompilacji,ale to wszystko - z tego co widze powinien te zmienne jeszcze wyswietlic ? jesli tak to tak nie jest . A jesli nie To jak nazwac poszczególne zmienne by je móc wyswietlic?

Dzieki za prace włozona przez ciebie.

no more question..

0

Jesli program sie uruchamia i nic nie widac to jedyne co mi przychodzi do glowy to brak pliku C:\test.txt z liczbami lub brak w nim liczb.

0

Huh rzeczywiscie utwozyłem za długą nazwe pliku ..faktycznie wyswietla..Thx

A da sie przypozadkowac wczytanym liczbą role zmiennych ?

Czyli wczytało mi wszystkie liczby . i teraz

if (posrod wczytanych jest liczba) 1314
1314=a
gotoxy(10,20);
cout<< a;

itd ....

w programie to nie wychodzi ,czyli wnioskuje ze liczby te nie tworza zmiennych, pytanie jest czy moga tak jak wyzej?

0

Dla ktorej wersji z wektorem, czy z lista?

0

Dla tej drugiej czyli z listą.

moje proby koncza sie na tym ze jak podam cout<<liczba; to wyswietli ja czy ona jest czy nie,jako zwykły tekst a ma wyswietlac tylko te liczby wczytane , dla kazdej podam odpowiednie parametry gotoxy ,dlatego potrzebuje je miec jako zmienne.

0

Troche sie pogubilem, najlepiej odezwij sie na gg, ale jesli chodzi tylko o wyszukiwanie na liscie to:

int Szukaj(Lista glowa, unsigned int co)
{
  while (glowa)
  {
    if (glowa->liczba == co)
     return 1;
    glowa = glowa->nast;
  }
  return 0;
}
0

Wielkie dzięki dla foflika.
Chyle czoło.

1 użytkowników online, w tym zalogowanych: 0, gości: 1