• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

problem z liczbami parzystymi w tablicach

Object Storage Arubacloud
0 głosów
152 wizyt
pytanie zadane 14 kwietnia 2018 w C i C++ przez majkelmatusaf Nowicjusz (120 p.)

witam,

mam do napisania program który zamieni dowolną liczbę całkowitą na liczbę systemu szóstkowego. Program ma też policzyć ile jest cyfr (parzystych i nieparzystych) w nowo powstałej liczbie.

Udało mi się zrobić tą część z zamianą systemu na 6-kowy ale jak dalej zrobić to z liczeniem liczb?

#include <iostream>

using namespace std;

int main()
{
	int i=0,n,tab[32]={0},liczba;
	cout << "podaj liczbę calkowita: ";
	cin >> liczba;
	while(liczba>0)
	{
		tab[i] = liczba%6;
		liczba = liczba/6;
		i++;
	}
	n=i-1;
	for(i=n;i>=0;i--) cout << tab[i];
	return 0;
}

1 odpowiedź

+1 głos
odpowiedź 14 kwietnia 2018 przez Snejki Stary wyjadacz (14,520 p.)

W każdym elemencie twojej tablicy sprawdzasz warunek

if(tab[i] %2 == 0) ilParz++;

, gdzie ilParz to dodatkowa zmienna int, która zliczy ile lcyfr parzystych jest w twojej liczbie.

Oczywiście if,a umieszczasz w pętli, która iteruje po wszystkich elementach tablicy tab

komentarz 14 kwietnia 2018 przez majkelmatusaf Nowicjusz (120 p.)

to miałoby to wyglądać w takim razie mniej więcej tak:

#include <iostream>

using namespace std;

int main()
{
	int i=0,n,tab[32]={0},liczba,ilParz;
	cout << "podaj liczbę calkowita: ";
	cin >> liczba;
	while(liczba>0)
	{
		tab[i] = liczba%6;
		liczba = liczba/6;
		i++;
	}
	n=i-1;
	for(i=n;i>=0;i--) cout << tab[i];
	{
	if(tab[i] %2 == 0) ilParz++;
	cout << ilParz;
	}
	return 0;
}

bo jak to wrzuciłem to mi błędy się wysypują :/

PS dziękuję za pomoc

komentarz 14 kwietnia 2018 przez Snejki Stary wyjadacz (14,520 p.)

Warunek, którym sprawdzasz, czy dana cyfra jest parzysta znajduje się poza ciałem pętli.

Pętla, tylko wykona wypisanie tab[i]: 

for(i=n;i>=0;i--) cout << tab[i];

Domylnie pętla wykonuje tylko jedną instrukcję, która znajduje się bezpośrednio za nią, czyli to wypisanie tab[i]. Jeśli chcesz, ay w pętli wykonało się więcej instrukcji, to umieszczasz je w tak zwanej instrukcji grupującejm czyli "{}", które też znajdą się bezpośrednio za forem, a nie jak u Ciebie. Poprawnie będzie więc:

 for(i=n;i>=0;i--)

    {
   cout << tab[i];

    if(tab[i] %2 == 0) ilParz++;

    }
    cout << ilParz;

ilParz wypisujesz tylko raz, więc może być poza instrukcją grupującą.

2. Musisz ustalić wartość ilParz na 0, więc musi być:

int ilParz = 0;

 

komentarz 14 kwietnia 2018 przez majkelmatusaf Nowicjusz (120 p.)

wielkie dzięki za pomoc teraz program działa :)

#include <iostream>

using namespace std;

int main()
{
	int i=0,n,tab[32]={0},liczba,ilParz=0,ilParz2=0;
	cout << "podaj liczbę calkowita: ";
	cin >> liczba;
	while(liczba>0)
	{
		tab[i] = liczba%6;
		liczba = liczba/6;
		i++;
	}
	n=i-1;
	cout << "twoja liczba zapisana w systemie szostkowym to: ";
	for(i=n;i>=0;i--)
	{
		cout << tab[i];
		if(tab[i] %2 == 0) ilParz++;
		if(tab[i] %2 != 0) ilParz2++;
	}
	cout << endl << "liczb parzystych jest: " <<ilParz;
	cout << endl << "liczb nieparzystych jest: " <<ilParz2;
	return 0;
}

a finalnie to wygląda tak jak powyżej

Podobne pytania

0 głosów
1 odpowiedź 607 wizyt
pytanie zadane 12 lutego 2020 w Java przez princeV Nowicjusz (140 p.)
0 głosów
1 odpowiedź 431 wizyt
pytanie zadane 31 października 2022 w C i C++ przez patrykpatryczek01 Nowicjusz (200 p.)
0 głosów
2 odpowiedzi 532 wizyt
pytanie zadane 10 października 2015 w Inne języki przez niewiem17 Początkujący (480 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...