kalo93

Untitled

Feb 4th, 2015
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.09 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #include <conio.h>
  5. #define MAX 200
  6.  
  7. typedef struct cel
  8. {
  9. int cod;
  10. char nome[MAX];
  11. char cc[MAX];
  12. char date[MAX];
  13. struct cel *prox;
  14. }celula;
  15.  
  16. //celula* é o tipo do retorno da função
  17. //cria_celula, e eu ia colocar void nos parenteses da função para que a função não recebesse dados
  18. //coloca as variáveis a nulo
  19. celula* cria_celula()
  20. {
  21. celula *nova;
  22. nova = (celula*)malloc( sizeof(celula) );
  23. if(nova != NULL)
  24. {
  25. nova->prox = NULL;
  26. nova->nome[0] = '\0';
  27. nova->cc[0] = '\0';
  28. nova->date[0] = '\0';
  29. nova->cod = -1;
  30. }
  31. return nova;
  32. }
  33.  
  34.  
  35. //função que só serve para ir buscar aos apontadores os dados dos utentes
  36. void mostra(celula *x)
  37. {
  38. printf("\nCódigo: %d ", x->cod);
  39. printf("\nNome: %s",x->nome);
  40. printf("\nCartão de Cidadão: %s",x->cc);
  41. printf("\nData: %s",x->date);
  42. printf("\n");
  43. printf("\n");
  44. }
  45.  
  46. //lista
  47. void listar(celula *lista)
  48. {
  49. celula *p;
  50. if (lista == NULL)
  51. {
  52. printf("\nnão tem nada.\n");
  53. getchar();
  54. return;
  55. }
  56.  
  57. printf("\nlista: ");
  58. for (p = lista; p != NULL; p = p->prox)
  59. //chama a função anterior que mostra os dados
  60. {
  61. mostra(p);
  62. }
  63. getch();
  64. }
  65.  
  66. //pesquisa...
  67. celula *busca(celula *lista)
  68. {
  69. int num = 0;
  70. celula *p;
  71. printf("numero para procurar: ");
  72. scanf("%d",&num);
  73. //se não fizer getchar ele não faz a pesquisa
  74. getchar();
  75.  
  76. p = lista;
  77. while( (p != NULL) && (p->cod != num) )
  78. p = p->prox;
  79. return p;
  80. }
  81.  
  82. //inserir
  83. void insere(celula **lista)
  84. {
  85. celula *nova = cria_celula();
  86. if(nova == NULL)
  87. {
  88. printf("Nao foi possivel criar uma nova celula!");
  89. getchar();
  90. return;
  91. }
  92. printf("Numero: ");
  93. scanf("%d",&nova->cod);
  94. printf("Nome: ");
  95. scanf(" %s",nova->nome);
  96. printf("Cartão de Cidadão: ");
  97. scanf(" %s",nova->cc);
  98. printf("Data: ");
  99. scanf(" %s",nova->date);
  100. nova->prox = *lista;
  101. *lista = nova;
  102. printf("Numero %d inserido.\n", nova->cod);
  103. getch();
  104. system("cls");
  105. }
  106.  
  107.  
  108. void remove(celula **lista)
  109. {
  110. if (*lista == NULL)
  111. {
  112. printf("\nLista vazia. Sem itens para remover.\n");
  113. getchar();
  114. return;
  115. }
  116. else
  117. {
  118. celula *remover = *lista;
  119. *lista = remover->prox;
  120. printf("\ncodigo do paciente: %d ",remover->cod);
  121. printf("\nNome do Paciente : %s",remover->nome);
  122. printf("\nCartão de Cidadão: %s",remover->cc);
  123. printf("\ndata: %s",remover->date);
  124. free(remover);
  125. getchar();
  126. }
  127. }
  128. ///este
  129. void remover_p(celula **lista)
  130. {
  131. if (*lista == NULL)
  132. {
  133. printf("\nLista vazia. Sem itens para remover.\n");
  134. getchar();
  135. return;
  136. }
  137. else
  138. {
  139. celula *remover = *lista;
  140. *lista = remover->prox;
  141. printf("\ncodigo do paciente: %d ",remover->cod);
  142. printf("\nNome do Paciente : %s",remover->nome);
  143. printf("\nCartão de Cidadão: %s",remover->cc);
  144. printf("\ndata: %s",remover->date);
  145. free(remover);
  146. getchar();
  147. }
  148. }
  149.  
  150.  
  151. void alterar(celula *lista)
  152. {
  153. celula *cel;
  154. //vai buscar a busca para fazer a pesquisa
  155. cel = busca(lista);
  156. if(cel == NULL)
  157. {
  158. printf("Numero encontrou!");
  159. getchar();
  160. return;
  161. }
  162.  
  163. //vai chamar a função mostrar
  164. mostra(cel);
  165. //apos mostrar
  166. //pede os novos valores
  167. printf("alterar\n");
  168. printf("************************\n");
  169. printf("Numero: ");
  170. scanf("%d",&cel->cod);
  171. printf("Nome: ");
  172. scanf(" %s",cel->nome);
  173. printf("Cartão de Cidadão: ");
  174. scanf(" %s",cel->cc);
  175. printf("Data: ");
  176. scanf(" %s",cel->date);
  177. }
  178.  
  179. char menu(void)
  180. {
  181. system("cls");
  182. char opcao;
  183.  
  184. printf(" Menu ");
  185. printf("\n*************************************");
  186. printf("\n* 1-Inserir paciente *");
  187. printf("\n* 2-Lista de pacientes *");
  188. printf("\n* 3-procurar paciente *");
  189. printf("\n* 4-paciente desisitiu *");
  190. printf("\n* 5-Alterar dados de paciente *");
  191. printf("\n* 6-primeiro paciente desistiu *");
  192. printf("\n* 0-sair *");
  193. printf("\n*************************************\n");
  194. printf("Opção: ");
  195. scanf(" %c",&opcao);
  196. getchar();
  197.  
  198. return opcao;
  199. }
  200.  
  201. int main(void)
  202. {
  203. setlocale(LC_ALL, "Portuguese");
  204.  
  205. celula *lista = NULL;
  206. char op;
  207. celula *p;
  208.  
  209. do
  210. {
  211. op = menu();
  212.  
  213. switch(op)
  214. {
  215. case '0':
  216. printf("\n\nsair...\n");
  217. break;
  218. case '1':
  219. insere(&lista);
  220. break;
  221. case '2':
  222. listar(lista);
  223. break;
  224. case '3':
  225. //procura até encontrar ou não
  226. p = busca(lista);
  227. if(p == NULL)
  228. {
  229. printf("nao encontrou...");
  230. getchar();
  231. }
  232. else
  233. {
  234. printf("\nencontrou");
  235. printf("\n*******************");
  236. //depois vai buscar a lista de dados que encontrou
  237. mostra(p);
  238. getchar();
  239. }
  240. break;
  241. case '4':
  242. remove(&lista);
  243. break;
  244. case '5':
  245. alterar(lista);
  246. break;
  247. case '6':
  248. remover_p(&lista);
  249. break;
  250. default:
  251. //não está muito bem não tive tempo
  252. printf("Opcao invalida!");
  253. printf(" enter para continuar...");
  254. getchar();
  255. }
  256.  
  257. } while (op != '0');
  258.  
  259. return 0;
  260. }
Advertisement
Add Comment
Please, Sign In to add comment