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

Tablica wyświetlająca ciąg liczb rzeczywistych parzystych

VPS Starter Arubacloud
0 głosów
2,088 wizyt
pytanie zadane 22 kwietnia 2018 w C i C++ przez kubal0101 Początkujący (280 p.)

Witam, mam za zadanie napisac program taki jak w temacie, mam cos takiego ale wyskakuje mi jakis blad, jakies pomysly co zmienic? ;//

#include <iostream>
using namespace std;
void wypelnij(int tab[], int rozmiar)
{
	
	for(int i=0;i<rozmiar;i++)
	{
		
	}
}
void wyswietl(int tab[], int rozmiar)
{
	for(int i=0; i<rozmiar; i++)
	{
		if(tab[i]%2==0)
		{
			cout<<tab[i]<<" ";
		}
	
		
	}
}
int main()
{
	int a;
	cout<<"Podaj długość tablicy"<<endl;
	cin>>a;
	int tablica[a];
	wypelnij(tablica, a);
	wyswietl(tablica, a);
	return 0;
}

 

4 odpowiedzi

+1 głos
odpowiedź 23 kwietnia 2018 przez mokrowski Mędrzec (155,460 p.)

Pan nauczyciel kazal zastosowac tablice, dokladna tresc to 'wczytanie ciagu liczb rzeczywistych, wydrukowanie liczb ktorych indeks jest liczba parzysta" 

Tak więc tytuł nie do końca poprawny.

Uwagi:

#include <iostream>
#include <cstddef> // Dla std::size_t

// using namespace std; // <- nie.. staraj się tego nie używać, dobry nawyk

void wypelnij(int tablica[], std::size_t rozmiar) // Wszelkie rozmiary to size_t
{
     
    for(std::size_t i = 0; i < rozmiar; ++i) // Preferuj pre-inc/dec
    {
        // Tu wypełnienie tablicy danymi.. przykładowe...
        tablica[i] = 42 + i;
    }
}

void wyswietl(int tablica[], std::size_t rozmiar)
{
    // Nie ma sensu iterować co 1, możesz dla parzystych
    // indeksów iterować co 2. Uprości to kod.
    for(std::size_t i = 0; i < rozmiar; i += 2)
    {
        std::cout << tablica[i] << ' ';
    }
}

int main()
{
    std::size_t rozmiar; // Jak wyżej, std::size_t, lepsza nazwa
    std::cout << "Podaj długość tablicy" << '\n'; // Tu nie jest konieczne endl;
    std::cin >> rozmiar;
    // Brakuje sprawdzenia poprawności wprowadzenia danych
    // Złośliwiec poda "abrakadabra"
    // int tablica[rozmiar]; // Nie. C++ nie ma tak definiowanych tablic dla rozmiarów wprowadzanych.
    int * tablica = new int[rozmiar]; // Tablica dynamiczna, wymagająca jawnego usunięcia
    wypelnij(tablica, rozmiar);
    wyswietl(tablica, rozmiar);
    delete [] tablica; // Obowiązkowe usunięcie tablicy dynamicznej.
    // return 0; // Zbędne. C++ sam to robi wyłącznie dla main()
}

 

komentarz 23 kwietnia 2018 przez Beginer Pasjonat (22,110 p.)
1. Do liczb rzeczywistych wliczają się również liczby naturalne dodatnie, więc nie można mówić, że treść zadania była nieprawidłowa.

2. Niepotrzebnie proponujesz tablicę dynamiczną, ponieważ kod zaczyna się wyraźnie od wczytania rozmiaru tablicy.

P.S. Nie umawialiśmy się, że będzie łatwo!
komentarz 23 kwietnia 2018 przez mokrowski Mędrzec (155,460 p.)

1. Przeczytaj najpierw uważnie tytuł pytania a później komentarz "Pan nauczyciel powiedział..." Widzisz różnicę?

wczytanie ciagu liczb rzeczywistych, wydrukowanie liczb ktorych indeks jest liczba parzysta

2. W C++ nie ma VLA. Doczytaj także uważnie komentarze że "Pan nauczyciel wymaga tablicy a nie innych kontenerów"

Pan nauczyciel kazal zastosowac tablice

 

