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

question-closed Stworzenie funkcji do programu

–1 głos
59 wizyt
pytanie zadane 9 lutego 2018 w C i C++ przez Sic Mądrala (7,370 p.)
zamknięte 13 lutego 2018 przez Sic

Program działa jednak nie tak jak powinien:

getinfo() ma za zadanie pobierać i zapisywać dane. Wprowadzenie danych kończy się, gdy tablica jest pełna. Funkcja zwraca liczbę studentów wpisanych do tablicy.

display1() pobiera parametr struktury student i pokazuje jej zawartość.

display2() pobiera jako parametr adres struktury student i pokazuje jej zawartość tej struktury.

display3() pobiera jako parametr adres pierwszego elementu tablicy ze strukturami student oraz liczbę elementów tablicy, po czym wyświetla zawartość wskazanych struktur

 

Oto kod:

#include <iostream>

const int SLEN = 30;
struct student
{
	char fullname[SLEN];
	char hobby[SLEN];
	int ooplevel;
};

int getinfo (student pa[], int n);
void display1 (student st);
void display2 (const student *ps);
void display3 (const student pa[], int n);

int main()
{
	std::cout << "Podaj wielkosc grupy: ";
	int class_size;
	std::cin >> class_size;
	while(std::cin.get() != '\n')
		continue;
student * ptr_stu = new student[class_size];
	int entered = getinfo(ptr_stu, class_size);
	
	for(int i=0; i < entered; i++)
	{
		display1(ptr_stu[i]);
		display2(&ptr_stu[i]);			
	}

	display3(ptr_stu, entered);
	delete [] ptr_stu;
	std::cout << "\n\nGotowe\n";

	return 0;
}

int getinfo (student pa[], int n)
{
	for(int i=0; i < n; i++)
	{
		std::cout << "Podaj nazwisko studenta: ";
		std::cin.get(pa[i].fullname, SLEN);
/*if(!(std::cin.get(pa[i].fullname, SLEN)))
		{
			std::cout << "Blad! Ponow probe: ";
			std::cin.get(pa[i].fullname, SLEN);
		}
		else
		{*/
			std::cout << "Podaj hobby student: ";
			std::cin.get(pa[i].hobby, SLEN);
		/*}
		
		if(!(std::cin.get(pa[i].hobby, SLEN)))
		{
			std::cout << "Blad! Ponow probe: ";
			std::cin.get(pa[i].hobby, SLEN);
		}	
		else
		{*/
			std::cout << "Rok studiow: ";
			std::cin >> pa[i].ooplevel;
		//}	
	}
	std::cout << std::endl;
	return n;
}

void display1 (student st)
{
	std::cout << "\tWartosc\n" << st.fullname[SLEN] << "\n" << st.hobby[SLEN
] << "\n"  << st.ooplevel << "\n";
}

void display2 (const student * ps)
{	
	std::cout << "\tAdresy\n" << &ps->fullname[SLEN] << "\n" << &ps->hobby[S
LEN] << "\n" << &ps->ooplevel << "\n\n"; 
}

void display3 (const student pa[], int n)
{
	std::cout << "Adresy pierwszych elementow struktury\n" << &pa[0].fullnam
e[SLEN] << "\n" << &pa[0].hobby[SLEN] << "\n" << &pa[0].ooplevel;

}

Problem jej w tym, że:

1. Nie można wpisać więcej niż jedną literę, chociaż jest std::cin.get().

2. Nie wyświetla dwóch pierwszy wartości i adresów.

komentarz zamknięcia: Inne
komentarz 9 lutego 2018 przez Piotr Batko Mądrala (5,960 p.)
Zapomniałeś napisać co nie działa.

Podobne pytania

0 głosów
1 odpowiedź 54 wizyt
0 głosów
1 odpowiedź 66 wizyt
pytanie zadane 19 października 2016 w C i C++ przez Evelek Nałogowiec (28,830 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

64,023 zapytań

110,396 odpowiedzi

231,162 komentarzy

47,800 pasjonatów

Przeglądających: 156
Pasjonatów: 1 Gości: 155

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...