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

Napisz program, który wyświetli elementy listy, doda element oraz ponownie ją wyświetli.

+1 głos
170 wizyt
pytanie zadane 8 grudnia 2015 w C i C++ przez martix3 Użytkownik (690 p.)

Witam! Mam taki program. Napisałam już potrzebne funkcje(wyświetlanie listy, dodanie elementu), ale nie potrafię ich wdrążyć do programu. Jak po if wstawiłam wyswietl(a) to wyskakiwały tylko nieskończone ciągi liczb. Pomożecie? Napisz program, który wyświetli elementy listy, doda element oraz ponownie ją wyświetli.

 

#include<iostream>
#include<fstream>
#include<stdlib.h>
using namespace std;
struct student{
char nazwisko[20], imie[10];
double srednia;
int nr_indeksu;};
typedef struct element{
struct student p;
struct element *next;
}Element;
typedef Element *Lista;
Lista dodaj(struct student a, Lista b)
{
    Lista p;
    p=new Element;
    (p->p)=a;
    p->next=b;
    return(p);

}
void wyswietl(Lista a)
{
    cout<<"\n";
    while(a)
    {
        cout<<(a->p).nazwisko<<endl;
        cout<<(a->p).imie<<endl;
        cout<<(a->p).srednia<<endl;
        cout<<(a->p).nr_indeksu<<endl;
    }
}
int main()
{
    char nazwa[20];
    Lista a;
    ifstream p;
    cout<<"Podaj nazwe pliku z danymi\n";
    cin>>nazwa;
    p.open(nazwa);
    if(!p)
    {
        cout<<"blad otwarcia pliku";
        return 0;
    }
    if(!p.eof())
    {
        

    }
    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 2 sierpnia 2016 przez jegor377 Stary wyjadacz (13,230 p.)

Nie chce mi się pisać kodu, ale mam tu jakiś swój stary niedokończony program, który robi mniej więcej tyle co twój. Przeanalizuj go i spróbuj sobie coś z niego wykorzystać. ;)

#include <iostream>
#include <conio.h>
#ifdef __cplusplus__
  #include <cstdlib>
#else
  #include <stdlib.h>
#endif

using namespace std;
typedef struct element {
	int value;
	string comment;
} elementStruct;
typedef struct elementList {
	element * elements;
	size_t count;
} elementListStruct;
typedef struct registerStr {
	string name;
	int value;
} registerStruct;
typedef struct registers {
	registerStruct * elements;
	size_t count;
} registersStruct;

void allocElementList(elementListStruct & list)
{
	list.elements = new element[list.count];
}

elementListStruct allocElementListSize(size_t size)
{
	elementListStruct result;
	result.count = size;
	allocElementList(result);
	return result;
}

void clearElementList(elementListStruct & list)
{
	if(list.count > 0) {
		delete [] list.elements;
		list.count = 0;
	}
}

void memcpyElementLists(elementListStruct & desitnation, elementListStruct & source, size_t offset=0, int maxLength=-1)
{
	if(maxLength<0) maxLength=source.count;
	for(size_t i=0; i<source.count && i<maxLength; i++) {
		desitnation.elements[i+offset] = source.elements[i];
	}
}

element getElementFromUser()
{
	element result;
	cout<<"Your element and comment past number: ";
	cin>>result.value;
	getline(cin, result.comment);
	return result;
}

void pushElementOnTheStack(elementListStruct & stackElements)
{
	element Element = getElementFromUser();
	elementListStruct elementListToIncrase = allocElementListSize(stackElements.count+1);
	memcpyElementLists(elementListToIncrase, stackElements);
	elementListToIncrase.elements[elementListToIncrase.count-1] = Element;
	clearElementList(stackElements);
	stackElements = allocElementListSize(elementListToIncrase.count);
	memcpyElementLists(stackElements, elementListToIncrase);
}

