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

Wczytywanie znaków w petli do tablicy

VPS Starter Arubacloud
0 głosów
331 wizyt
pytanie zadane 23 stycznia 2020 w C i C++ przez Wallen Nowicjusz (160 p.)

Cześć.

Na początku chciałbym zaznaczyć, że jestem kompletnie zielony i dopiero rozpoczynam przygodę z programowaniem. Mam do zrobienia projekt do szkoły w c++. Oczywiście w internecie można znaleźć gotowca, ale chciałbym napisać to samodzielnie i przy okazji zrozumieć co w ogóle robię :).

Mam liczbę w tablicy char która ma maksymalnie 80 cyfr. Problem pojawił się przy tworzeniu pętli for, która pozwoli mi kolejno wczytywać cyfry do tablicy. Nie jestem pewny czy pętla w ogóle została dobrze skonstruowana. Czy mógłby mi ktoś podpowiedzieć co jest nie tak? Podejrzewam, że coś pochrzaniłem z deklaracją zmiennej. Pozdrawiam.

#include <iostream>

int const maxCyfr = 80;
int main()
{
	/*W polu cyfry są zapisane wartości cyfr liczby (0-9), najbardziej znacząca cyfra jest pod indeksem 0, pominuęte zera nieznaczące*/

	struct Liczba
	{
		bool dodatnia;
		unsigned char cyfry[maxCyfr];
		int liczbacyfr;
	};

	bool wczytajLiczbe(struct Liczba* liczba);
	{
		char liczbaa[80];
		std::cout << "Podaj cyfre (maksymalnie 80 cyfr): \n";
		std::cin >> liczbaa;

		int dlugosc = liczbaa.length(); //w tym wierszu wywala mi błąd E0153 - wyrażenie musi mieć typ klasy oraz błąd C2228 - po lewej ".length" musi być typ struct/union

		for (int i=dlugosc - 1; i <= 80; i++)
		{
			std::cout << "Podaj kolejna cyfre (maksymalnie 80 cyfr): \n";
			std::cin >> liczbaa;
		}
		
		std::cout << "Oto liczba: " << liczbaa;

	}
}

 

4 odpowiedzi

0 głosów
odpowiedź 23 stycznia 2020 przez tangarr Mędrzec (154,780 p.)

Zakładam, że struktura została narzucona przez nauczyciela.
Uwagi:
1. Wyciągnij strukturę i funkcję poza funkcję main
2. Twoja funkcja nie korzysta z przekazanego argumentu
3. Zapis std::cin >> liczbaa; powoduje wczytanie danych (jeden znak, char) do pierwszej komórki tablicy.
4. Zapis  int dlugosc = liczbaa.length(); jest zapożyczony  z Javy lub innego języka w którym tablice mają metody. Nawet gdyby C++ posiadał taki mechanizm to funkcja by zwróciła 80 (czyli długość tablicy).

Jeżeli chcesz zobaczyć moją wersję tego zadania kliknij tutaj https://onlinegdb.com/HJlBKCLW8

0 głosów
odpowiedź 23 stycznia 2020 przez kari003 Nowicjusz (220 p.)
Czy mógłbyś napisać treść zadania?
0 głosów
odpowiedź 23 stycznia 2020 przez Wallen Nowicjusz (160 p.)
Oto treść zadania:

Zrealizować sumowanie pary co najwyżej 80-cyfrowych liczb całkowitych ze znakiem (nie mogą być one reprezentowane wewnętrznie nawet jako żaden typ liczbowy). Wolno jedynie używać statycznych typów danych (tablice, struktury, itd).
0 głosów
odpowiedź 23 stycznia 2020 przez j23 Mędrzec (194,920 p.)

Przykład funkcji wczytującej:

Liczba getNumber() 
{
    Liczba l = { true, { 0 }, 0 };
    char c;

    if (std::cin >> c && isdigit(c)) 
        l.cyfry[l.liczbacyfr++] = c;
    else 
        l.dodatnia = c != '-';
        
    while (std::cin.get(c) && isdigit(c)) {
        l.cyfry[l.liczbacyfr++] = c;
    }

    return l;
}

 

Podobne pytania

0 głosów
2 odpowiedzi 1,813 wizyt
pytanie zadane 24 listopada 2017 w C i C++ przez panstudent Nowicjusz (190 p.)
0 głosów
2 odpowiedzi 259 wizyt
pytanie zadane 24 września 2015 w C i C++ przez Armando Obywatel (1,870 p.)
0 głosów
2 odpowiedzi 383 wizyt
pytanie zadane 9 stycznia 2016 w C i C++ przez sapala94 Początkujący (320 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...