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

question-closed Typ tablicowy

0 głosów
159 wizyt
pytanie zadane 26 kwietnia 2020 w C i C++ przez user235 Nowicjusz (220 p.)
zamknięte 26 kwietnia 2020 przez user235

Zadanie: Zdefiniuj tablicę 10 znaków-wartości typu char, wczytaj do niej elementy, a następnie wszystkie litery a zamień na z  i wydrukuj tablicę na ekranie.

Program jest napisany jak dla mnie w dosyć trudny sposób, a chciałbym zrozumieć dokładnie każdą linijkę na podstawie prostego kodu.Również są pewne problemy z zadaniem program zaczyna działać po podaniu 10 znaków, jednak jako znak nie definuje spacji, a powinien .

#include <iostream>

int main()
{

    char tablica[10];
    std::cout << "Podaj 10 znakow: ";
    for (auto& c : tablica)
    {
        std::cin >> c;
    }

    std::cout << "Wynik zadania 1: ";
    for (auto& c : tablica)
    {
        if (c == 'a')
            c = 'z';
        std::cout << c;
    }
    std::cout << std::endl;
}

 

komentarz zamknięcia: j

2 odpowiedzi

+1 głos
odpowiedź 26 kwietnia 2020 przez tangarr Mędrzec (155,180 p.)
wybrane 26 kwietnia 2020 przez user235
 
Najlepsza

Rozumiem, że pętle po zakresie i użycie referencji mogą początkowo sprawiać problem.

Operator >> strumienia cin jest stworzony w taki sposób aby omijać wszystkie białe znaki. Aby pobrać jeden znak ze strumienia użyj funkcji get() na tym strumieniu.

W przykładzie poniżej zmodyfikowałem pętle na klasyczne a wczytywanie znaków zmieniłem na cin.get()

#include <iostream>
 
int main()
{
 
    char tablica[10];
    std::cout << "Podaj 10 znakow: ";
    for (int i=0; i<10; i++)
    {
        char c = std::cin.get();
        tablica[i] = c;
    }
 
    std::cout << "Wynik zadania 1: ";
    for (int i=0; i<10; i++) {
        char c = tablica[i];
        if (c == 'a')
            c = 'z';
        std::cout << c;
    }
    std::cout << std::endl;
}

 

komentarz 26 kwietnia 2020 przez user235 Nowicjusz (220 p.)
dzięki, bardzo przydatne
0 głosów
odpowiedź 26 kwietnia 2020 przez DragonCoder Nałogowiec (36,500 p.)
To nie C, tylko C++, anyway, czego doklsdnie nie rozumiesz, bo to sa tylko 2 petle?
Namespace powinnien byc przed funkcja main, a nie w wewnatrz
Z czego jedna uzywa auto i dostaje wskaznik na pojedynczy element tablicy i powtarza sie az do jej konca.

Druga wypisuje elementy od ostatniego elemntu tablicy, zeby zrobic wyswietlanie od konca
komentarz 26 kwietnia 2020 przez user235 Nowicjusz (220 p.)
chodzi mi o to aby program został zapisany w sposób jak najprostszy(dopiero zaczynam programować i niektóre funkcje są dla mnie niezrozumiałe i chcę poznać ich prostsze odpowiedniki, np jak w inny sposób zapisać pętlę for) i aby został rozwiązany problem ze spacją (program powinien ja definowac jako znak)
komentarz 26 kwietnia 2020 przez DragonCoder Nałogowiec (36,500 p.)

definiuje ja jako znak, ale nie mozesz uzyc std::cin, tylko

http://www.cplusplus.com/reference/istream/istream/getline/

btw, nie wiem skad wziales poradnik na poczatk, ze odrazu zaczyna sie od auto, ale bez tego auto to pewnie cos w tym stylu:

#include <iostream>

int main()
{

    char tablica[10];
    std::cout << "Podaj 10 znakow: ";
        std::cin.getline(tablica, sizeof(tablica));

    std::cout << "Wynik zadania 1: ";
    for (int j = 9; j >= 0; j --)
    {
        std::cout << tablica[j];
    }
    std::cout << std::endl;
}

 

Podobne pytania

0 głosów
1 odpowiedź 183 wizyt
pytanie zadane 3 maja 2020 w C i C++ przez user235 Nowicjusz (220 p.)
0 głosów
2 odpowiedzi 276 wizyt
pytanie zadane 25 kwietnia 2020 w C i C++ przez user235 Nowicjusz (220 p.)
0 głosów
0 odpowiedzi 135 wizyt
pytanie zadane 17 marca 2022 w C i C++ przez Sway22 Początkujący (270 p.)

93,427 zapytań

142,421 odpowiedzi

322,649 komentarzy

62,787 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...