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

Tablice - zle liczy

VPS Starter Arubacloud
–1 głos
164 wizyt
pytanie zadane 25 września 2021 w C i C++ przez Clemontos Nowicjusz (160 p.)

Witam,

 
 

#include <bits/stdc++.h>

using namespace std;


int main()
{

    int m, n, hasze=0,ruchy=0, najwiekszaW, najwiekszaK;
    cin >> m >> n;
    char plansza [m+1] [n+1];
    int wiersz=1, kolumna=1;
    int haszeW [m+1] = {};
    int haszeK [m+1] = {};
    for (int i=1; i<=m; i++ )
    {
        for (int i=1; i<=n; i++)
        {
            cin >> plansza [wiersz][i];
            if (plansza [wiersz][i] == '#'){
                haszeW[wiersz]++;
                hasze++;
                }
        }
        wiersz++;
    }

    for (int i=1; i<=n; i++)
    {
        for (int i=1; i<=m; i++)
        {
            if (plansza [i][kolumna] == '#'){
                haszeK[kolumna]++;

            }
       }
       kolumna++;
    }
// Szuka najwiekszego wiersza
    najwiekszaW = haszeW[1];
    for (int i=1; i<=m; i++)
    {
        if (haszeW[i] > najwiekszaW)
            najwiekszaW = haszeW[i];
    }
// Szuka najwieksza kolumne
    najwiekszaK= haszeK[1];
    for (int i=1; i<=m; i++)
    {
        if (haszeK[i] > najwiekszaK)
            najwiekszaK = haszeK[i];
    }

    cout <<najwiekszaK << " " << najwiekszaW << " " << hasze;


    return 0;
}

 

Kod pokazuje zły wynik "NajwiekszaW", lecz jeżeli usunę haszeK[kolumna]++ to będzie działać poprawnie

komentarz 25 września 2021 przez Oscar Nałogowiec (29,340 p.)

Kompletnie nie mam pojęcia co ten program ma robić (może podaj założenia), ale widzę kilka dziwnych kontrukcji.

1. Dziwnie ideksujesz tablice - od 1, ale kompensujesz to dająć o 1 więcej pozycji. OK, tylko trochę szkoda pamięci.

2. Masz macierz m * n i wektory - domyślam się że kolumn i wierszy.  Tylko dlaczego oba wektory mają taki sam rozmiar - chyba jeden powinnien mieć m a drugi n?

3. Dwie pętle, jedna w drugiej i obie indeksowana tak samo nazwaną zmienną - może to zadziała, ale niedostępna będzie zewnętrzny indeks. Załatwiasz to dodatkową zmienną, ale ogólnie to nieczytelne.

3. Dziwnie je zapełniasz - jak napotkasz # to przechodzisz do następnej kolumny/wierszy, ale nie 'zerujesz' drugiego indeksu, wiec będzie coś takiego jak wydruk z LF bez CR

1234567890123
             abcdefhg
    

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 169 wizyt
pytanie zadane 26 września 2016 w C i C++ przez krzysiek12345 Użytkownik (890 p.)
+1 głos
2 odpowiedzi 603 wizyt
pytanie zadane 4 listopada 2021 w C i C++ przez topol_123 Nowicjusz (190 p.)
+1 głos
1 odpowiedź 221 wizyt
pytanie zadane 19 kwietnia 2021 w C i C++ przez Dawidziu Bywalec (2,630 p.)

92,980 zapytań

141,943 odpowiedzi

321,188 komentarzy

62,307 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!

...