Skocz do zawartości
Awit

C++ Pobranie Liczby Do Tablicy

Rekomendowane odpowiedzi

Mam pytanie jak do tablicy znaków np. unsigned int tablica[30]

Wpisać ciąg 30 znaków

 

 

Ma to wyglądać tak:

 

Podaj liczbę: 223345634563456356787657651111 (liczba podana przez uzytkownika)

i za pomocą czego wpisać tą liczbe do tablicy?

 

Druga sprawa co zrobić by program pobierał tylko cyfry(przy literach informował o nieprawidłowości). Oraz był w stanie poinformować o za małej/ za dużej liczbie cyfr.

 

#include<..>using namespace std;int main(){	 int tablica[30]cout<<"Podaj liczbę: ";//i nie stety nie wiem co zrobić by pobrał całą 30 cyfrową liczbę... a pobieranie w takim stylu po jednej cyfrze odpada...for(int i=0, i < 30; i++){ cout>> tablica[i];suma += tablica[i];}
Edytowane przez Awit

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ok poradziłem sobie z tym...

 

teraz jeszcze pytanie...

 

Czy możliwe jest aby _getch pobierał tylko na wpisywane cyfry?

 

Co oznacza żeby miał reagować tylko na znaki ASCII od 48 do 57

spojrz na tablice ASCII : http://pl.wikipedia.org/wiki/Ascii

 

tzn ma reagowac jedynie na cyfry :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ale co znaczy miałby reagować... To Ty jesteś programistą, więc to Twój program powinien reagować na to na co ma reagować... Więc getch niech zwraca co mu bufor klawiatury prawowicie daje, a Twój program powinien na litery zareagować w jedne sposób, na cyfry w inny. Słyszał kiedyś o pętlach i instrukcjach warunkowych, coś takiego jak do, while, if else ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

staram się zmusić do myślenia podpowiadając hasła. Nie ma nic gorszego jak programista piszący kod BO_TAK_TRZEBA, który nie wie dlaczego tak trzeba :). Jeśli autor nie wie nadal jak to zrobić, proponuję narysować sobie algorytm na kartce...

 

1. pobieranie znaku (getch)

2. jeśli znak nie jest cyfrą (isdigit), wróć do 1 (if, while, o goto nie wspominam bo nie wypada)

3. w przeciwnym razie (else) wykonaj odpowiednią część kodu

 

żeby nie było, że wujek zły i cukierka nawet nie da

Edytowane przez PelzaK

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

staram się zmusić do myślenia podpowiadając hasła. Nie ma nic gorszego jak programista piszący kod BO_TAK_TRZEBA, który nie wie dlaczego tak trzeba :). Jeśli autor nie wie nadal jak to zrobić, proponuję narysować sobie algorytm na kartce...

 

1. pobieranie znaku (getch)

2. jeśli znak nie jest cyfrą (isdigit), wróć do 1 (if, while, o goto nie wspominam bo nie wypada)

3. w przeciwnym razie (else) wykonaj odpowiednią część kodu

 

żeby nie było, że wujek zły i cukierka nawet nie da

goto sie nie uzywa :P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Twój post skłonił mnie do tego,że postanowiłem napisać algorytm zamieniający wprowadzoną wartość typu liczbowego(nie łańcuch znakowy) na tablice wartości liczbowych będacych cyframi tej liczby :) . Zaletą tego jest min to,że nie musisz z góry deklarować rozmiaru tablicy. Jeśli cię to interesuje to wygląda to tak -

int l;

cout<<"podaj liczbe"<<"\n";

cin>>l;

int d=l;

int p=1;

while(d=d/10) //tyle razy ile dzieli się przez 10 z częścią całkowitą w wyniku dzielenia

// stanowi wartość wykładnika maksymalnych liczb będących potęgą dziesiątki

// mieszczących się w tej liczbie tym samym wiemy na ilu pozycjach miesci sie

//podana liczba należy jeszcze tylko dodac do tego 1 aby uwzględnić również

//ostatnią pozycje jedności

p++;

 

int t[p]; //znamy już liczbe pozycji więc tworzymy tablice o takim rozmiarze

int k=p-1;

do

{

 

d=l%10; //odkładamy odpowiednie wartości na odpowiednich pozycjach,począwszy od ostatniej

t[k]=d; //czyli pozycji jedności kończąc na pozycji drugiej od początku

k--;

l=l/10;

 

}

while (l>=10) //gdy warynek niespełniony to l zawiera cyfre pierwszej pozycji

;

t[k]=l; //którą teraz zapisujemy w pierwszym elemencie tablicy

 

 

 

 

for(int i=0;i<p;i++) //ta część zby sprawdzić że algorytm działą dobrze

cout<<t;

cin.get();

getchar();

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...