Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- char matriz[1000][1000];
- void inicializar(char *matriz);
- void carregar(char *matriz, int linha);
- void imprimir(char *matriz, int linha);
- void buscar(char *matriz, char caracter, int linha, int *pi2);
- void intercalarLinhas(char *matriz, int linha, int linha2);
- void ordenarLinha(char *matriz, int linha);
- void quebrarString(char *matriz, int linha, int linha2);
- int main () {
- int sigla, linha, linha2;
- int loop=1, endereco;
- int *pi;
- char caracter;
- inicializar(*matriz);
- while (loop) {
- scanf("%d", &sigla);
- switch(sigla){
- case 0:
- loop = 0;
- break;
- case 1:
- carregar(*matriz, linha);
- break;
- case 2:
- imprimir(*matriz, linha);
- break;
- case 3:
- intercalarLinhas(*matriz, linha, linha2);
- break;
- case 4:
- scanf(" %c%d", &caracter, &linha);
- pi = &endereco;
- buscar(*matriz, caracter, linha, pi);
- if (endereco == 0){
- printf("%c nao esta presente na linha %d.\n", caracter, linha);
- } else {
- printf("Posicao(%c) = [%d]\n", caracter, endereco - (int)&*(*matriz+1000*linha));
- }
- break;
- case 5:
- ordenarLinha(*matriz, linha);
- break;
- case 6:
- quebrarString(*matriz, linha, linha2);
- break;
- }
- }
- return 0;
- }
- void buscar(char *matriz, char caracter, int linha, int *pi) {
- int i;
- for(i=0;i<1000;i++){
- if(*(matriz+i+1000*linha) == caracter){
- *pi = (int)&*(matriz+i+1000*linha);
- break;
- }
- if(i==999){
- *pi = 0;
- break;
- }
- }
- return;
- }
- void inicializar(char *matriz){
- int i;
- for (i=0;i<1000000;i++){
- *(matriz+i) = 0;
- }
- return;
- }
- void carregar(char *matriz, int linha){
- char str_temp[1000];
- int i;
- char cac;
- for(i=0;i<1000;i++){ str_temp[i] = 0; }
- scanf("%d ", &linha);
- for(i=0;i<1000;i++){
- scanf("%c", &cac);
- if(cac==10){ break; }
- str_temp[i] = cac;
- }
- for(i=0;i<1000;i++){
- *(matriz+i+1000*linha) = str_temp[i];
- }
- return;
- }
- void imprimir(char *matriz, int linha) {
- int i;
- scanf("%d", &linha);
- for(i=0;i<1000;i++){
- if(*(matriz+i+1000*linha)==0){ break; }
- printf("%c", *(matriz+i+1000*linha));
- }
- printf("\n");
- return;
- }
- void intercalarLinhas(char *matriz, int linha, int linha2) {
- int i, j=0;
- char str_temp[2000];
- for(i=0;i<2000;i++) { str_temp[i] = 0; }
- scanf("%d %d", &linha, &linha2);
- for(i=0;i<2000;i++){
- if( *(matriz+j+1000*linha) != 0){
- str_temp[i] = *(matriz+j+1000*linha);
- if(*(matriz+j+1000*linha2) != 0){ i++; }
- }
- if(*(matriz+j+1000*linha2) != 0){
- str_temp[i] = *(matriz+j+1000*linha2);
- }
- j++;
- }
- for(i=0;i<1000;i++){ *(matriz+i+1000*linha) = str_temp[i]; }
- for(i=1000;i<2000;i++){
- j = 0;
- *(matriz+j+1000*linha2) = str_temp[i];
- j++;
- }
- for(i=0;i<2000;i++){ printf("%d", str_tenp[i]); }
- return;
- }
- void ordenarLinha(char *matriz, int linha) {
- int i, j, menor=300, reg_menor, tamanho;
- char str_temp[1000];
- scanf("%d", &linha);
- for (i=0;i<1000;i++){ str_temp[i] = *(matriz+i+1000*linha); }
- tamanho = strlen(str_temp);
- for(i=0;i<tamanho;i++){
- for(j=0;j<1000;j++){
- if((str_temp[j] < menor) && (str_temp[j] != 0)){
- menor = str_temp[j];
- reg_menor = j;
- }
- }
- *(matriz+i+1000*linha) = str_temp[reg_menor];
- str_temp[reg_menor] = 0;
- menor = 300;
- }
- return;
- }
- void quebrarString(char *matriz, int linha, int linha2){
- int i, j=0, a=0;;
- scanf("%d %d", &linha, &linha2);
- for(i=0;i<1000;i++){
- if(i==a && *(matriz+i+1000*linha)==32){
- a++;
- continue;
- }
- if (*(matriz+i+1000*linha) == 32) {
- linha2++;
- j=0;
- a = i+1;
- continue;
- } else if (*(matriz+i+1000*linha) == 0) { break; }
- *(matriz+j+1000*linha2) = *(matriz+i+1000*linha);
- j++;
- }
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement