Prezados, estou com dificuldade nessa linguagem c. É disciplina de Estrutura de Dados. Essa é fila e pilhas. Na verdade não consigo entender o funcionamento da função e quase não sei de nada sobre nessa linguagem c, na verdade sou profissional do Java, Php, JavaScript, HTML5 e MySQL e pelo menos não entendo nada nessa linguagem C pois não sou muito boa lógica nessa linguagem C.
E você pode me ajudar e o que falta para fazer função? Ou me conversa no chat de particular ou procuro freelancer e pago bem.
sou nova aqui. E pelo que eu vi, esse fórum é sobre GUJ. Mas mesmo assim vou perguntar sobre C. Eu tô tentando fazer o inserir e o remover de uma fila com lista e a pilha. Quando eu defino os valores diretamente para a função inserir, o código dá certo. Mas quando eu recebo do teclado os últimos valores estes sob-escrevem todos os primeiros valores que estavam antes. Não sei qual pode ser o erro já que o código está “aparentemente” correto.
Obrigado
/********************************************************************************************************************
* PRIMEIRA AVALIA??O
* Use este c?digo para realizar a tarefa. Foram feitas as configura??es iniciais com define?s e include?s, foram
* declaradas as fun??es iniciais da fila (fun??es a serem implementadas), mas n?o foi feito nenhuma parte da pilha.
* O objetivo da aplica??o ? receber um conjunto de strings em uma fila e ir retirando os elementos da fila para
* inverte-los. Para realizar a invers?o (fun??o inversor) voc? deve usar uma pilha.
* Dicas:
* a) uma string ? um vetor de caracteres terminadas por \0.
* b) se voc? inserir os elementos de um vetor em uma pilha e depois retira-los, eles vir?o na ordem inversa.
* Com o c?digo pronto estes testes devem ser executados com sucesso (sem mensagens indicando erro).
*********************************************************************************************************************/
#define MAX 20
#include "collection.h"
#include <stdio.h>
#include <strings.h>
#include<stdlib.h>
#define TRUE 0
#define FALSE 1
Collection create_queue();
int insere(Collection *fila, char textoAInserir[]);
int retira(Collection *fila, char *textoRemovido);
int inversor(char *textoOriginal, char *textoInvertido);
//----- Esta parte do c?digo n?o pode ser alterada ------
int main() {
char textos[20][20] = { "Abertura", "Continuo", "Contador", "Marcado", "Automovel", "Gentileza", "Verdade", "Fermento", "Teclado", "Barbeiro", "Treinamento", "Dinamismo", "Homenagem", "Levantar", "Integral"};
char textosInvertidos[20][20] = { "arutrebA", "ounitnoC", "rodatnoC", "odacraM", "levomotuA", "azelitneG", "edadreV", "otnemreF", "odalceT", "oriebraB", "otnemanierT", "omsimaniD", "meganemoH", "ratnaveL", "largetnI"};
char *textoOriginal = (char *)malloc(20 * sizeof(char));
char *textoInvertido = (char *)malloc(20 * sizeof(char));
Collection fila = create_queue();
int i, j;
//Inser??o de dez elementos na fila
for(j = 0; j < 10; j++) {
insere(&fila, textos[j]);
}
i = 0;
retira(&fila, textoOriginal) == TRUE ? printf("[%d] Texto retirado da fila com sucesso [%s]\n", i, textoOriginal) : printf("[%d] Erro na retirada do texto da fila\n", i);
strcmp(textoOriginal, textos[i]) == TRUE ? printf("Primeiro texto correto\n") : printf("Erro no Primeiro texto retirado\n");
inversor(textoOriginal, textoInvertido) == TRUE ? printf("[%d] Texto invertido com sucesso [%s]\n", i, textoInvertido) : printf("[%d] Erro na inversao do texto\n", i);
strcmp(textoInvertido, textosInvertidos[i]) == TRUE ? printf("Inversao do primeiro texto correto\n") : printf("Erro na inversao do primeiro texto retirado\n");
i++;
retira(&fila, textoOriginal) == TRUE ? printf("[%d] Texto retirado da fila com sucesso [%s]\n", i, textoOriginal) : printf("[%d] Erro na retirada do texto da fila\n", i);
strcmp(textoOriginal, textos[i]) == TRUE ? printf("Primeiro texto correto\n") : printf("Erro no Primeiro texto retirado\n");
inversor(textoOriginal, textoInvertido) == TRUE ? printf("[%d] Texto invertido com sucesso [%s]\n", i, textoInvertido) : printf("[%d] Erro na inversao do texto\n", i);
strcmp(textoInvertido, textosInvertidos[i]) == TRUE ? printf("Inversao do primeiro texto correto\n") : printf("Erro na inversao do primeiro texto retirado\n");
i++;
retira(&fila, textoOriginal) == TRUE ? printf("[%d] Texto retirado da fila com sucesso [%s]\n", i, textoOriginal) : printf("[%d] Erro na retirada do texto da fila\n", i);
strcmp(textoOriginal, textos[i]) == TRUE ? printf("Primeiro texto correto\n") : printf("Erro no Primeiro texto retirado\n");
inversor(textoOriginal, textoInvertido) == TRUE ? printf("[%d] Texto invertido com sucesso [%s]\n", i, textoInvertido) : printf("[%d] Erro na inversao do texto\n", i);
strcmp(textoInvertido, textosInvertidos[i]) == TRUE ? printf("Inversao do primeiro texto correto\n") : printf("Erro na inversao do primeiro texto retirado\n");
i++;
retira(&fila, textoOriginal) == TRUE ? printf("[%d] Texto retirado da fila com sucesso [%s]\n", i, textoOriginal) : printf("[%d] Erro na retirada do texto da fila\n", i);
strcmp(textoOriginal, textos[i]) == TRUE ? printf("Primeiro texto correto\n") : printf("Erro no Primeiro texto retirado\n");
inversor(textoOriginal, textoInvertido) == TRUE ? printf("[%d] Texto invertido com sucesso [%s]\n", i, textoInvertido) : printf("[%d] Erro na inversao do texto\n", i);
strcmp(textoInvertido, textosInvertidos[i]) == TRUE ? printf("Inversao do primeiro texto correto\n") : printf("Erro na inversao do primeiro texto retirado\n");
i++;
retira(&fila, textoOriginal) == TRUE ? printf("[%d] Texto retirado da fila com sucesso [%s]\n", i, textoOriginal) : printf("[%d] Erro na retirada do texto da fila\n", i);
strcmp(textoOriginal, textos[i]) == TRUE ? printf("Primeiro texto correto\n") : printf("Erro no Primeiro texto retirado\n");
inversor(textoOriginal, textoInvertido) == TRUE ? printf("[%d] Texto invertido com sucesso [%s]\n", i, textoInvertido) : printf("[%d] Erro na inversao do texto\n", i);
strcmp(textoInvertido, textosInvertidos[i]) == TRUE ? printf("Inversao do primeiro texto correto\n") : printf("Erro na inversao do primeiro texto retirado\n");
i++;
retira(&fila, textoOriginal) == TRUE ? printf("[%d] Texto retirado da fila com sucesso [%s]\n", i, textoOriginal) : printf("[%d] Erro na retirada do texto da fila\n", i);
strcmp(textoOriginal, textos[i]) == TRUE ? printf("Primeiro texto correto\n") : printf("Erro no Primeiro texto retirado\n");
inversor(textoOriginal, textoInvertido) == TRUE ? printf("[%d] Texto invertido com sucesso [%s]\n", i, textoInvertido) : printf("[%d] Erro na inversao do texto\n", i);
strcmp(textoInvertido, textosInvertidos[i]) == TRUE ? printf("Inversao do primeiro texto correto\n") : printf("Erro na inversao do primeiro texto retirado\n");
//Inse??o de mais cinco elementos na fila
for(j = 10; j < 15; j++) {
insere(&fila, textos[j]);
}
i++;
retira(&fila, textoOriginal) == TRUE ? printf("[%d] Texto retirado da fila com sucesso [%s]\n", i, textoOriginal) : printf("[%d] Erro na retirada do texto da fila\n", i);
strcmp(textoOriginal, textos[i]) == TRUE ? printf("Primeiro texto correto\n") : printf("Erro no Primeiro texto retirado\n");
inversor(textoOriginal, textoInvertido) == TRUE ? printf("[%d] Texto invertido com sucesso [%s]\n", i, textoInvertido) : printf("[%d] Erro na inversao do texto\n", i);
strcmp(textoInvertido, textosInvertidos[i]) == TRUE ? printf("Inversao do primeiro texto correto\n") : printf("Erro na inversao do primeiro texto retirado\n");
i++;
retira(&fila, textoOriginal) == TRUE ? printf("[%d] Texto retirado da fila com sucesso [%s]\n", i, textoOriginal) : printf("[%d] Erro na retirada do texto da fila\n", i);
strcmp(textoOriginal, textos[i]) == TRUE ? printf("Primeiro texto correto\n") : printf("Erro no Primeiro texto retirado\n");
inversor(textoOriginal, textoInvertido) == TRUE ? printf("[%d] Texto invertido com sucesso [%s]\n", i, textoInvertido) : printf("[%d] Erro na inversao do texto\n", i);
strcmp(textoInvertido, textosInvertidos[i]) == TRUE ? printf("Inversao do primeiro texto correto\n") : printf("Erro na inversao do primeiro texto retirado\n");
i++;
retira(&fila, textoOriginal) == TRUE ? printf("[%d] Texto retirado da fila com sucesso [%s]\n", i, textoOriginal) : printf("[%d] Erro na retirada do texto da fila\n", i);
strcmp(textoOriginal, textos[i]) == TRUE ? printf("Primeiro texto correto\n") : printf("Erro no Primeiro texto retirado\n");
inversor(textoOriginal, textoInvertido) == TRUE ? printf("[%d] Texto invertido com sucesso [%s]\n", i, textoInvertido) : printf("[%d] Erro na inversao do texto\n", i);
strcmp(textoInvertido, textosInvertidos[i]) == TRUE ? printf("Inversao do primeiro texto correto\n") : printf("Erro na inversao do primeiro texto retirado\n");
i++;
retira(&fila, textoOriginal) == TRUE ? printf("[%d] Texto retirado da fila com sucesso [%s]\n", i, textoOriginal) : printf("[%d] Erro na retirada do texto da fila\n", i);
strcmp(textoOriginal, textos[i]) == TRUE ? printf("Primeiro texto correto\n") : printf("Erro no Primeiro texto retirado\n");
inversor(textoOriginal, textoInvertido) == TRUE ? printf("[%d] Texto invertido com sucesso [%s]\n", i, textoInvertido) : printf("[%d] Erro na inversao do texto\n", i);
strcmp(textoInvertido, textosInvertidos[i]) == TRUE ? printf("Inversao do primeiro texto correto\n") : printf("Erro na inversao do primeiro texto retirado\n");
i++;
retira(&fila, textoOriginal) == TRUE ? printf("[%d] Texto retirado da fila com sucesso [%s]\n", i, textoOriginal) : printf("[%d] Erro na retirada do texto da fila\n", i);
strcmp(textoOriginal, textos[i]) == TRUE ? printf("Primeiro texto correto\n") : printf("Erro no Primeiro texto retirado\n");
inversor(textoOriginal, textoInvertido) == TRUE ? printf("[%d] Texto invertido com sucesso [%s]\n", i, textoInvertido) : printf("[%d] Erro na inversao do texto\n", i);
strcmp(textoInvertido, textosInvertidos[i]) == TRUE ? printf("Inversao do primeiro texto correto\n") : printf("Erro na inversao do primeiro texto retirado\n");
i++;
retira(&fila, textoOriginal) == TRUE ? printf("[%d] Texto retirado da fila com sucesso [%s]\n", i, textoOriginal) : printf("[%d] Erro na retirada do texto da fila\n", i);
strcmp(textoOriginal, textos[i]) == TRUE ? printf("Primeiro texto correto\n") : printf("Erro no Primeiro texto retirado\n");
inversor(textoOriginal, textoInvertido) == TRUE ? printf("[%d] Texto invertido com sucesso [%s]\n", i, textoInvertido) : printf("[%d] Erro na inversao do texto\n", i);
strcmp(textoInvertido, textosInvertidos[i]) == TRUE ? printf("Inversao do primeiro texto correto\n") : printf("Erro na inversao do primeiro texto retirado\n");
i++;
retira(&fila, textoOriginal) == TRUE ? printf("[%d] Texto retirado da fila com sucesso [%s]\n", i, textoOriginal) : printf("[%d] Erro na retirada do texto da fila\n", i);
strcmp(textoOriginal, textos[i]) == TRUE ? printf("Primeiro texto correto\n") : printf("Erro no Primeiro texto retirado\n");
inversor(textoOriginal, textoInvertido) == TRUE ? printf("[%d] Texto invertido com sucesso [%s]\n", i, textoInvertido) : printf("[%d] Erro na inversao do texto\n", i);
strcmp(textoInvertido, textosInvertidos[i]) == TRUE ? printf("Inversao do primeiro texto correto\n") : printf("Erro na inversao do primeiro texto retirado\n");
i++;
retira(&fila, textoOriginal) == TRUE ? printf("[%d] Texto retirado da fila com sucesso [%s]\n", i, textoOriginal) : printf("[%d] Erro na retirada do texto da fila\n", i);
strcmp(textoOriginal, textos[i]) == TRUE ? printf("Primeiro texto correto\n") : printf("Erro no Primeiro texto retirado\n");
inversor(textoOriginal, textoInvertido) == TRUE ? printf("[%d] Texto invertido com sucesso [%s]\n", i, textoInvertido) : printf("[%d] Erro na inversao do texto\n", i);
strcmp(textoInvertido, textosInvertidos[i]) == TRUE ? printf("Inversao do primeiro texto correto\n") : printf("Erro na inversao do primeiro texto retirado\n");
i++;
retira(&fila, textoOriginal) == TRUE ? printf("[%d] Texto retirado da fila com sucesso [%s]\n", i, textoOriginal) : printf("[%d] Erro na retirada do texto da fila\n", i);
strcmp(textoOriginal, textos[i]) == TRUE ? printf("Primeiro texto correto\n") : printf("Erro no Primeiro texto retirado\n");
inversor(textoOriginal, textoInvertido) == TRUE ? printf("[%d] Texto invertido com sucesso [%s]\n", i, textoInvertido) : printf("[%d] Erro na inversao do texto\n", i);
strcmp(textoInvertido, textosInvertidos[i]) == TRUE ? printf("Inversao do primeiro texto correto\n") : printf("Erro na inversao do primeiro texto retirado\n");
}
//----------- Final da parte do c?digo que n?o pode ser alterada ---------
Collection create_queue() {
Collection c;
return c;
}
int insere(Collection *fila, char *textoAInserir) {
printf("--> %s\n", textoAInserir);
return TRUE;
}
int retira(Collection *fila, char *textoRemovido) {
strcpy(textoRemovido, "Abertura");
return TRUE;
}
int inversor(char *textoOriginal, char *textoInvertido) {
strcpy(textoInvertido, "arutrebA");
return TRUE;
}