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

Czy to jest tu potrzebne?

VPS Starter Arubacloud
0 głosów
376 wizyt
pytanie zadane 27 sierpnia 2015 w C i C++ przez Avernis Nałogowiec (27,400 p.)

Czy ta tablica jest tu potrzebna? 

#include<iostream>
#include<fstream>

using namespace std;

ifstream inted;
ofstream outed;
int items[2];

void Ships(const char *ships, const char *iron)
{
    inted.open(iron);
    inted >> items[2];
    inted.close();

    inted.open(ships);
    inted >> items[1];
    inted.close();

	items[1] = items[1] + 1;

    outed.open(ships);
    outed << items[1];
    outed.close();

}

 

2 odpowiedzi

+1 głos
odpowiedź 27 sierpnia 2015 przez hit02 Nałogowiec (33,970 p.)
edycja 27 sierpnia 2015 przez hit02
Czy przypadkiem nie masz tutaj off by one? Tablica z n elementami indeksuje się od 0, do n-1. Czy ten kod w ogóle działa?? Jeśli tak, to masz szczęście, że nie ma nic ważnego bezpośrednio za tablicą items[].

PS Tablica nie jest potrzebna, ale może też zostać. Zależy, co jest wygodniejsze.
+1 głos
odpowiedź 27 sierpnia 2015 przez Sebastian Fojcik Nałogowiec (43,020 p.)
edycja 28 sierpnia 2015 przez Sebastian Fojcik

Deklaracja tablicy:

int items[2];

A potem używasz odniesienia:

items[ 2 ];

Mój nauczyciel matematyki zawsze powtarza: "Wszystko wyjdzie, jeśli nie będziecie oszukiwać". A ty oszukujesz :-)
Do takiej tablicy możesz się odnieść tylko tak:

items[ 0 ];
items[ 1 ];

Zrobisz kilka takich błędów i wejdzie Ci to w krew :-)

komentarz 27 sierpnia 2015 przez Patrycjerz Mędrzec (192,340 p.)
No cóż, jeśli tablice w C++ to wskaźniki, to nie dziwota, że zaczyna się od zera.
komentarz 27 sierpnia 2015 przez Sebastian Fojcik Nałogowiec (43,020 p.)

Oczywiście. O wskaźnikowości tablic świadczy chociażby ten kod:

#include <iostream>

using namespace std;

int main()
{
	int tab[] = { 11, 22 };

	cout << *tab;

	return 0;
}

Szczerze, to nigdy nie zastanawiałem się bardzo dogłębnie nad tym, dlaczego zero to element pierwszy. Swoim komentarzem skłoniłeś mnie do refleksji i domyśliłem się, że skoro nazwa tablicy pokazuje na pierwszy element, to aby go wyświetlić nie trzeba przesuwać wskaźnika. Czyli przesuwamy go o ZERO miejsc [ 0 ].

Dzięki XD

komentarz 28 sierpnia 2015 przez Buby Pasjonat (19,590 p.)
Operator [n] po nazwie tablicy w rzeczywistości jest przekształcany na zapis *( tab+n ) :)

Stad nazwa tablicy odpowiada pierwzsemu elementowi. Poza tym zaczynamy numerować tablicę od zera, bo tak zakłada notacja amerykanska, z której korzystają tablice.
komentarz 28 sierpnia 2015 przez Sebastian Fojcik Nałogowiec (43,020 p.)
notacja notacją. Ja się w tym doszukałem matematycznego sensu, dlaczego element pierwszy ma indeks zero :D

Choć można spać spokojnie i bez tej wiedzy :-)

 

@EDIT: Czytam swój post z góry i patrzę a tam słowo: "powtaża". To cud, że nikt nie cisnął po mnie. Super jesteście!
Czasami to dziwne, że człowiek napisze coś z błędem, a potem jak to przeczyta, to od razu widzi rażący w oczy ortograf.
komentarz 28 sierpnia 2015 przez Lafoniz Gaduła (4,370 p.)
Tutaj jest jedna wielka plaga błędów językowych...
komentarz 28 sierpnia 2015 przez Avernis Nałogowiec (27,400 p.)
Wiem co to tablica, i jak jej używać, ale nie wiem, czy jest tu zbędna

Podobne pytania

+1 głos
1 odpowiedź 141 wizyt
pytanie zadane 1 maja 2021 w Systemy operacyjne, programy przez Igorek Mądrala (6,290 p.)
0 głosów
0 odpowiedzi 127 wizyt
+1 głos
1 odpowiedź 74 wizyt

92,454 zapytań

141,262 odpowiedzi

319,099 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...