komentarz 23 kwietnia 2018 przez Beginer Pasjonat (22,110 p.)
Kontener też jest tablicą. Użycie kontenera nie było bez sensu, choć w tym zadaniu również niepotrzebne (skoro kod zaczyna się od wczytania rozmiaru tablicy).
0 głosów
odpowiedź 22 kwietnia 2018 przez RafalS VIP (122,820 p.)

W funkcji wypełnij w ciele pętli for wypełnij tablice liczbami parzystymi. Podpowiedź - wzór na liczbę parzystą to 2*i. Wtedy będziesz miał w tej tablicy same liczby parzyste więc w funkcji wyświetl nie musisz już nic sprawdzać tylko wypisać całą tablice.

Wgl bardzo dziwnie sformułowane zadanie, bo generalnie nie potrzebujesz tu tablicy.
Wystarczyłoby coś takiego dla liczb 0-100.

for(int i = 0;i<50;i++)
cout<<i*2<<" ";

Ale jak już ma być tablica to zrób tak jak napisałem wyżej.

komentarz 22 kwietnia 2018 przez kubal0101 Początkujący (280 p.)
Pan nauczyciel kazal zastosowac tablice, dokladna tresc to 'wczytanie ciagu liczb rzeczywistych, wydrukowanie liczb ktorych indeks jest liczba parzysta" ;pp Dzieki wielkie ;0
0 głosów
odpowiedź 22 kwietnia 2018 przez Beginer Pasjonat (22,110 p.)

wczytanie ciagu liczb rzeczywistych, wydrukowanie liczb ktorych indeks jest liczba parzysta

Napisałeś dobry kod, dokładnie według treści zadania. Błędne działanie polega na tym, że w funkcji: Wypełnij, w pętli for nie wypełniłeś tablicy liczbami (są puste klamry). Powinno być:

tab(i) = i;

P.S. Nawiasy powinny być prostokątne. (Nadaję z tabletu).

komentarz 23 kwietnia 2018 przez Benek Szeryf (90,690 p.)
Jak dobry kod, jak tam nie ma przydziału pamięci dla tablicy?
komentarz 23 kwietnia 2018 przez Beginer Pasjonat (22,110 p.)
Możesz mieć rację. Pozornie wygląda dobrze, a ja nie uruchamiałem na komputerze.

Bravo za czujność!
komentarz 23 kwietnia 2018 przez Benek Szeryf (90,690 p.)
Ja też go nie uruchamiałem i od razu widać, że ten kod jest słaby. Poza tym taki kod mógłby dać się skompilować na niektórych kompilatorach.
komentarz 23 kwietnia 2018 przez Beginer Pasjonat (22,110 p.)

Ja też go nie uruchamiałem i od razu widać, że ten kod jest słaby.

Bo Ty jesteś "bystrzacha".

(Jak widać, nie tylko Mokrowski ma tym forum ciężko).

–1 głos
odpowiedź 22 kwietnia 2018 przez SimiVoid Pasjonat (19,790 p.)

Moja propozycja kodu:

#include <iostream>
#include <vector>

using namespace std;

void wypelnij(vector * tab, int rozmiar)
{   
    for(int i=0;i<rozmiar;i++)
    {
         int buffer = i*2;

         tab.push_back(buffer);
    }
}
void wyswietl(vector tab)
{
    for(int i=0; i<tab.size(); i++)
    {
        cout << tab[i];
    }
}
int main()
{
    int a;
    cout<<"Podaj długość tablicy"<<endl;
    cin>>a;
    vector tablica;
    wypelnij(&tablica, a);
    wyswietl(tablica);
    
    cin>>a; // to jest aby za pauzować program

    return 0;
}

 

komentarz 22 kwietnia 2018 przez kubal0101 Początkujący (280 p.)
dziekuje :)
komentarz 22 kwietnia 2018 przez RafalS VIP (122,820 p.)
A wiesz co to wektor i wskaźniki :P?

Podobne pytania

0 głosów
3 odpowiedzi 4,792 wizyt
pytanie zadane 28 grudnia 2016 w C i C++ przez szejmys Nowicjusz (160 p.)
0 głosów
1 odpowiedź 6,038 wizyt
pytanie zadane 7 lutego 2017 w JavaScript przez ilendil Początkujący (250 p.)
0 głosów
2 odpowiedzi 312 wizyt
pytanie zadane 18 marca 2018 w C i C++ przez Undisputed Gaduła (3,040 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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!

...