Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

C++ tablica


Rekomendowane odpowiedzi

Opublikowano

Witam

 

Da się napisać w c++ taki program, który np. gdy użytkownik wpisze w cin liczbe 72 to zapisze ją do tablicy a następnie wypisze ostatnią cyfre tej liczby? Więc jak np. wpisze 72 to zapisze do tablicy i wypisze 2 a jak wpisze 879 to zapisze do tablicy i wypisze 9.

Opublikowano
  1. Najprostszym sposobem byłoby wyświetlenie reszty z dzielenia tej liczby przez 10.
  2. Jeśli nalegasz na tablicę, możesz wczytywać poszczególne znaki przez std::cin.get() i sprawdzać czy są cyframi(i wpisywać do tablicy), białymi znakami(kończyć wczytywanie) czy literami(zamykać program),
  3. Zamiast std::cin.get() i sprawdzania czy przypadkiem nie trafił się znak możesz wczytać liczbę i użyć std::toString. Jako że std::string to tak naprawdę tablica znaków(ASCII), wystarczy przy odczytywaniu odejmować 48
  4. Ostatnią metodą jest odpowiednie przeliczanie liczby, tak aby wyliczyć jej długość oraz poszczególne cyfry. Da się, wystarczy nieco pooperować resztą z dzielenia i odejmowaniem

Tak, da się i to na mnóstwo sposobów.

Opublikowano

Wczytaj liczbę.

Wrzuć ją do tablicy.

Wypisz ją %10.

#include <iostream>
int main()
{
   int tablica[423];
   cin >> tablica[42];
   cout << tablica[42]%10;
}
Opublikowano

Wczytaj liczbę.

Wrzuć ją do tablicy.

Wypisz ją %10.

#include <iostream>
int main()
{
   int tablica[423];
   cin >> tablica[42];
   cout << tablica[42]%10;
}

Tak zrobiłem na samym początku, teraz myśle nad jakąś pętlą która dodawałaby zera do %10 wraz ze wzrostem liczby ostatnich cyfr, które chce zobaczyć użytkownik, np. jak wpisze w cinie że chce zobaczyć 3 ostatnie cyfry to dodawałoby 2 zera do %10

 

Albo coś takiego jak program poniżej, tylko żeby nie pokazywało n pierwszych elementów tylko n ostatnich.

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    int arr[9];
    int i;

    for(i=0; i<9; i++)
    {
        cout<<"Wartosc elementu arr["<<i<<"]: ";
        cin>>arr[i];
    }

cout<<endl<<"Ile pierwszych elementow tablicy chcesz wyswietlic?"<<endl;
int n;
cin>>n;

    for(i=0; i<n; i++)
    {
        cout<<i+1<<" element tablicy: "<<arr[i]<<endl;
    }

    getch();
    return 0;
}
Opublikowano

x%pow(10,liczbaOstatnichCyfrDoPokazania);

 

Chodzi Ci o coś takiego?

int liczba;

int main()
{
cout<<"Wprowadz liczbe:"<<endl;
cin>>liczba;

cout<<"Ile ostatnich cyfr tej liczby chcesz wyswietlic?"<<endl;
int n;
cin>>n;
cout<<"Ostatnia cyfra liczby "<<liczba<<" to "<<liczba%pow(10,n)<<endl;

return 0;
}

Jest wtedy błąd "error: invalid operands of types 'int' and '__gnu_cxx::__promote_2<int, int, double, double>::__type {aka double}' to binary 'operator%'|"

Opublikowano
int pom = pow(10, n);          // zmienna pomocnicza
cout << "Ostatnia cyfra liczby " << liczba << " to " << liczba%pom << endl;

Tak pójdzie.

it's not who i am underneath

but what i do that defines me.

Opublikowano

A jeśli chodzi o wyjaśnienie błędu, to funkcja pow zwraca double który jest liczbą rzeczywistą - resztę z dzielenia da się wykonywać tylko na liczbach całkowitych.
Innym sposobem niż zmienna pomocnicza jest rzutowanie na typ int:

cout<<"Ostatnia cyfra liczby "<<liczba<<" to "<<liczba%(int)pow(10,n)<<endl;
cout<<"Ostatnia cyfra liczby "<<liczba<<" to "<<liczba%static_cast<int>(pow(10,n))<<endl;
Opublikowano
int pom = pow(10, n);          // zmienna pomocnicza
cout << "Ostatnia cyfra liczby " << liczba << " to " << liczba%pom << endl;
Tak pójdzie.

 

 

Jak wpisuje, że np. chce zobaczyć 5 ostatnich cyfr to działa, ale już 4 nie. Coś tu musi być jeszcze źle.

 

To cały program:

 

#include <iostream>
#include <cmath>
#include <conio.h>

using namespace std;

int liczba;

int main()
{
    cout<<"Wprowadz liczbe:"<<endl;
    cin>>liczba;

cout<<"Ile ostatnich cyfr tej liczby chcesz wyswietlic?"<<endl;

int n;
cin>>n;

int pom=pow(10,n);
cout<<n<<" ostatnie cyfry liczby "<<liczba<<" to "<<liczba%pom<<endl;

    getch();
    return 0;
}

A to co się pokazuje przy wyborze 4 ostatnich cyfr:

 

 

post-1329719-0-39975300-1426169356.jpg

Opublikowano

Coś z kompilatorem. U mnie GCC daje 5620, a MSVC++ daje prawidłowe 4883.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...