void popElementFromTheStack(elementListStruct & stackElements)
{
	if(stackElements.count > 0) {
		const size_t decreaseCount = stackElements.count - 1;
		elementListStruct elementListToDecrase = allocElementListSize(decreaseCount);
		memcpyElementLists(elementListToDecrase, stackElements, 0, decreaseCount);
		clearElementList(stackElements);
		stackElements = allocElementListSize(decreaseCount);
		memcpyElementLists(stackElements, elementListToDecrase);
	}
}

void allocRegistersList(registersStruct & list)
{
	list.elements = new registerStruct[list.count];
}

registersStruct allocRegistersListSize(size_t size)
{
	registersStruct result;
	result.count = size;
	allocRegistersList(result);
	return result;
}

void clearRegistersList(registersStruct & list)
{
	if(list.count > 0) {
		delete [] list.elements;
		list.count = 0;
	}
}

void memcpyRegistersLists(registersStruct & desitnation, registersStruct & source, size_t offset=0, int maxLength=-1)
{
	if(maxLength<0) maxLength=source.count;
	for(size_t i=0; i<source.count && i<maxLength; i++) {
		desitnation.elements[i+offset] = source.elements[i];
	}
}

registerStruct getRegisterInfoFromUser()
{
	registerStruct result;

	cout<<"Type register name: ";
	getline(cin, result.name);
	cout<<"Enter register value: ";
	int test;
	cin>>test;
	result.value = test;

	cout<<result.name<<" "<<result.value;
	cin.get();
	return result;
}

void addRegisterToRegistersList(registersStruct & registers, registerStruct newRegister) {
	cout<<registers.count<<endl;
	const size_t newRegistersCount = registers.count+1;
	registersStruct newRegistersList = allocRegistersListSize(newRegistersCount);
	memcpyRegistersLists(newRegistersList, registers);
	newRegistersList.elements[newRegistersList.count-1] = newRegister;
	clearRegistersList(registers);
	registers = allocRegistersListSize(newRegistersCount);
	memcpyRegistersLists(registers, newRegistersList);
	for(int i=0; i<registers.count; i++) cout<<registers.elements[i].name<<endl;
	cout<<registers.count<<endl;
}

void createRegister(registersStruct & registers)
{
	registerStruct newRegister = getRegisterInfoFromUser();
	addRegisterToRegistersList(registers, newRegister);
	cin.get();
}

int main()
{
	bool appQuit = false;
	elementListStruct stackElements = {NULL, 0};
	registersStruct registers = {NULL, 0};
	while(!appQuit)
	{
		if (system("CLS")) system("clear");
		cout<<"1. Push element"<<endl;
		cout<<"2. Pop element"<<endl;
		cout<<"3. Create register"<<endl;
		cout<<"4. Move data from register to register"<<endl;
		cout<<"5. Exit"<<endl;
		cout<<endl<<"Registers:"<<endl<<endl;
		for(size_t i=0; i<registers.count; i++) cout<<registers.elements[i].name<<" : "<<registers.elements[i].value<<endl;
		cout<<endl<<"Stack:"<<endl<<endl;
		for(size_t i=0; i<stackElements.count; i++) cout<<i<<". - "<<stackElements.elements[i].value<<" ; "<<stackElements.elements[i].comment<<endl;

		char choose = getch();
		switch(choose)
		{
			case '1':
				pushElementOnTheStack(stackElements);
				break;
			case '2':
				popElementFromTheStack(stackElements);
				break;
			case '3':
				createRegister(registers);
				break;
			case '5':
				appQuit = true;
				break;
		}
	}
	delete [] stackElements.elements;
	delete [] registers.elements;
	return 0;
}

 

Podobne pytania

0 głosów
0 odpowiedzi 1,938 wizyt
pytanie zadane 15 marca 2020 w Python przez Hakax Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 146 wizyt

88,720 zapytań

137,332 odpowiedzi

306,818 komentarzy

58,907 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

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

...