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

Wypisywanie tablicy

Object Storage Arubacloud
0 głosów
487 wizyt
pytanie zadane 2 stycznia 2018 w C i C++ przez lambdag Obywatel (1,310 p.)

Mam taki kod

void changearray(int *tab, int len)
{
    for(int i = len-1; i >= 0; i--)
    {
        if(tab[i] != 0)
       {
           cout << tab[i] << " ";
       }
    }
    cout << endl;

}
int main()
{
    int *tab;
    int n, n1;
    cin >> n;
    for(int i = 0; i < n; i++)
    {
        cin >> n1;
        tab = new int [n1];
        for(int i = 0; i < n1; i++)
        {
            cin >> tab[i];
        }
        changearray(tab, n1);
        delete tab;
    }
    return 0;
}

Jest to kod rozwiązania zadania ze strony spoj  - "Tablice"

"Odwróć kolejność elementów w tablicy. "

Wypisać mam w linii, tylko ten sędzia nie akceptuje tego tzn: trzeba zawsze dodawać endl do cout także co muszę zrobić żeby wypisać w linii tą tablice żeby sędzia zakpcetował.

Przykład jak to ma wyglądać:

Wejście:
2
7 1 2 3 4 5 6 7
3 3 2 11

Wyjście:
7 6 5 4 3 2 1
11 2 3

 

1 odpowiedź

+1 głos
odpowiedź 2 stycznia 2018 przez niezalogowany

1. W testach może wystąpić 0, więc ten warunek jest zbędny:

 if(tab[i] != 0)

2. Zamiast samego delete powinieneś użyć delete[], bo w końcu to jest tablica.

komentarz 2 stycznia 2018 przez lambdag Obywatel (1,310 p.)
a można użyć delete *tab? xD tak z ciekawości...

jeszcze mam jeden błąd użyłem drugi raz w pętli i...
komentarz 2 stycznia 2018 przez niezalogowany

Nie. Zasada jest taka new[]/delete[] dla tablic delete/new dla pojedynczych obiektów. Chociaż czasami kompilator i tak przepuści. Mi zalicza kod w takiej formie:

#include <iostream>
using namespace std;
 
void changearray(int *tab, int len)
{
	for (int i = len - 1; i >= 0; i--)
	{
		cout << tab[i] << " ";
	}
	cout << endl;
}
 
int main()
{
	int *tab;
	int n, n1;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cin >> n1;
		tab = new int[n1];
		for (int i = 0; i < n1; i++)
		{
			cin >> tab[i];
		}
		changearray(tab, n1);
		delete[] tab;
	}
	return 0;
} 

Zmienna i z maina nie ma nic wspólnego z tą w funkcji jeżeli jej nie podeślesz jej orginału (albo nie jest ona globalna).

komentarz 2 stycznia 2018 przez lambdag Obywatel (1,310 p.)
Też fakt, przyzwyczaiłem się że deklarowałem zmienna i właśnie przed pętla for..
1
komentarz 2 stycznia 2018 przez niezalogowany
O przeoczyłem to podwójne i myślałem, że chodzi o to w funkcji ;) Faktycznie lepiej dać 'j' w tej wewnętrznej tak by nauczyć się dobrych nawyków ;)

Podobne pytania

0 głosów
2 odpowiedzi 511 wizyt
0 głosów
2 odpowiedzi 575 wizyt
pytanie zadane 12 stycznia 2020 w C i C++ przez dominik195k Obywatel (1,030 p.)
0 głosów
1 odpowiedź 3,292 wizyt
pytanie zadane 18 lipca 2017 w C i C++ przez Krystian_n Nowicjusz (170 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...