Ir ao conteúdo
  • Cadastre-se

não imprime resultado de um vetor de string


Posts recomendados

fala galera sou novo aqui e sou estudante da area de ti, estou com o seguinte codigo que desenvolvi e ele esta praticamente pronta so falta um detalhe na função palavras , pois ela esta recebendo no primeiro vetor  palavras normalmente e recebendo também o numero que o usuario vai querer receber em palavras também , mas na hora de imprimir esta dando erro e so sai "null", ja tentei tudo que é formas de resolver , ate encontrei uma com switch,  mas meu professor quer q eu compare vetor com numero solicitado , então agradeço qualquer força ai , abraços desde ja .

#include<string.h>
#include<stdio.h>
#include<conio.h> 
#include<ctype.h> 
#include<math.h> 
#include<stdlib.h> 


//fiz modificação nos loops e logicas e designer do codigo e nos problemas de logica e vetores

//declarando todas as variaveis globais que serão usadas no programa.

char vet_palavras[50],vet2[6],resul_palavras[7];
int encontrado=0,escolha,i,vet_mult[6],resul_mult,n,vet[5];
void mult_vet(void);
void palavras(void);
void posi_nu(void);


 //primeira função para multplicar um vetor de interos

void mult_vet(void) {
    
    
    //for que ira receber os valores a serem multiplicados e seu numero multiplicador
            for(i=1;i<=5;i++){
                
                printf("XXX insira o %d valor para ser anexado a %d posicao do vetor: XXX ",i,i);
                scanf("%d",&vet_mult);
            }
    
                printf("XXX insira o valor que voce deseja multiplicar pelos numeros digitados anteriormente: XXX ");
                scanf("%d", &n);
                
                printf("\n\n");
                
                printf("\n XXX multiplicacao dos seus valores digitados: <-------\n");
                
                
                
                
                
            //for para multiplicar os valores do vetor e logo em seguida imprimilos para usuario
            for(i=1;i<=5;i++){
                
                resul_mult=(n*vet_mult);
                printf("XXX valor: %d Multiplicado Por: %d resulta em: %d XXX\n", vet_mult,n,resul_mult);            
            
}
}

//função que ira mostrar um numero escolhido em palavras
void palavras(void) {
    for(i=0;i<=5;i++){
    
    
    printf("XXX insira o valor de %d em palavras: XXX",i); 
    scanf("%s", &vet_palavras); 
    
}
    //entrada do valor a ser imprimido
    printf("XXX insira um numero dentre 0 e 5: XXX"); 
    scanf("%d", &n); 
    
    if (n <=5) {   // testando se o valor e menor que 5
    
    for(i=0;i<=6;i++) {
    
    
    
    if(vet_palavras==n)     {
        

    
    vet_palavras==resul_palavras;
        
        
        
    
    
    
    
}
}

printf("\n XXX %d = %s <------- \n",n,resul_palavras);
}
     else //printf para aviso de numero invalido digitado.
     {
         printf("\n XXX numero inserido difenrente do intervalo entre 0 e 5 <------- \n");
     }

    
    getch ();

}

//função que ira ler um vetor e apos isso era retornar o valor de uma posição escolhida
void posi_nu(void)
{        

//entrada dos valores dentro do laço 
        printf("XXX Digite os valores: XXX \n",i);
 for(int i=1;i<6;i++) 
 {
 scanf("%d",&vet);
 }
 //numero para ser pesquisado
 printf("XXX Digite um numero para ser pesquisado no vetor:XXX ");
 scanf("%d",&n);
 for(int i=1;i<6;i++)
 //testandoo valor para encontrar sua posição
 if(vet==n)
 {
 printf("\n XXX O numero esta na %d posicao  <------- \n",i); //saida dos valores
 encontrado=1;
 }
 if(encontrado!=1) {
 printf("\n XXX insira um numero dos quais voce digitou <-------\n\n"); //caso contrario
}
}

 //menu de string para escolher as opções que o programa poderá realizar
