Advertisement
Irlan

Lista Estática.

May 14th, 2014
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 13.34 KB | None | 0 0
  1. /*
  2.   Name: *** Clube Esportivo Estrela do Sul ***
  3.   Autor: Irlan, Savyo, Anderson
  4.   Trabalho: Av1
  5. */
  6.  
  7. #include <iostream>
  8. #include <stdlib.h>
  9. #include <string.h>
  10.  
  11.  
  12. #define TAM_NOM 20
  13. #define TAM_ALT 20
  14. #define TAM_INC 20   //Valores definidos no cabeçalho
  15. #define TAM_IDA 20    //para evitar ter que ficar alterando todo o código.
  16. #define TAM_CAR 20
  17. #define TAM_VET 20
  18. #define TEMP_SAIR 80
  19.  
  20.  
  21. using namespace std;
  22.  
  23.       struct club {
  24.       char nome[TAM_NOM];
  25.       char altura[TAM_ALT];
  26.       char inscricao[TAM_INC];
  27.       char idade[TAM_IDA];
  28.       char caracteristica[TAM_CAR];
  29.      
  30.       struct club *proximo; //Aponta para a proxima struct.
  31.      
  32. } *inicio, *ultimo, *novo; // Ponteiros apontando para o struct, zerados sem apontar para lugar nenhum.
  33.  
  34.  
  35. typedef club cadAtleta; // Apelido
  36.  
  37.  
  38. int cadastrado(char atletas[TAM_VET]); // Prototipo da função VERIFICAR.
  39.  
  40.  
  41. //Função Chama Digitar - INÍCIO
  42.  
  43. void digitar(void){   //Função digitar(); criada para enxugar o código onde os são passado por referencia.
  44.      
  45.  cin.clear();       //Limpa sujeira digitada
  46.  fflush(stdin);    //Limpa sujeira digitada
  47.  cout<< "Nome:\n"<<endl;
  48.  cin.getline (novo->nome, TAM_NOM);  // novo, ponteiro que adiciona num novo espaço alocado na função inserir.
  49.  
  50.  cin.clear();
  51.  fflush(stdin);
  52.  cout << "\nIdade:\n"<<endl;
  53.  cin.getline (novo->idade, TAM_IDA);// cin.getline - Utilizada para poder aceitar espaço
  54.  
  55.  cin.clear();
  56.  fflush(stdin);
  57.  cout << "\nAltura:\n"<<endl;
  58.  cin.getline (novo->altura, TAM_ALT);      //Cadastra os dados dos Atletas
  59.  
  60.  cin.clear();
  61.  fflush(stdin);
  62.  cout << "\ninscricao:\n"<<endl;
  63.  cin.getline (novo->inscricao, TAM_INC);
  64.  
  65.  cin.clear();
  66.  fflush(stdin);
  67.  cout << "\nCaracteristica:\n"<<endl;
  68.  cin.getline (novo->caracteristica, TAM_CAR);
  69.        
  70. }
  71.  
  72. //Função chama Digitar - FIM
  73.  
  74. //Função INSERIR Atletas - INÍCIO
  75.  
  76. int inserir(){
  77.  
  78.  
  79. cadAtleta *p;  //Cria um ponteiro para a struct cadAtleta, variavel local;
  80. novo = (cadAtleta*)malloc(sizeof(cadAtleta));     //Recebe como parâmetro o tamanho em bytes da região a ser alocada e retorna um ponteiro para a área alocada.
  81.                                                        //Se ocorrer um erro ao alocar memória, retorna um ponteiro para NULL.        
  82. if(novo == NULL) { // Verifica se o ponteiro *novo está vazio
  83.  system ("color 0C"); // Comandos de cor
  84.  cout << " Erro ao tentar alocar memoria.\n";          //Verifica o que houve erro ao alocar na memória.
  85. return 0; // Retorno de informação positiva.
  86. }
  87.  
  88.  system("cls");     //Comando Limpar tela
  89.  system("date /t"); //Comando Mostrar data
  90.  system("time /t"); //Comando Mostrar hora
  91.  cout << "=*=*=*=*=*=*=*=*=*=*=Clube Esportivo Estrela do Sul=*=*=*=*=*=*=*=*=*=*=*=*=*=";
  92.  cout << "\n";
  93.  cout << "\n\nCadastro:\n\n";
  94.  cout << "\n------------------------\n\n";
  95.  
  96. digitar(); // Função chamada para se digitar
  97.  
  98. if(cadastrado(novo->nome) == 1){        //Verifica se o Atleta já está cadastrado. uso do Return.
  99.  
  100.  system ("color 0C");  //Comando para mudar a cor da tela                                
  101.  cout << "\n\n Erro ao tentar cadastrar Atleta.";
  102. return 0; // Retorno de informação positiva.
  103. }
  104.  
  105. novo->proximo = NULL;  
  106.  
  107. if(inicio == NULL)
  108. {
  109. inicio = novo;
  110. ultimo = novo;
  111. }
  112. else
  113. {
  114. ultimo->proximo = novo;
  115. novo->proximo = NULL;
  116. ultimo = novo;
  117. }
  118. return 1;
  119. }
  120.  
  121. //Função INSERIR Atletas - FIM
  122.  
  123. //Função LISTAR Atletas - INÍCIO
  124.  
  125. int listar(){
  126.    
  127. cadAtleta *p; //Cria um ponteiro para a struct cadAtleta
  128. p = inicio; //O ponteiro p agora aponta para o mesmo local que o *inicio está apontando.
  129. if(inicio == NULL){   //Verifica se o Atleta já está cadastrado
  130.  system ("color 0C");
  131.  cout << "\n *** Nao existem Atletas cadastrados!!! \n\n";
  132. }
  133. else
  134. {
  135.  system("cls");    
  136.  system("date /t");
  137.  system("time /t");
  138.  cout << "_______________________*** Clube Esportivo Estrela do Sul ***__________________________";
  139.  system("ver");
  140.  cout << "\n";
  141.  cout << "\nLista de Atletas:\n\n";
  142.  cout << "\n------------------------\n\n";
  143. do {
  144.    
  145.  cout << "Atleta - Nome : "<< p->nome <<endl;
  146.  cout << "Altura : "<< p->altura <<endl;
  147.  cout << "N° de inscricao : "<< p->inscricao <<endl;       //Exibe os dados dos Atletas
  148.  cout << "Idade do Atleta : "<< p->idade <<endl;
  149.  cout << "Caracteristicas : "<< p->caracteristica <<endl;
  150.  cout << "\n------------------------\n";
  151.                
  152. p = p->proximo;
  153.  
  154. }
  155. while(p != NULL);
  156. }
  157.  system("pause");
  158.  
  159. }
  160.  
  161. //Função LISTAR Atletas - FIM
  162.  
  163. //Função BUSCAR Atletas - INÍCIO
  164.  
  165. int buscar(char Atletas[TAM_VET]){
  166.  
  167. cadAtleta *p;
  168. int v = 0; //Verificação, se for 1(Atleta foi encontrado), 0(Atleta nào foi encontrado)
  169. p = inicio;
  170. if(inicio == NULL){
  171.  system ("color 0C");
  172.  cout << "\n *** Nao existem Atletas cadastrados!!! \n\n";
  173. return 0;
  174. }
  175. else {
  176. do {
  177. if(!strcmp(p->nome,Atletas)){
  178. v++;
  179. break;
  180. }
  181. p = p->proximo;
  182. } while(p != NULL);
  183. }
  184. if(v > 0){
  185.      
  186.  cout << "\n------------------------\n\n";
  187.  cout << "Atleta - Nome : "<< p->nome <<endl;
  188.  cout << "Altura : "<< p->altura <<endl;
  189.  cout << "N° de inscricao : "<< p->inscricao <<endl;      //Exibe os dados do Atleta que foi encontrado
  190.  cout << "Idade do Atleta : "<< p->idade <<endl;
  191.  cout << "Caracteristcas : "<< p->caracteristica <<endl;
  192.  cout << "\n------------------------\n";
  193.  
  194. return 1;
  195. }
  196. else {
  197.  system ("color 0C");  
  198.  cout << "\n\n    Atleta nao encontrado.\n";
  199. return 0;
  200. }
  201.  
  202. }
  203.  
  204. //Função BUSCAR Atletas - FIM
  205.  
  206. //Função VERIFICAR Atletas - INICIO
  207.  
  208. int cadastrado(char Atletas[TAM_VET])
  209. {
  210. cadAtleta *p; // Ponteiro apontando para a struct vazia.
  211. int v = 0;
  212. p = inicio; // Aponta para o 1° endereço da struct.
  213. if(inicio != NULL) // Se inicio for diferente de vazia
  214. {
  215. do {
  216. if(!strcmp(p->nome,Atletas)) // Verifica se o nome já tem dentro da struct
  217. {
  218. v++; // So pra dizer o numero da posição da que foi cadastrado.
  219. break;
  220. }
  221. p = p->proximo; // Aponta para o proximo
  222. }
  223. while(p != NULL);
  224. }
  225. if(v > 0)
  226. {
  227. return 1; // Retorna se tiver alquem cadastrado com o mesmo nome.
  228. }
  229. else {
  230. return 0;
  231. }
  232.  
  233. }
  234.  
  235. //Função VERIFICAR Atletas - FIM
  236.  
  237. //Função ALTERAR Atletas - INÍCIO
  238.  
  239. int alterar(char Atletas[TAM_VET]){
  240.    
  241. cadAtleta *p;
  242. int v = 0;
  243. p = inicio;
  244. if(inicio == NULL){
  245.  system ("color 0C");
  246.  cout << "\n *** Nao existem Atletas cadastrados!!! \n\n";
  247. return 0;
  248. }
  249. else {
  250. do {
  251. if(!strcmp(p->nome,Atletas)){
  252. v=1;
  253. break;
  254. }
  255. p = p->proximo;
  256. } while(p != NULL);
  257. }
  258. if(v > 0){            //Verificação, caso encontre irá exibir e alterar os dados do Atleta.
  259.  
  260.  cout << "\n------------------------\n\n";
  261.  cout << "Atleta - Nome : "<< p->nome <<endl;
  262.  cout << "Altura : "<< p->altura <<endl;
  263.  cout << "N° de inscricao : "<< p->inscricao <<endl;    //Exibe os dados dos Atletas
  264.  cout << "Idade do Atleta : "<< p->idade <<endl;
  265.  cout << "Caracteristicas : "<< p->caracteristica <<endl;
  266.  cout << "\n------------------------\n";
  267.  
  268.  cout << "\n\nAlteracao do Atleta:\n\n";
  269.  cout << "\n------------------------\n\n";
  270.  
  271. digitar();
  272.  
  273. return 1;
  274. }
  275. else {
  276.  system ("color 0C");  
  277.  cout << "\n\n    Atleta nao encontrado.\n";
  278. return 0;
  279. }
  280.  
  281. }
  282.  
  283. //Função ALTERAR Atletas - FIM
  284.  
  285. //Função DELETAR Atletas - INÍCIO
  286.  
  287. int deletar(char Atletas[TAM_VET]) {
  288. int r = 0;
  289. cadAtleta *antes, *atual, *ultimoo, *pass = NULL;
  290. antes = atual = inicio;
  291. if(inicio == NULL){
  292.  system ("color 0C");
  293.  cout << "\n *** Nao existem Atletas cadastrados!!! \n\n";
  294. return 0;
  295. }
  296. do {
  297. if(!strcmp(atual->nome,Atletas)) {
  298. if (atual == inicio && ultimo == NULL) {
  299. free(atual);
  300. inicio = NULL;
  301. r = 1;
  302. break;
  303. }
  304. else if(atual == inicio) {
  305. inicio = atual->proximo;
  306. free(atual);
  307. r = 1;                //Verificação, 1 - foi excluído, 2 - não foi excluído.
  308. break;
  309. }
  310. else if (atual->altura == ultimo->altura) {
  311. ultimo->proximo = antes;
  312. antes->proximo = NULL;
  313. free(atual);
  314. r = 1;
  315. ultimo = antes;
  316. break;
  317. }
  318. else {
  319. pass = atual;
  320. pass = atual->proximo;
  321. antes->proximo = pass;
  322. r = 1;
  323. free(atual);
  324. break;
  325. }
  326. }
  327. else {
  328. antes = atual;
  329. atual = atual->proximo;
  330.  
  331. }
  332. } while(antes != ultimo);
  333. if(r > 0){ return 1; } else { return 0;
  334. }
  335.  
  336. }
  337.  
  338. //Função DELETAR Atletas - FIM
  339.  
  340. //Função SAIR - INÍCIO
  341.  
  342. void sair(void){
  343.      
  344.  cout << "\n                            FECHANDO......\n\n";
  345.        int i;                          
  346.        for (i=0; i<TEMP_SAIR; i++){
  347.  system ("color A");
  348.  printf("%c", 219);
  349.        }
  350.        exit(1);
  351. }
  352.  
  353. //Função SAIR - FIM
  354.  
  355. //Função Chama CADASTRO - INÍCIO
  356.  
  357. void cadastro(void){
  358.      
  359. if(inserir() == 1) {
  360.  system ("color F2");
  361.  cout << "\n\n *** Atleta registrado com sucesso !!! \n\n\n";
  362. }
  363. else {
  364.  system ("color 0C");    
  365.  cout << "\n\n *** Atleta ja existe no cadastro !!!\n\n\n";
  366. }
  367.  system("pause");
  368.        
  369. }
  370.  
  371. //Função chama CADASTRO - FIM
  372.  
  373. //Função Chama BUSCA - INÍCIO
  374.  
  375. void buscapac(void){
  376.  
  377. char Atletas[TAM_VET];
  378.  cin.clear();
  379.  fflush(stdin);
  380.  system("cls");    
  381.  system("date /t");
  382.  system("time /t");
  383.  cout << "_______________________*** Clube Esportivo Estrela do Sul ***__________________________";
  384.  system("ver");
  385.  cout << "\n";
  386.  cout << "\nBUSCA de Atletas:\n\n";
  387.  cout << "\n------------------------\n\n";
  388.  cout<< "Nome do Atleta para BUSCAR:\n"<<endl;
  389.  cin.getline (Atletas, TAM_NOM);
  390.                    
  391. buscar(Atletas);
  392.  system("pause");
  393.        
  394. }
  395.  
  396. //Função Chama BUSCA - FIM
  397.  
  398. //Função Chama ALTERAR - INÍCIO
  399.  
  400. void alterapac(void){
  401.  
  402. char Atletas[TAM_VET];
  403.  cin.clear();
  404.  fflush(stdin);
  405.  system("cls");    
  406.  system("date /t");
  407.  system("time /t");
  408.  cout << "_______________________*** Clube Esportivo Estrela do Sul ***__________________________";
  409.  system("ver");
  410.  cout << "\n";
  411.  cout << "\n Alteracao de Atletas:\n\n";
  412.  cout << "\n------------------------\n\n";
  413.  cout<< "Nome do Atleta para alterar:\n"<<endl;
  414.  cin.getline (Atletas, TAM_NOM);
  415.                    
  416. alterar(Atletas);
  417.  system("pause");
  418.        
  419. }
  420.  
  421. //Função Chama ALTERAR - FIM
  422.  
  423. //Função Chama DELETAR - INÍCIO
  424.  
  425. void deletapac(void){
  426.  
  427. char Atletas[TAM_VET];{
  428.  cin.clear();
  429.  fflush(stdin);
  430.  system("cls");    
  431.  system("date /t");
  432.  system("time /t");
  433.  cout << "_______________________*** Clube Esportivo Estrela do Sul ***__________________________";
  434.  system("ver");
  435.  cout << "\n";
  436.  cout << "\nExclusao de Atletas:\n\n";
  437.  cout << "\n------------------------\n\n";
  438.  cout<< "Nome do Atleta para EXCLUIR:\n"<<endl;
  439.  cin.getline (Atletas, TAM_NOM);
  440.  
  441.                    
  442. if(deletar(Atletas) == 1)
  443. {
  444.  system ("color F2");
  445.  cout << "\n\n *** Atleta excluido com sucesso. \n\n\n";
  446. }
  447. else
  448. {
  449.  system ("color 0C");
  450.  cout << "\n\n *** Nao foi possivel excluir Atleta. \n\n\n";
  451. }
  452. }
  453.  system("pause");
  454.  
  455. }    
  456.  
  457. //Função Chama DELETAR - FIM
  458.  
  459.  
  460. int main(void) {
  461.         char Atletas[TAM_VET];      
  462.         char escolha;
  463.         inicio = ultimo = novo = NULL;
  464.  
  465.         do {
  466.                 cin.clear();     //Limpa sujeira digitada
  467.                 fflush(stdin);   //Limpa sujeira digitada      
  468.                 system("title Club - Os Vingadores"); //Comando para Definir o título do programa
  469.                 system("cls");       //Comando Limpar tela
  470.                 system("date /t");   //Comando Mostrar data
  471.                 system("time /t");   //Comando Mostrar hora
  472.                 cout << "_______________________*** Clube Esportivo Estrela do Sul ***__________________________";
  473.                 system("ver");       //Comando Mostrar versão do S.O.
  474.                 cout << "\n";
  475.                 cout << "                           MENU - Seja Bem-Vindo!!!\n";
  476.                 cout << "  Escolha uma Opcao: \n\n";
  477.                 cout << "[1] - Incluir \n";
  478.                 cout << "[2] - Listar  \n";
  479.                 cout << "[3] - Buscar  \n";
  480.                 cout << "[4] - Alterar \n";
  481.                 cout << "[5] - Deletar \n";
  482.                 cout << "[6] - SAIR\n\n";
  483.                 cout << "\n Opcao:\n\n";
  484.                 system ("color F9");
  485.                
  486.                 cout << ">>> ";
  487.                 cin >> escolha;
  488.  
  489.                 switch(escolha) {
  490.                                
  491.                         case '1':
  492.                              
  493.                                 cadastro();
  494.                                 break;
  495.                                
  496.                         case '2':
  497.                              
  498.                                 listar();
  499.                                 break;
  500.  
  501.                         case '3':
  502.                              
  503.                                 buscapac();
  504.                                 break;
  505.  
  506.                         case '4':
  507.                              
  508.                                 alterapac();                
  509.                                 break;
  510.                                
  511.                         case '5':
  512.                              
  513.                                 deletapac();
  514.                                 break;
  515.  
  516.                         case '6':
  517.                        
  518.                                 sair();
  519.                                 break;
  520.  
  521.                         default:
  522.                                 system ("color 0C");
  523.                                 cout << "\nDigite uma opcao valida!\n\n";
  524.                                 system("pause");
  525.                                
  526.                                 break;
  527.                 }
  528.  
  529.         }
  530.  
  531.         while (escolha > 0);
  532.  
  533.         return 0;
  534. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement