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

Tablice dwuwymiarowe C++. Zadanie na wykreślanie liczb z komórek tablicy.

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
1,962 wizyt
pytanie zadane 18 września 2017 w C i C++ przez Szymoonix Nowicjusz (190 p.)

Witam wszystkich! Ostatnio  na informatyce otrzymaliśmy oto takie zadanie. Mam zadeklarować tabelę i podać 3 liczby a-liczbę wierszy tabeli, b-liczbę kolumn tabeli i c-co którą liczbę chcemy wykreślić, a program miał obliczyć ile jest par takich komórek (wykreślonych), które znajdują się w obok siebie. Do kolejnych komórek program  wpisywał kolejne liczby naturalne. W moim programie wykreślałem liczby z komórki w taki sposób, że zmieniałem ich wartość na 0. Dla przykładowych danych a=2, b=3 , c=1

1 2 3

4 5 6

0 0 0

0 0 0 Są 3 pary takich liczb. ( Program wypisuje, że 6.):

Dla przykładowych danych a=2, b=3 , c=2:

1 2 3

4 5 6

1 0 3

0 5 0  Jest 0 takich par liczb. ( Program wypisuje, że jest 1.)

Program poprawnie wpisuje i 'wykreśla' liczby z komórek tabeli, jednak źle liczy on liczbę par tych 'wykreślonych' liczb np. dla powyższego przykładu pokazuje, że "Jest 1 para takich liczb", więc problem tkwi w ostatnim-3 'dużym' forze. (Dla danej komórki porównuję tylko wartość z komórki pod nią i na prawo od niej, aby uniknąć powtórek.)  Z góry dziękuję za pomoc. Pozdrawiam. :)


#include <iostream>

using namespace std;

int main()
{
    cout << "Podaj liczbe wierszy." << endl;
    int a;
    cin>>a;
    cout << "Podaj liczbe kolumn." << endl;
    int b;
    cin>>b;
    cout << "Podaj co ktora liczbe chcesz wykreslic." << endl;
    int c;
    cin>>c;
    int tab[a][b];
    int d=1;
    int e=0;

    for(int i=0; i<a; i++)
    {
        for(int j=0; j<b; j++)
        {
          tab[i][j]=d;
          cout<<tab[i][j]<<" ";
          d++;
        }
        cout<<" "<<endl;
    }

    cout<<" "<<endl;

    for(int k=0; k<a; k++)
    {
        for(int l=0; l<b; l++)
        {
           if(tab[k][l]%c==0)
           {
               tab[k][l]=0;
               cout<<tab[k][l]<<" ";
           }
           else
           {
               cout<<tab[k][l]<<" ";
           }

        }
        cout<<" "<<endl;
    }

     for(int m=0; m<a; m++)
    {
        for(int n=0; n<b; n++)
        {
           if(tab[m][n]==tab[m+1][n])
           {
               e++;
           }
           else if(tab[m][n]==tab[m][n+1])
           {
               e++;
           }
        }
    }

    cout<<"Jest "<<e<<" par takich skreslonych komorek, ktore znajduja sie obok siebie"<<endl;

    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 18 września 2017 przez jeremus Maniak (59,720 p.)
w tych ostatnich pętlach , które liczą - e - , warunki powinny być m<a-1 i n<b-1 , bo wykraczasz poza zakres tablicy  w indeksach m+1 i n+1

Podobne pytania

+2 głosów
3 odpowiedzi 1,436 wizyt
0 głosów
4 odpowiedzi 282 wizyt
0 głosów
1 odpowiedź 526 wizyt
pytanie zadane 5 listopada 2019 w C i C++ przez Seweryn_Sawicki Nowicjusz (180 p.)

93,194 zapytań

142,206 odpowiedzi

322,050 komentarzy

62,519 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 3053p. - dia-Chann
  2. 2998p. - Łukasz Piwowar
  3. 2993p. - Łukasz Eckert
  4. 2970p. - CC PL
  5. 2930p. - Tomasz Bielak
  6. 2907p. - Łukasz Siedlecki
  7. 2890p. - rucin93
  8. 2692p. - Adrian Wieprzkowicz
  9. 2645p. - Mikbac
  10. 2485p. - Marcin Putra
  11. 2461p. - Michał Telesz
  12. 2418p. - Michal Drewniak
  13. 2156p. - Anonim 3619784
  14. 1733p. - rafalszastok
  15. 1650p. - Mariusz Fornal
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...