Kurs C++ - Problem z rozw PD z działu Klasy, obiekty, metody


(sebool12) #1

Witam


(kostek135) #2

Usuń for, przekaż wskaźnik.


(Protected_48) #3

Lepiej błoby gdybyś rozmiar tablicy wpisał do stałej. I mimo wszystko wrzucił tego for'a do funkcji aby operować wskaźnikiem na tablice.

 

Pozdrawiam


(sebool12) #4

Już sobie poradziłem, ale mimo wszystko dzięki za pomoc :wink:

 

Problem polegał w tym, że źle na to patrzyłem : do funkcji nie przekazuje całej tablicy pojedyńczo jej elementy, wystarczyło (jak napisał 

kostek135) skorzystać z referencji i działa :smiley:

// 3_25.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include iostream
#include string

void wczytajOsobe(std::string name, std::string lastname, int old)
{
	std::cin name;
	std::cin lastname;
	std::cin old;

}

void wypiszOsobe(std::string name1, std::string lastname2, int old3)
{
	std::cout name1 endl;
	std::cout lastname2 endl;
	std::cout old3 endl;
}

int main()
{
	std::string imie[2];
	std::string nazwisko[2];
	int wiek[2];
	for (int i = 0; i 2; i++)
		wczytajOsobe(imie[i], nazwisko[i], wiek[i]);
	for (int i = 0; i 2; i++)
	{
		wypiszOsobe(imie[i], nazwisko[i], wiek[i]);
	}
	system("pause");
	return 0;
}

 


(kostek135) #5

Wypisywanie powinno być referencją, której nie można zmienić. Bo inaczej następuje kopiowanie. Przy dużych obiektach zabijesz system.Chyba, że chcesz działać na kopii, bo musisz zachować oryginał, no wtedy wyjścia nie ma, bo tak czy inaczej kopie będziesz musiał stworzyć.


(sebool12) #6

kostek135 dzięki za uwage :wink: Też to zauważyłem tylko poprostu to olałem xD 


(kostek135) #7

Spróbuj zrobić cin'a na stringu z const i bez. Jak widzisz nie możesz go zmodyfikować, gdy jest const. Funkcje, których zadaniem jest by czegoś nie zmodyfikować (przez przypadek) powinno się to const dodawać. Przede wszystkim, jak przeglądam nagłówki w dużym projekcie, to wiem, czy mogę tam coś bezpiecznie przekazać i mi się to nie zmieni, czy nie i jeśli chce mieć pewność, że to sięnei zmieni, to muszę to na własną rękę skopiować. Bez tego praca w większym zespole byłaby uciążliwa.


(Protected_48) #8

To po prostu kwestia wizualizacyjna i w pewnym sensie ergonomiczna

 

Mogleś zrobić :

using namespace std;

const unsigned int n = 2;

......

string name[n], lastname[n];

Teraz po prostu zmienisz stałą n i automatycznie zmienia się rozmiar tablicy.