• 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.

Object Storage Arubacloud
+1 głos
253 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 4,413 wizyt
pytanie zadane 15 marca 2020 w Python przez Hakax Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 392 wizyt

92,563 zapytań

141,416 odpowiedzi

319,596 komentarzy

61,948 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...