Wczytanie liczb z tablicy char

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?

0

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

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.

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

0

W tablicy są również przecinki i spacje

0

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

0

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

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.

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;
}


0

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

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.

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