Advertisement
Guest User

Untitled

a guest
May 25th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.71 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. char matriz[1000][1000];
  6.  
  7. void inicializar(char *matriz);
  8. void carregar(char *matriz, int linha);
  9. void imprimir(char *matriz, int linha);
  10. void buscar(char *matriz, char caracter, int linha, int *pi2);
  11. void intercalarLinhas(char *matriz, int linha, int linha2);
  12. void ordenarLinha(char *matriz, int linha);
  13. void quebrarString(char *matriz, int linha, int linha2);
  14.  
  15.  
  16. int main () {
  17. int sigla, linha, linha2;
  18. int loop=1, endereco;
  19. int *pi;
  20. char caracter;
  21.  
  22.  
  23. inicializar(*matriz);
  24. while (loop) {
  25.  
  26. scanf("%d", &sigla);
  27.  
  28. switch(sigla){
  29.  
  30. case 0:
  31. loop = 0;
  32. break;
  33. case 1:
  34. carregar(*matriz, linha);
  35. break;
  36.  
  37. case 2:
  38. imprimir(*matriz, linha);
  39. break;
  40. case 3:
  41. intercalarLinhas(*matriz, linha, linha2);
  42. break;
  43. case 4:
  44. scanf(" %c%d", &caracter, &linha);
  45. pi = &endereco;
  46. buscar(*matriz, caracter, linha, pi);
  47.  
  48. if (endereco == 0){
  49. printf("%c nao esta presente na linha %d.\n", caracter, linha);
  50. } else {
  51. printf("Posicao(%c) = [%d]\n", caracter, endereco - (int)&*(*matriz+1000*linha));
  52. }
  53. break;
  54. case 5:
  55. ordenarLinha(*matriz, linha);
  56. break;
  57. case 6:
  58. quebrarString(*matriz, linha, linha2);
  59. break;
  60. }
  61. }
  62.  
  63.  
  64. return 0;
  65. }
  66.  
  67.  
  68. void buscar(char *matriz, char caracter, int linha, int *pi) {
  69. int i;
  70.  
  71.  
  72. for(i=0;i<1000;i++){
  73. if(*(matriz+i+1000*linha) == caracter){
  74. *pi = (int)&*(matriz+i+1000*linha);
  75. break;
  76. }
  77. if(i==999){
  78. *pi = 0;
  79. break;
  80. }
  81. }
  82. return;
  83.  
  84. }
  85.  
  86. void inicializar(char *matriz){
  87. int i;
  88. for (i=0;i<1000000;i++){
  89. *(matriz+i) = 0;
  90. }
  91. return;
  92. }
  93.  
  94.  
  95. void carregar(char *matriz, int linha){
  96. char str_temp[1000];
  97. int i;
  98. char cac;
  99.  
  100. for(i=0;i<1000;i++){ str_temp[i] = 0; }
  101. scanf("%d ", &linha);
  102. for(i=0;i<1000;i++){
  103. scanf("%c", &cac);
  104. if(cac==10){ break; }
  105. str_temp[i] = cac;
  106. }
  107. for(i=0;i<1000;i++){
  108. *(matriz+i+1000*linha) = str_temp[i];
  109. }
  110. return;
  111. }
  112.  
  113.  
  114. void imprimir(char *matriz, int linha) {
  115. int i;
  116.  
  117. scanf("%d", &linha);
  118. for(i=0;i<1000;i++){
  119. if(*(matriz+i+1000*linha)==0){ break; }
  120. printf("%c", *(matriz+i+1000*linha));
  121. }
  122.  
  123. printf("\n");
  124. return;
  125.  
  126. }
  127.  
  128. void intercalarLinhas(char *matriz, int linha, int linha2) {
  129. int i, j=0;
  130. char str_temp[2000];
  131.  
  132. for(i=0;i<2000;i++) { str_temp[i] = 0; }
  133. scanf("%d %d", &linha, &linha2);
  134. for(i=0;i<2000;i++){
  135. if( *(matriz+j+1000*linha) != 0){
  136. str_temp[i] = *(matriz+j+1000*linha);
  137. if(*(matriz+j+1000*linha2) != 0){ i++; }
  138. }
  139. if(*(matriz+j+1000*linha2) != 0){
  140. str_temp[i] = *(matriz+j+1000*linha2);
  141. }
  142. j++;
  143. }
  144. for(i=0;i<1000;i++){ *(matriz+i+1000*linha) = str_temp[i]; }
  145. for(i=1000;i<2000;i++){
  146. j = 0;
  147. *(matriz+j+1000*linha2) = str_temp[i];
  148. j++;
  149. }
  150.  
  151. for(i=0;i<2000;i++){ printf("%d", str_tenp[i]); }
  152. return;
  153. }
  154.  
  155. void ordenarLinha(char *matriz, int linha) {
  156. int i, j, menor=300, reg_menor, tamanho;
  157. char str_temp[1000];
  158.  
  159. scanf("%d", &linha);
  160. for (i=0;i<1000;i++){ str_temp[i] = *(matriz+i+1000*linha); }
  161. tamanho = strlen(str_temp);
  162. for(i=0;i<tamanho;i++){
  163. for(j=0;j<1000;j++){
  164. if((str_temp[j] < menor) && (str_temp[j] != 0)){
  165. menor = str_temp[j];
  166. reg_menor = j;
  167. }
  168. }
  169. *(matriz+i+1000*linha) = str_temp[reg_menor];
  170. str_temp[reg_menor] = 0;
  171. menor = 300;
  172. }
  173.  
  174.  
  175.  
  176. return;
  177. }
  178.  
  179.  
  180. void quebrarString(char *matriz, int linha, int linha2){
  181. int i, j=0, a=0;;
  182.  
  183. scanf("%d %d", &linha, &linha2);
  184. for(i=0;i<1000;i++){
  185. if(i==a && *(matriz+i+1000*linha)==32){
  186. a++;
  187. continue;
  188. }
  189. if (*(matriz+i+1000*linha) == 32) {
  190. linha2++;
  191. j=0;
  192. a = i+1;
  193. continue;
  194. } else if (*(matriz+i+1000*linha) == 0) { break; }
  195. *(matriz+j+1000*linha2) = *(matriz+i+1000*linha);
  196. j++;
  197. }
  198.  
  199. return;
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement