Konwersja char na int oraz nie wyświetlanie znaków typu char

0

Witam. Konwersję w sumie opanowałem sposobem jawnym (char na int). Teraz, nie wiem jak, ale potrzebuję wyświetlanie tylko i wyłącznie zmiennych typu int(chcę, żeby były wyświetlane tylko liczby lub żeby do tablicy były wpisywane tylko liczby). Podaję program który aktualnie stworzyłem i proszę o poprawki:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int i = 0;
    int koniec;
    char znak;
    char znaki[i];
    int liczby[i];
    do 
    {
            cin >> znak;
            znaki[i]=znak;
            i++;
    } while( znak!='*' );
    koniec = i - 1;
    i = 0;
    // wypisanie wszystkiego
    for( int j = 0; j < koniec; j++ )
    {
            cout << znaki[i] << " ";
            i++;
    }
    cout << endl;
    // wypisanie liczb
    i = 0;
    for( int j = 0; j < koniec; j++ )
    {
            liczby[i] = (znaki[i]) - '0';
            cout << liczby[i] << " ";
            i++;
    }
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
0

Chcesz mieć tablicę intów rozumiem. A wczytywać tak długo jak się pojawiają liczby czy do znaku '*'?

0

co to za kod? Deklarujesz sobie tablicę znaków w dziwny sposób przez podanie jej rozmiaru przez zmienna, którą inicjalizujesz zerem:

int i = 0;
char znaki[i];

Pomijając fakt, że lepiej aby rozmiar tak deklarowanej tablicy był podawany przy pomocy stałej (oczywiście nie powołuje się na standard bo Azarien tego nie znosi :) ) to tablica ta ma rozmiar 0, jednak w pętli "do while" wychodzisz poza tablicę. Czasem ci to zadziała jednak czasem nie będzie ci działać. Poza tym po co jest ten if z break? Co tam miało być?

0

Ten if akurat tu jest zbędny, zaraz go poprawię. A tak jak winerfresh powiedział, tablica ma się kończyć po wpisaniu właśnie '*'. Podam może treść zadania, będzie prościej.

Zad. 1. Dany jest ciąg elementowy znaków zakończony gwiazdką. Napisz program, który przepisze ten ciąg następująco:
przepisze wszystkie cyfry,
grupy znaków spacji przepisze jako jedną spację,
pozostałe znaki będą piminięce.

Przykładowe dane:
Wejście: 123…55xxc..yyyy….*
Wyjście: 123.55.

0

do takich zadań stosuj klasę string, masz tam takie ciekawe metody rodzaju "find_first_of", możesz również wykorzystać stringstream'a. Jest to wygodniejsze i po to zostało stworzone :)

0

Pomijając fakt, że lepiej aby rozmiar tak deklarowanej tablicy był podawany przy pomocy stałej
błąd jest w tym, że ta tablica już zerowa pozostaje: późniejsza inkrementacja i++ rozmiaru tablicy nie zwiększa.

do takich zadań stosuj klasę string
dokładnie.

0

Uczę się c++ od nie dawna, więc nie znam jego wszystkich tajników, ale popracowałem trochę nad tym programem i udało mi się napisać program,który wypisuje same liczby z tego ciągu elementów. O to kod:

#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
    int i=0;
    int koniec;
    char znak;
    char znaki[100];
    cout<<"Podawaj kolejne znaki: ";
    do
    {
         cin>>znak;
         znaki[i]=znak;
         i++;
    } while(znak!='*');
    koniec=i-1;
    i=0;
    cout<<"\nWszystkie elementy to: ";
    for (int j=0; j< koniec; j++)
    {
        cout<< znaki[i] << " ";
        i++;
    }
    cout<<endl;
    i=0;
    cout<<"\nSame liczby to: ";
    for(int j=0;j<koniec;j++,i++)
    {
            bool ostatni_znak_to_spacja=false;
            if((int)znaki[i]>47 && (int)znaki[i]<58)
            {
                                 cout<< znaki[i];
                                 ostatni_znak_to_spacja=false;
            }
            if((int)znaki[i]==32)
            {
                                 if(ostatni_znak_to_spacja);
                                 else cout<<" ";
            }
    }
    cout<<endl;
    system("pause");
    return 0;
}

Program miał zamieniać kilka spacji na jedną ,lecz niestety mi się to nie udało;( Chociaż,że uwzględniłem to w kodzie,program zachowuje się tak jakby w ogóle nie czytał spacji jako znaku. Pewnie gdzieś zrobiłem coś źle,ale jak wspomniałem wyżej c++ uczę się od nie dawna.
Co to dej tablicy ustawiłem ją domyślnie na 100 elementów, nie wiem jak ją ustawić aby miała tyle elementów ile znaków, bo nie przerabiałem jeszcze tablic.
Mam nadzieje,że trochę pomogłem ;D

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