• 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,330 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 (7,340 p.)
Zapomniałeś napisać co nie działa.

Podobne pytania

0 głosów
1 odpowiedź 57 wizyt
0 głosów
1 odpowiedź 68 wizyt
pytanie zadane 19 października 2016 w C i C++ przez Evelek Nałogowiec (28,710 p.)
Porady nie od parady
Nie wiesz jak poprawnie zredagować pytanie lub pragniesz poznać którąś z funkcji forum? Odwiedź podstronę Pomoc (FAQ) dostępną w menu pod ikoną apteczki.FAQ

67,231 zapytań

114,191 odpowiedzi

242,029 komentarzy

45,639 pasjonatów

Przeglądających: 110
Pasjonatów: 1 Gości: 109

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.

...