Ir para conteúdo
Fórum Script Brasil
  • 0

Enorme dificuldade com Vetores e Strings


alex_dino

Pergunta

Preciso de uma grande ajuda.....sou novato ainda, e estamos entrando no conteúdo de Vetores e Strings, só que eu não entendi muito bem a matéria!!!!!!!!!

Por exemplo tenho um programa para fazer, só que não tenho idéia para achar qual é a menor palavra armazenada e o seu tamanho.......

Até agora fiz isso......que não deu em nada, se tiver alguém que possa me ajudar, e me dar uma explicação de como resolver ficarei grato!!!!!!!!!!!!!!!!!!

#include<stdio.h>
int main (void)
{
    char palavra[10][30];
    int menor_palavra=0,tamanho,pos;
    
    for (pos=0;pos<10;pos++)
    {
        printf ("informe a frase: ");
        gets (palavra[pos]);
    }
      
      for  (pos=0;pos<strlen(palavra[pos]);pos++)
      {
        if (tamanho>strlen(palavra[pos])
        tamanho=strlen(palavra[pos]);
      }
      
      printf ("tamanho %d",tamanho);
     
      
     system ("pause");
     return (0);
                                                                                                                
           
}

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

O que você quer é isto?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define NUM_PALAVRAS 10
#define TAM_PALAVRAS 30

int main()
{
    char palavras[NUM_PALAVRAS][TAM_PALAVRAS + 1];
    int i = 0, menor = 0, tam_menor = 0;
    
    for (i = 0; i < NUM_PALAVRAS; i++)
    {
        fgets(palavras[i], TAM_PALAVRAS, stdin);
        palavras[i][strlen(palavras[i]) - 1] = '';
    }
    
    tam_menor = strlen(palavras[0]);
    
    for (i = 1; i < NUM_PALAVRAS; i++)
    {
        if (strlen(palavras[i]) < tam_menor)
        {
            tam_menor = strlen(palavras[i]);
            menor = i;
        }
    }
    
    printf("Menor palavra: '%s'. Tamanho: %d\n", palavras[menor], tam_menor);
    
    return 0;
}

Se não for, explique melhor.

Se for, procure entender o código, não simplesmente copiar e colar

Link para o comentário
Compartilhar em outros sites

  • 0

Bá desculpas......não coloquei direito o enunciado do programa.

Concerteza não quero só copiar e colar, até porque senão no dia da prova não saberei fazer nada.

Fiz o programa que você me pasou, ele leu as 10 palavras, mais ai a telinha preta do DOS desapareceu.

O programa na verdade é:

Escreva um programa que preenche um vetor de 10 posições com palavras. Após a

leitura informe qual é a menor palavra armazenada no vetor e qual o seu tamanho.

Link para o comentário
Compartilhar em outros sites

  • 0

#include <stdio.h>
#include <string.h> /* necessário para a strlen */

#define TAM_PALAVRAS tamanho /* substitua */

int main(void) {
    char palavras[10][TAM_PALAVRAS];
    int i, k, info[2]; /* i & k -> variáveis auxiliares; info[0] -> index da palavra; info[1] -> tamanho palavra. */

    for(i = 0; i < TAM_PALAVRAS; i++) {
        fgets(palavras[i], TAM_PALAVRAS, stdin); /* aqui pegamos o input do usuário com segurança */
        k = strlen(palavras[i]); /* pegamos o tamanho da palavra */
        if(palavras[k - 1] == '\n') /* como o fgets coloca até o \n na variável, é capaz de ele estar ali, mas nem sempre, então devemos testar */
            palavras[k - 1] == 0; /* se for \n, coloca um NULL para retira-lô */
    }

    info[0] = 0; /* aqui inicializamos info[0] e info[1] */
    info[1] = strlen(palavras[0]);

    for(i = 1; i < 10; i++)  { /* começamos i com 1 pois já fizemos com o index 0 */
        k = strlen(palavras[i]); /* pega o tamanho da palavra atual */
        if(k < info[1]) { /* se o tamanho da palavra for menor que o atual menor tamanho */
            info[0] = i; /* agora atualizamos o index da palavra */
            info[1] = k; /* e também atualizamos o tamanho */
        }
    }

    printf("A menor palavra e: %s - Seu tamanho e: %d\n", palavras[info[0]], info[1]); /* imprimimos a palavra e seu tamanho */
    getchar(); /* função da stdio.h para receber um caractere, neste caso é para o programa não sair direto */

    return 0; /* Retornamos 0: quer dizer que o programa executou corretamente, 1 quer dizer que executou incorretamente */
}

Utilizei praticamente a mesma lógica do Beraldo e comentei o programa.

Qualquer coisa que não entender, avise que ajudaremos!

Abraços!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...