RBCOL
(usa Outra)
Enviado em 23/05/2015 - 21:25h
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
#include <string>
int incremento = 1;
using namespace std;
struct lista{
int codigo;
char titulo[101];
char texto[501];
struct lista *prox;
};
typedef struct lista *Lista;
Lista inicializa(void){
return NULL;
}
Lista insere (Lista p){
Lista novo = (Lista)malloc(sizeof(lista));
Lista aux = p;
Lista aux2 = aux;
novo->codigo = incremento;
incremento++;
getchar();
//cout <<" Digite um titulo: ";
//gets(novo->titulo);
//cout << " Digite um texto : ";
//gets(novo->texto);
novo->titulo = titulo; nesta parte não roda, já tentei de todas as formas.
novo->prox =NULL;
if(aux == NULL)
return novo;
else{
while(aux->prox != NULL)
aux = aux->prox;
aux->prox = novo;
return p;
}
}
void imprime(Lista p){
Lista aux = p;
if(p == NULL){
cout << " Lista vazia\n";
return ;
}
while(aux != NULL){
cout << " Codigo: " << aux->codigo;
cout << "\n";
cout << " Titulo: " << aux->titulo << "\n Texto: " << " " << aux->texto;
cout << "\n\n";
aux = aux->prox;
}
}
bool vazia (Lista* l){
return(l == NULL);
}
Lista altera (Lista l){
Lista ant = NULL;
Lista p = l;
int codigo;
char titulo[101], titulo2[501];
cout << " Digite o codigo que deseja alterar: ";
cin >> codigo;
while(p != NULL && p->codigo != codigo){
ant = p;
p = p->prox;
}
if(p == NULL){
cout << " Comando nao encontrado";
return l;
}
cout << " Codigo encontrado: ";
cout << " Codigo: " << codigo << "\n" << " " << p->titulo << p->texto;
cout << "\n\n";
cout << " Digite um novo titulo: ";
getchar();
gets(p->titulo);
cout << " Digite um novo texto : ";
gets(p->texto);
return l;
}
Lista exclui (Lista l){
Lista ant = NULL;
Lista p = l;
int codigo;
cout << " Digite o codigo que deseja remover: ";
cin >> codigo;
while(p != NULL && p->codigo != codigo){
ant = p;
p = p->prox;
}
if(p == NULL)
return l;
if(ant == NULL){
l = p->prox;
}
else{
ant->prox = p->prox;
}
free(p);
return l;
}
int main(void){
Lista lista = inicializa();
string comando;
string titulo1;
string texto1;
int i,j,k,tam,tam2;
cout << "\n\t\t ANOTAI\n\n\n";
while(comando.substr(0,4) != "SAIR"){
//cout << "\n 1 - INSERE \n 2 - ATUALIZA \n 3 - DELETA \n 4 - SELECIONA \n 0 - SAIR\n\n";
cout << "\n Linha de comando: ";
getline(cin, comando);
if ( comando.substr(0,6) == "INSERE"){
i = comando.find("'") +1;
j = comando.find(",");
k = comando.find(")");
tam =j-i;
tam2 = k - (j + 1);
titulo1 = comando.substr(9,21);
texto1 = comando.substr(34,13);
cout << "(" << titulo1 << "" << texto1 <<")" << "\n";
char *titulo = new char[titulo1.length()+1];
memcpy(titulo, titulo1.c_str(), titulo1.length()+1);
char *texto = new char[texto1.length()+1];
memcpy(texto, texto1.c_str(), texto1.length()+1);
cout << "\n\n" << titulo << "\n\n\n" << texto << "\n\n\n";
lista = insere (lista);
}else if(comando.substr(0,8) == "ATUALIZA"){
lista = altera(lista);
}else if (comando.substr(0,6) == "DELETA"){
lista = exclui(lista);
}else if (comando.substr(0,9) == "SELECIONA"){
imprime(lista);
}else
cout << " Comando invalido!\n\n";
}
system ("pause");
return(0);
}