Guest User

Untitled

a guest
Nov 23rd, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.57 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define tamL 100
  6.  
  7. typedef struct{
  8. int matAp[tamL];
  9. float notaAp[tamL];
  10. }aprovados;
  11.  
  12. typedef struct{
  13. int n;//quantidade de alunos
  14. int limite;
  15. int mat[tamL];
  16. float nota[tamL];
  17. aprovados apr;
  18. }aluno;
  19.  
  20. //funçoes
  21. int menu();
  22. void iniciar(aluno *a);
  23. void inserirFinal(aluno *a);//1
  24. void limite(aluno *a);//2
  25. void localizarMatricula(aluno *a);//3
  26. void localizarPosicao(aluno *a);//4
  27. void excluir(aluno *a);//5
  28. void maiorNota(aluno *a);//6
  29. void substituir(aluno *a);//7
  30. void ordenar(aluno *a);//8
  31. void listaAprovados(aluno *a);//9
  32. void mostrar(aluno *a);//10
  33.  
  34. int main(){
  35.  
  36. menu();
  37.  
  38. }
  39. void iniciar(aluno *a){
  40. a->n = 0;
  41. a->limite = tamL;
  42. }
  43. void inserirFinal(aluno *a){//1
  44.  
  45. system("clear");
  46.  
  47. printf("\t\t\t-----------------Inserir-----------------\n");
  48. if(a->n > tamL-1 || a->n > a->limite-1){
  49. printf("\n\t\t\terro – elemento fora dos limites");
  50. }else if(a->n <= a->limite-1){
  51. printf("\n\t\t\tDados%d", a->n);
  52. printf("\n\t\t\tInforme numero de matricula:");
  53. scanf("%d", &a->mat[a->n]);
  54. printf("\t\t\tInforme sua nota:");
  55. scanf("%f", &a->nota[a->n]);
  56. a->n++;
  57. }
  58. }
  59. void limite(aluno *a){//2
  60.  
  61. system("clear");
  62.  
  63. printf("\t\t\t-----------------Limite-----------------\n\n");
  64. printf("\t\t\tQual limite de alunos:");
  65. scanf("%d", &a->limite);
  66.  
  67. if(a->limite-1 > tamL-1){
  68. printf("\t\t\tErro - Limite maior que quantidade suportada (500)");
  69. a->limite = tamL;
  70. }else{
  71. printf("\t\t\t-----------------Limite Atualizado!!!-----------------\n");
  72. printf("\t\t\t-----------------Seu novo limite e %d-----------------", a->limite);
  73. }
  74. }
  75. void localizarMatricula(aluno *a){//3
  76. int verificar, erro = 0;
  77.  
  78. system("clear");
  79.  
  80. printf("\t\t\t-----------------Localizar por matricula-----------------\n");
  81. printf("\t\t\t\n matricula do aluno:");
  82. scanf("%d", &verificar);
  83.  
  84. for(a->n = 0; a->n <= a->limite; a->n++){
  85. if(verificar == a->mat[a->n]){
  86. printf("\n\t\t\tMatricula:%d", a->mat[a->n]);
  87. printf("\n\t\t\tNota:%f", a->nota[a->n]);
  88. erro++;
  89. }
  90. }
  91. if(erro == 0){
  92. printf("\n\t\t\tErro - Matricula nao encontrada");
  93. }
  94. }
  95. void localizarPosicao(aluno *a){//4
  96. int posi, erro = 0;
  97.  
  98. system("clear");
  99.  
  100. printf("\t\t\t-----------------Localizar por posicao-----------------\n");
  101. printf("\n\t\t\tPosicao do aluno:");
  102. scanf("%d", &posi);
  103.  
  104. if(posi > a->limite-1){
  105. printf("\t\t\tErro - posicao maior que existente");
  106. }else{
  107.  
  108. for(a->n = 0; a->n <= a->limite; a->n++){
  109. if(posi == a->n){
  110. printf("\n\t\t\tMatricula:%d", a->mat[a->n]);
  111. printf("\n\t\t\tNota:%f", a->nota[a->n]);
  112. erro++;
  113. }
  114. }
  115. }
  116.  
  117. if(erro == 0){
  118. printf("\n\t\t\tErro - Posicao nao encontrada");
  119. }
  120. }
  121. void excluir(aluno *a){//5
  122. int removed;
  123. int mat_temp;
  124. float nota_temp;
  125.  
  126. system("clear");
  127.  
  128. printf("Digite qual elemento deseja excluir");
  129. scanf("%d", &removed);
  130.  
  131. if(removed > a->limite){
  132. printf("\t\t\tErro - Limite maior que quantidade suportada (500)");
  133. }else{
  134. mat_temp = a->mat[a->limite-1];
  135. nota_temp = a->nota[a->limite-1];
  136.  
  137. a->mat[a->limite-1] = a->mat[removed];
  138. a->nota[a->limite-1] = a->nota[removed];
  139.  
  140. a->mat[removed] = mat_temp;
  141. a->nota[removed] = nota_temp;
  142.  
  143. a->limite--;
  144. }
  145. }
  146. void maiorNota(aluno *a){//6
  147. float maior = 0;
  148. int aux;
  149.  
  150. system("clear");
  151.  
  152. for(a->n = 0; a->n < a->limite; a->n++){
  153. if(a->nota[a->n] >= maior){
  154. maior = a->nota[a->n];
  155. aux = a->n;
  156. }
  157. }
  158.  
  159. printf("\t\t\t-----------------Maior nota\n-----------------");
  160.  
  161. for(a->n = 0; a->n <= a->limite; a->n++){
  162. if(aux == a->n){
  163. printf("\t\t\tMatricula:%d", a->mat[a->n]);
  164. printf("\n\t\t\tNota:%f", a->nota[a->n]);
  165. }
  166. }
  167. }
  168. void substituir(aluno *a){//7
  169. int subs;
  170.  
  171. system("clear");
  172.  
  173. printf("\t\t\t-----------------Substituir:-----------------\n");
  174. printf("\n\t\t\tInforme a posicao do aluno que deseja substituir:");
  175. printf("\t\t\tOBS: apartir do numero'0'");
  176. scanf("%d", &subs);
  177.  
  178. if(subs > a->limite-1){
  179. printf("\n\t\t\tErro - Valor informado maior que limite\n");
  180. }else{
  181. for(a->n = 0; a->n < a->limite; a->n++){
  182. if(subs == a->n){
  183. printf("\n\n\t\t\tPosicao %d \n", a->n);
  184. printf("\t\t\tMudar atricula %d para :", a->mat[a->n]);
  185. scanf("%d", &a->mat[a->n]);
  186. printf("\t\t\tMudar nota %.2f para:", a->nota[a->n]);
  187. scanf("%f", &a->nota[a->n]);
  188.  
  189. printf("\n\n\t\t\tNova Posicao %d\n", a->n);
  190. printf("\t\t\tMatricula:%d\n", a->mat[a->n]);
  191. printf("\t\t\tNota:%.2f\n", a->nota[a->n]);
  192. }
  193. }
  194. }
  195.  
  196. }
  197. void ordenar(aluno *a){//8
  198. int j, aux;
  199. float auxf;
  200.  
  201. for(a->n = 0; a->n < a->limite; a->n++){
  202. for(j=a->n+1; j < a->limite; j++){
  203. if(a->mat[a->n] > a->mat[j]){
  204.  
  205. aux = a->mat[a->n];
  206. a->mat[a->n] = a->mat[j];
  207. a->mat[j] = aux;
  208.  
  209. auxf = a->nota[a->n];
  210. a->nota[a->n] = a->nota[j];
  211. a->nota[j] = auxf;
  212. }
  213. }
  214. }
  215.  
  216.  
  217. printf("\t\t\t-----------------Ordenada com sucesso:-----------------");
  218. }
  219. void listaAprovados(aluno *a){//9
  220.  
  221. system("clear");
  222.  
  223. printf("\t\t\t-----------------Aprovados-----------------\n\n");
  224.  
  225. for(a->n = 0; a->n < a->limite; a->n++){
  226. if(a->nota[a->n] >= 7 ){
  227. a->apr.matAp[a->n] = a->mat[a->n];
  228. a->apr.notaAp[a->n] = a->nota[a->n];
  229. printf("\t\t\tMatricula:%d\n", a->apr.matAp[a->n]);
  230. printf("\t\t\tNota:%.2f\n\n", a->apr.notaAp[a->n]);
  231. }
  232. }
  233.  
  234. }
  235. void mostrar(aluno *a){//10
  236.  
  237. system("clear");
  238.  
  239. printf("\t\t\t-----------------Todos os alunos:\n-----------------");
  240.  
  241. for(a->n = 0; a->n < a->limite; a->n++){
  242.  
  243. printf("\n\t\t\tDados %d\n", a->n);
  244. printf("\t\t\tMatricula: %d\n", a->mat[a->n]);
  245. printf("\t\t\tNota:%f\n",a->nota[a->n]);
  246. }
  247. }
  248. int menu(){
  249. aluno a;
  250. iniciar(&a);
  251.  
  252. int m = -1;
  253.  
  254. while(m != 0){
  255. printf("\t\t\t-----------------Menu Lista-----------------\n\n");
  256. printf("\t\t\t0 - Sair\n");
  257. printf("\t\t\t1 - Inserir\n");
  258. printf("\t\t\t2 - Inserir limite\n");
  259. printf("\t\t\t3 - Localizar por matricula:\n");
  260. printf("\t\t\t4 - Localizar por posicao:\n");
  261. printf("\t\t\t5 - Excluir um aluno(n\n");
  262. printf("\t\t\t6 - Maior nota\n");
  263. printf("\t\t\t7 - Substituir\n");
  264. printf("\t\t\t8 - Ordenar\n");
  265. printf("\t\t\t9 - Lista de Aprovados\n");
  266. printf("\t\t\t10 - Mostrar\n");
  267. printf("Informe opção desejada:");
  268. scanf("%d", &m);
  269.  
  270. switch (m){
  271. case 0:
  272. m = 0;
  273. break;
  274.  
  275. case 1:
  276. inserirFinal(&a);
  277. break;
  278.  
  279. case 2:
  280. limite(&a);
  281. break;
  282.  
  283. case 3:
  284. localizarMatricula(&a);
  285. break;
  286.  
  287. case 4:
  288. localizarPosicao(&a);
  289. break;
  290.  
  291. case 5:
  292. excluir(&a);
  293. break;
  294.  
  295. case 6:
  296. maiorNota(&a);
  297. break;
  298.  
  299. case 7:
  300. substituir(&a);
  301. break;
  302.  
  303. case 8:
  304. ordenar(&a);
  305. break;
  306.  
  307. case 9:
  308. listaAprovados(&a);
  309. break;
  310.  
  311. case 10:
  312. mostrar(&a);
  313. break;
  314. }
  315. }
  316.  
  317. return 0;
  318. }
Add Comment
Please, Sign In to add comment