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

Tablice zadanko

VPS Starter Arubacloud
0 głosów
297 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ź 149 wizyt
pytanie zadane 15 grudnia 2023 w C i C++ przez MARECKIyt Nowicjusz (190 p.)
0 głosów
1 odpowiedź 527 wizyt
pytanie zadane 3 grudnia 2022 w C i C++ przez Janchess Początkujący (480 p.)
0 głosów
1 odpowiedź 237 wizyt
pytanie zadane 1 grudnia 2022 w C i C++ przez Pysa6 Nowicjusz (220 p.)

93,079 zapytań

142,043 odpowiedzi

321,452 komentarzy

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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...