Ir ao conteúdo

Posts recomendados

Postado

1 - Armazene N nomes de M pessoas. Obs: Se o nome digitado já estiver armazenado ele não poderá ser Rearmazenado e deve mostrar a mensagem: "É Impossível Rearmazenar." e retome o armazenamento até digitar Z. No final Exiba os nomes das pessoas.

#include <Stdio.h>
  
  int nome;
  int main(){
  printf("digite o nome das pessoas");
  scanf (nome);
  if nome!=nome{
  scanf (nome);
  }
  Else{
  printf("É impossivel reamazena");}
  
  
  }

 

  • Amei 1
Postado

@Mirabell      assim nunca será diferente , pois o nome sempre será igual ao nome , então você pode usar um vetor para guardar os nomes e a cada nome inserido use um loop para verificar todos os nomes já inserido  .

  • Curtir 1
  • Confuso 1
Postado

@Mirabell Comece por algo assim:

#include <stdio.h>
#include <locale.h>

int main()
{
    char nomes[2][20]; //Tamanho para 2 strings

    scanf("%s", nomes[0]);
    scanf("%s", nomes[1]); 

    int i;
    for(i=0; i<2; i++) {
        printf("%s ",nomes[i]);
    }

    return 0;
}

Como @devair1010 disse, você tem que usar um vetor de N strings para armazenas N nomes de M pessoas, nesse programa aí, coloquei um vetor de 2 strings apenas, e pode aumentar o tamanho da string, acho que 20 talvez não seja o suficiente.

Como os nomes estão sendo guardados em vetores, chame-os em um loop e compare-os com a string recém inserida para ver se o nome bate com algum outro já inserido. Se bater, imprima "É Impossível Rearmazenar" e peça para entrar com o nome novamente. E que seja assim até sair do loop.

  • Curtir 1
  • Confuso 1
Postado

@Mirabell     talvez você ainda não saiba , mas para comparar strings na linguagem  c ,  você precisa usar a função strcmp() ,  mas se você estiver usando um compilador para a linguagem c++ ,  então pode fazer as comparações usando o sinal de igualdade mesmo .

  • Curtir 1
Postado

não to conseguindo

#include <stdio.h>
#include <locale.h>

int main()
{	
	int i,j;
    char nomes[j][20];
    
    
    for(i=0; i<j; i++) {
    	 j++;
    	scanf("%s", nomes[j]);
        printf("%s \n",nomes[j]);
       
    }

}

 

  • Obrigado 1
Postado

@Mirabell    esse aqui seria um exemplo que poderia ser feito , mas pode ser de vários outros modos :

#define _WIN32_WINNT 0x501
#include <stdio.h>                                              // para a saida padrão
#include <string.h>                                             // para strings
#include <ctype.h>                                              // para caracteres
char nome[10];                                                  // variável global , pode ser acessada em qq parte do programa
int main(){
    char nom[100][10];                                          // vetor de char ou strings , com espaço para 100 nome de 10 caracteres cada
    int flag,cont=0,j;                                          // variáveis do tipo int
    do{                                                         // loop para pegar os vários nomes até digitar Z
        do{                                                     // loop para pegar um nome
            flag=0;                                             // controla se precisa repetir
            printf("digite o nome ");                           // mensagem
            gets(nome);                                         // pega uma frase inteira mesmo se tiver espaços nela
            for(j=0; j<cont; j++){                              // loop para verificar os nomes
                if(strcmp(nome,nom[j])==0){                     // verica se nome já está no vetor
                    flag = 1;                                   // sinaliza que já tem esse nome no vetor
                    break;                                      // para as verificações e sai do loop
                }
            }
            if( flag == 1 ){                                    // se já tem esse nome
                printf("É ImpossiveL ReamazenaR . . . !\n");    // mostra essa mensagem
            }
            else{                                               // senão tem esse nome no vetor
                strcpy(nom[cont],nome);                         // guarda ele no vetor nessa posição apontada por cont
                cont++;                                         // incrementa o contador de posições
            }
        }while( flag );                                         // se flag diferente de zero repete esse loop
        printf(" Outro Nome\n Z     = Nao\n Enter = Sim\n\n");  // mensagem se vai inserir outro nome ou não
    }while(toupper((char)getch()) != 'Z' );                     // verifica se pressionou a letra Z
    printf("\n\nOs Nomes Insaeridos . . . !\n\n");              // escreve isso na tela
    for(j=0; j<cont; j++)                                       // loop com a qtd de nomes inseridos
        printf("%d Nome -: %s\n",j+1,nom[j]);                   // escreve na tela os nomes inseridos
    printf("\n\n\n");                                           // pular algumas linhas
    return 0;                                                   // escreve a menssage de finalização do programa
}

 

  • Curtir 1
  • Obrigado 1
Postado

@Mirabell Dê uma olhada nisso:

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <locale.h>

int main()
{	
    setlocale(LC_ALL, "Portuguese");
	int i = 0, j = 0, k = 0;
    char nomes[200][40]; //Cabem 200 nomes
    char sair[2] = "Z";
    
    
    do {
        j += 1;
        printf("Digite o nome [%d]: ", j); //Pede os nomes 1 por 1
    	scanf("%s", nomes[j]);
    	for(k = 0; k < j; k++){ //Verificar se nome já havia sido inserido
            if(strcmp(nomes[j],nomes[k])==0){
                printf("É Impossível Rearmazenar\n");
                j -= 1; //Caso os nomes baterem, retira 1 de j e uma nova string entrará no lugar
            }
    	}
    }while(strcmp(nomes[j],sair)); //Sai do loop caso seja inserido Z
    
    printf("Nomes inseridos:");
    for(k = 0; k < j; k++){ //Imprimir nomes 1 por 1
        printf("\n%s", nomes[k]);
    }
    return 0;
}

É como eu havia dito, como os nomes estão sendo guardados em vetores, basta chamá-los em um loop e compará-los com a string recém inserida para ver se o nome bate com algum outro já inserido, daí se bater, eu retiro 1 de j, e assim você pode colocar uma nova string no lugar. Depois é só imprimir todos os nomes de 1 até o valor de j.

  • Obrigado 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...