int main () //função principal
{   system("color 85");
    system("cls");  
    
    
    while(escolha!=4)
    {    
        printf ("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n\n");
        
        printf ("XXXXX  escolha uma das opções abaixo  XXXXX\n\n");
        printf("1-XXX Multiplicar vetor XXX\n");
        printf("2-XXX Descrever um numero XXX\n");
        printf("3-XXX Mostrar a posicao de um numero XXX\n");
        printf("4-XXX Sair XXX\n");
        //entrada da opção
        printf("\nXXX digite um numero: XXX\n");
        printf ("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n\n");
        scanf("%d", &escolha);
        
    
        switch(escolha)
         {
             case 1:
                 mult_vet(); //primeira função 
                 break;
             case 2:
                 palavras(); //segunda função
                 break;
             case 3:
                 posi_nu(); //terceira função
                 break;
             case 4:
                 return 0; //sair
             default:
                 printf("XXX insira uma opcao dentre 1 e 4 <-------\n");
             
             
     }

        
    }
    return 0;
 

enviar_clube.txt

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Da sim amigo,  pode notar no cogito na função palavras que está sendo chamada e lá q está o problema , pode notar q haverá o primeiro for para receber as palavras paras os números , e logo em seguida recebe o número que para retornado em palavras , aí vem o problema em seguida no segundo for que serve pra comparar o vetor dar palavras com o número desejado , estou tendo problemas pra comparar e imprimir , rode o programa e execute a segunda função é faça o que que se pede q ir ver o problema 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@iury rodrigues    você precisa colocar em qual posição do vetor está inserindo os números e palavras, e o vetor de palavras  vet_palavras e resul_palavras é preciso declarar a quantidade de palavras e o tamanho das palavras .   Talvez você tenha colocado essas informações no seu código mas como na hora de postar você não usou o botão  <>  que está na barra de ferramentas da janela de postar o código ficou sem essas informações .

veja seu código com algumas modificações :

#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#include<math.h>
#include<stdlib.h>

//fiz modificação nos loops e logicas e designer do codigo e nos problemas de logica e vetores
//declarando todas as variaveis globais que serão usadas no programa.
char vet_palavras[50][20],vet2[6],resul_palavras[70][20];
int encontrado=0,escolha,i,vet_mult[6],resul_mult,n,vet[5];
void mult_vet(void);
void palavras(void);
void posi_nu(void);
 //primeira função para multplicar um vetor de interos
void mult_vet(void) {
    //for que ira receber os valores a serem multiplicados e seu numero multiplicador
            for(i=1;i<=5;i++){
                printf("XXX insira o %d valor para ser anexado a %d posicao do vetor: XXX ",i,i);
                scanf("%d",&vet_mult[i]);
            }
            printf("XXX insira o valor que voce deseja multiplicar pelos numeros digitados anteriormente: XXX ");
            scanf("%d", &n);
            printf("\n\n");
            printf("\n XXX multiplicacao dos seus valores digitados: <-------\n");
            //for para multiplicar os valores do vetor e logo em seguida imprimilos para usuario
            for(i=1;i<=5;i++){
                resul_mult=(n*vet_mult[i]);
                printf("XXX valor: %d Multiplicado Por: %d resulta em: %d XXX\n", vet_mult[i],n,resul_mult);
            }
}
//função que ira mostrar um numero escolhido em palavras
void palavras(void) {
    for(i=0;i<=5;i++){
        printf("XXX insira a %d palavras: XXX",i+1);
        scanf("%s", &vet_palavras[i]);
    }
    //entrada do valor a ser imprimido
    printf("XXX insira um numero dentre 0 e 5: XXX");
    scanf("%d", &n);
    if (n <=5) {   // testando se o valor e menor que 5
        for(i=0;i<=6;i++) {
            if(i==n)     {
                strcpy(resul_palavras[i],vet_palavras[i]);
            }
        }
        printf("\n XXX %d = %s <------- \n",n,resul_palavras[n]);
    }
    else //printf para aviso de numero invalido digitado.
        printf("\n XXX numero inserido difenrente do intervalo entre 0 e 5 <------- \n");
    getch ();
}
//função que ira ler um vetor e apos isso era retornar o valor de uma posição escolhida
void posi_nu(void)
{
//entrada dos valores dentro do laço
    printf("XXX Digite os valores: XXX \n",i);
    for(int i=1;i<6;i++)
        scanf("%d",&vet[i]);
    //numero para ser pesquisado
    printf("XXX Digite um numero para ser pesquisado no vetor:XXX ");
    scanf("%d",&n);
    for(int i=1;i<6;i++)
    //testandoo valor para encontrar sua posição
        if(vet[i]==n){
            printf("\n XXX O numero esta na %d posicao  <------- \n",i); //saida dos valores
            encontrado=1;
        }
        if(encontrado!=1)
           printf("\n XXX insira um numero dos quais voce digitou <-------\n\n"); //caso contrario
}
 //menu de string para escolher as opções que o programa poderá realizar
int main () //função principal
{  /* system("color 85");*/
    system("cls");


    while(escolha!=4)
    {
        printf ("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n\n");

        printf ("XXXXX  escolha uma das opções abaixo  XXXXX\n\n");
        printf("1-XXX Multiplicar vetor XXX\n");
        printf("2-XXX Descrever um numero XXX\n");
        printf("3-XXX Mostrar a posicao de um numero XXX\n");
        printf("4-XXX Sair XXX\n");
        //entrada da opção
        printf("\nXXX digite um numero: XXX\n");
        printf ("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n\n");
        scanf("%d", &escolha);


        switch(escolha)
         {
             case 1:
                 mult_vet(); //primeira função
                 break;
             case 2:
                 palavras(); //segunda função
                 break;
             case 3:
                 posi_nu(); //terceira função
                 break;
             case 4:
                 return 0; //sair
             default:
                 printf("XXX insira uma opcao dentre 1 e 4 <-------\n");


     }

    }
    /*return 0;*/
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

1 hora atrás, iury rodrigues disse:

pode notar q haverá o primeiro for para receber as palavras paras os números

O que tem nesse for é isso "XXX insira o valor de %d em palavras: XXX", mas você está achando que nós sabemos o que você vai escrever. De exemplos de entrada para ficar mais claro
 

 

1 hora atrás, iury rodrigues disse:

e logo em seguida recebe o número que para retornado em palavras

Como assim retornar em palavras?
 

 

1 hora atrás, iury rodrigues disse:

aí vem o problema em seguida no segundo for que serve pra comparar o vetor dar palavras com o número desejado

Se o que eu imagino for certo você quer receber algo como "vinte dois" e depois "um"e você quer isso: vetor[1] = 22. Mas primeiro que os números são infinitos, ou você tem um range de valores "pequeno" para trabalhar.

Como digo fico trabalhando em cima de suposições porque não conheço suas ideias. você não postou o enunciado do problema.
 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@devair1010  amigo valeu mesmo muito interessante como você colocou lá eu sabia que estava esquecendo de poucos detalhes nessa comparação ficou legal o resultado , apenas tirei aquela inclusão de 1 no laço do índice pois preciso q ele inicie em zero mesmo , muito obrigado 

adicionado 2 minutos depois

@devair1010 pode me explicar como funciona essa função strcpy que eu não conhecia para melhor entendimento 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Olá amigo revivendo o tópico entreguei pro meu prof e tava ok mas esqueci um detalhe aqui nesse trecho da função palavras que irei colocar deveria haver um loop para só sair quando o usuário digita-se um número dentre 0 e 5 já tentei com for , while, do while, if e nada do laço pegar apesar de parecer mão com açúcar  ainda n consegui me de uma luz p mim fazer essa lógica , Abraços .

E neste bendito printf que tentei fazer o loop 

printf("XXX insira um numero dentre 0 e 5: XXX");

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@iury rodrigues    para isso você precisa fazer como fez lá no menu, coloque uma variável para controlar o while, que irá repetir tudo até que se digite determinado número, assim você só conseguirá sair da função palavras quando digitar esse número. 

   Experimente esse código da função palavras e veja se é o que você quer :

//função que ira mostrar um numero escolhido em palavras
void palavras(void) {
    int op;
    do{
        system("cls");
        for(i=0;i<=5;i++){
            printf("XXX insira a %d palavras: XXX",i+1);
            scanf("%s", &vet_palavras[i]);
        }
        //entrada do valor a ser imprimido
        printf("XXX insira um numero dentre 0 e 5: XXX");
        scanf("%d", &n);
        if (n <=5) {   // testando se o valor e menor que 5
            for(i=0;i<=6;i++) {
                if(i==n)     {
                    strcpy(resul_palavras[i],vet_palavras[i]);
                }
            }
            printf("\n XXX %d = %s <------- \n",n,resul_palavras[n]);
        }
        else //printf para aviso de numero invalido digitado.
            printf("\n XXX numero inserido difenrente do intervalo entre 0 e 5 <------- \n");
        getch ();
        printf("\nXXX Digite Zero Para Sair XXX");
        scanf("%d",&op);
    }while(op!=0);
}

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!