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

Tablice zadanko

0 głosów
362 wizyt
pytanie zadane 28 października 2018 w C i C++ przez kamasazi98 Początkujący (410 p.)

Cześć, na wstępie chciałem zaznaczyć, że jestem zielony i tablice to dla mnie czarna magia.

Treść zdania brzmi tak: 

Dana jest tablica kwadratowa nxn liczb rzeczywistych. Napisz program, który:
1. Sprawdzi, czy tablica jest symetryczna,
2. Po podaniu indeksów [i][j] policzy sumę elementów sąsiednich.

Punkt 1 nie jest dla mnie problemem, bo już sobie z tym poradziłem, lecz punkt 2 już nim jest. 

Powiedzmy, że naszą przykładową tablicą jest [3][3] i wygląda w taki sposób:

1  2  3

4  5  6

7  8  9

Napisałem coś takiego i w przypadku pozycji [1][1] działa prawidłowo natomiast w przypadku reszty już niekoniecznie, a ja nie mam pojęcia jak to naprawić. Jest może ktoś chętny żeby udzielić jakąś wskazówkę?

#include <iostream>

using namespace std;
const int n=3;
int tab[n][n];
int suma=0;
int s,k;
int main()
{
    cout << "Dodawanie sasiednich z tablicy" << endl;
    cout << "Utworz tablice" << endl;

    for(int i=0;i<n;i++)
        for(int j=0; j<n;j++)
    {


cout<<"tab["<<i<<"]["<<j<<"]:";
       cin>>tab[i][j];



    }
    cout<<"Suma sasiednich liczb z pozycji: "<<endl;

    cin>>s;

    cin>>k;

     suma=tab[s-1][k] + tab[s][k-1] + tab[s][k+1]+tab[s+1][k] ;
cout<<suma<<endl;




    return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 28 października 2018 przez RafalS VIP (122,820 p.)
wybrane 3 stycznia 2019 przez kamasazi98
 
Najlepsza

Zrob sobie zmienną suma i dodawaj do niej kolejnych sasiadow. Przed dodaniem kazdego sąsiada sprawdz ifem czy on istnieje - czy nie wychodzisz poza tablice:

int suma = 0;
if(i>0) //mozna dodac lewego sasiada
   suma+=tab[i-1][j];

itd..

 

komentarz 28 października 2018 przez kamasazi98 Początkujący (410 p.)

Tak też na to wpadłem, ale chyba źle to zapisałem bo wynik wychodzi nieprawidłowy

(suma jest równa 0 na starcie)

    cout<<"Suma sasiednich liczb z pozycji: "<<endl;

    cin>>s;

    cin>>k;
if (s>0 && k>0)
{
         suma+=tab[s-1][k] ;
   suma+=tab[s][k-1];
}
else
    suma=tab[s][k]+tab[s][k];

   suma+= tab[s][k+1]+tab[s+1][k];
cout<<suma<<endl;

 

1
komentarz 28 października 2018 przez kamasazi98 Początkujący (410 p.)
Dobra nie ważne nie potrzebnie zrobiłem ten warunek z && rozdzielony działa prawidłowo

Podobne pytania

0 głosów
1 odpowiedź 264 wizyt
pytanie zadane 15 grudnia 2023 w C i C++ przez MARECKIyt Nowicjusz (190 p.)
0 głosów
1 odpowiedź 828 wizyt
pytanie zadane 3 grudnia 2022 w C i C++ przez Janchess Początkujący (480 p.)
0 głosów
1 odpowiedź 363 wizyt
pytanie zadane 1 grudnia 2022 w C i C++ przez Pysa6 Nowicjusz (220 p.)

93,631 zapytań

142,555 odpowiedzi

323,056 komentarzy

63,139 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2523p. - Maurycy W
  9. 2459p. - CC PL
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1851p. - Mariusz Fornal
  13. 1811p. - rafalszastok
  14. 1600p. - Rafał Trójniak
  15. 1588p. - Tomasz Bielak
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

Kursy INF.02 i INF.03
...