Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 12/08/2021 in Posts

  1. Boas, @BrunoMac. Eis a minha solução com alguns apontamentos. #include <stdio.h> #include <stdlib.h> #include <string.h> int n = 5, i, j, l, num, result; char cores[4][7], input[5], *copy; char *colors[] = { "green", "red", "blue", "yellow", "brown", "white", "black" }; // Esta função atualmente é desnecessaria. void copiar(){ strcpy(copy, input); } int main(){ printf("Add colors\n"); for (int i = 0; i < n; i++) { scanf("%s", input); // Debug print printf("Input: %s\n", input); /* (1) De momento n = 5 e o array que tens tem 7 elementos. Portanto destes 7 elementos ele só vai passar pelos 5 primeiros para verificar a comparação. antes tinhas: n = 5; (lá em cima nas variaveis) deverias de ter: n = 7; (porque são 7 elementos) ou então antes de um loop calculas o tamanho do array com isto: int colorsCount = sizeof(colors)/sizeof(colors[0]); */ strcpy(cores[i], input); // (1) int colorsCount = sizeof(colors)/sizeof(colors[0]); // O loop while() que aqui tinhas é o equivalente a este ciclo 'for'. for (int j = 0; j < colorsCount; j++) { if (strcmp(input, colors[j]) == 0) { printf("Gotcha!\n"); // Parar de verificar se encontrar um match break; } // comparing strings str1 and str2 // result = strcmp(input, colors[j]); // printf("strcmp(str1, str2) = %d\n", result); } // Acho que só estás a fazer o primeiro caracter ficar o '/0'. // input[0]='\0'; } /* Aqui só te mostra 4 elementos porque é o que tens definido que o array cores contem. Se pretenderes que o array se adapte (array dinamico) terias de trabalhar com "mallocs" */ // (1) int coresCount = sizeof(cores)/sizeof(cores[0]); for(l = 0; l < coresCount; l++) printf("%s\n", cores[l]); return 0; } Espero conseguir ajudar.
    1 point
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.