Wczytanie liczb z tablicy char

Odpowiedz Nowy wątek
2017-12-10 14:31

Rejestracja: 2 lata temu

Ostatnio: 2 lata temu

0

Mam tablicę char, której wartości po kolei wynoszą (0, 4, 7, 22, 25) tylko bez nawiasów. Jest jakaś funkcja albo sposób, żeby przepisać poszczególne liczby do drugiej tablicy?

Pozostało 580 znaków

2017-12-10 14:40

Rejestracja: 13 lat temu

Ostatnio: 1 dzień temu

0

no operator []. Czy co ty chcesz zrobić konwersje char => int?


We are the 4p. Existence, as you know it, is over. We will add your biological and technological distinctiveness to our own. Resistance is futile
edytowany 1x, ostatnio: revcorey, 2017-12-10 14:40

Pozostało 580 znaków

2017-12-10 14:47

Rejestracja: 2 lata temu

Ostatnio: 4 miesiące temu

0

Mam tablicę char, której wartości po kolei wynoszą (0, 4, 7, 22, 25) tylko bez nawiasów.

Pokaż to w formie kodu, bo ten opis nic nie mówi. char przechowuje jeden znak, więc 22 nie może być przechowane.
Natomiast, gdyby to były wartości kodu ASCII, wartości spoza przedziału 32 - 126, są znakami niedrukowalnymi.


Nie pisz na priv. Zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: YooSy, 2017-12-10 14:48

Pozostało 580 znaków

2017-12-10 14:48

Rejestracja: 2 lata temu

Ostatnio: 2 lata temu

0

W programie tworzę tablicę char przez cin.getline i założmy, że gdy wpisuję 1, 4, 5, 6 to chcę żeby przepisało same liczby do drugiej tablicy. Mógłbym użyć funkcji isdigit(), tylko że problem pojawia się gdy występują liczby dwucyfrowe

Bo char przechowuje jeden znak. - YooSy 2017-12-10 14:49

Pozostało 580 znaków

2017-12-10 14:49

Rejestracja: 2 lata temu

Ostatnio: 2 lata temu

0

W tablicy są również przecinki i spacje

Pozostało 580 znaków

2017-12-10 14:51

Rejestracja: 2 lata temu

Ostatnio: 4 miesiące temu

0

Daj przykładowe dane wejściowe i dane wyjściowe dla tego zestawu.


Nie pisz na priv. Zadaj dobre pytanie na forum.

Pozostało 580 znaków

2017-12-10 14:56

Rejestracja: 2 lata temu

Ostatnio: 2 lata temu

0

Wejście: 0, 5, 8, 24 czyli razem z przecinkami i spacjami
Wyjście: {0, 5, 8, 24} a tutaj same wartości

Pozostało 580 znaków

2017-12-10 14:58

Rejestracja: 2 lata temu

Ostatnio: 4 miesiące temu

0

Czy posiadasz już jakieś próby kodu?

Zadeklaruj tablicę wartości liczbowych int nums[size].
ostringstream do użycia, jako strumień danych z łańcucha.
Operatorem >> wczytuj do tablicy liczb. Jeśli nie uda się wczytać, pomiń znak i znów wczytaj,
aż do odczytania wszystkich znaków.


Nie pisz na priv. Zadaj dobre pytanie na forum.
edytowany 3x, ostatnio: YooSy, 2017-12-10 15:02

Pozostało 580 znaków

2017-12-10 15:23

Rejestracja: 2 lata temu

Ostatnio: 2 lata temu

0

Mój kod wygląda tak. Ogólnie program ma obliczać część wspólną kilku zbiorów, gdzie na wejściu zapisuję wzór w ONP typu {1, 4, 6, 10} {2, 4, 5, 6} *. Na razie program stworzył mi dwuwymiarową tablicę char gdzie wiersz przypada poszczególnemu zbiorowi między nawiasami klamrowymi

#include <iostream>
#include <conio.h>
#include <cstring>
#include <ctype.h>
using namespace std;

int main(){
    int k=0, m=0;
    int dlug[100], nums[100];
    char tablica[100][100];
    char wzor[100];
    cout<<"Podaj wzor do rozwiazania: ";
    cin.getline(wzor, 100); cout<<endl;
    for(int i=0; i<100; i++){
        a:
        if(wzor[i]=='{'){
            for(i; i<100; i++){
                if(wzor[i+1]=='}'){
                dlug[m]=k;
                m++; k=0;
                goto a;
                }
                tablica[m][k]=wzor[i+1];
                k++;

                }
            }
        }
    for(int i=0; i<m; i++){
        for(int j=0; j<dlug[i]; j++){
            cout<<tablica[i][j];
        }
        cout<<endl;
    }
    getch();
    return 0;
}

Pozostało 580 znaków

2017-12-10 15:30

Rejestracja: 2 lata temu

Ostatnio: 2 lata temu

0

Mógłbyś łopatologicznie wytłumaczyć jak użyć ostringstream?

Tam miał być stringstream, ogólnie. - YooSy 2017-12-10 17:13

Pozostało 580 znaków

2017-12-10 17:13

Rejestracja: 2 lata temu

Ostatnio: 4 miesiące temu

2

Przykład:

#include <iostream>
#include <sstream>
#include <vector>

int main()
{
    const char* cstr = { "0, 5, 8, 24" };
    std::istringstream iss{ cstr };
    std::vector<int> nums;
    int tmp;
    while (!iss.eof())
    {        
        if (iss >> tmp)
        {
            nums.push_back(tmp);
        }
        else
        {
            iss.clear();
            iss.ignore();
        }
    }
    for (auto const& num : nums)
    {
        std::cout << num << ' ';
    }
    std::cout << std::endl;
} 

lub samo wypisanie bez kontenerowania danych:

#include <iostream>
#include <sstream>

int main()
{
    const char* cstr = { "0, 5, 8, 24" };
    std::istringstream iss{ cstr };
    int tmp;
    while (!iss.eof())
    {        
        if (iss >> tmp)
        {
            std::cout << tmp << ' ';
        }
        else
        {
            iss.clear();
            iss.ignore();
        }
    }
    std::cout << std::endl;
} 

http://en.cppreference.com/w/cpp/container/vector
http://en.cppreference.com/w/cpp/io/basic_istringstream

https://wandbox.org/permlink/r8PiOJA3Y4MdiwWl

Tablice dwuwymiarowe można załatwić w ten sposób.


Nie pisz na priv. Zadaj dobre pytanie na forum.
edytowany 4x, ostatnio: YooSy, 2017-12-10 17:30

Pozostało 580 znaków

Odpowiedz

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