Ir ao conteúdo
  • Cadastre-se

Ordem Alfabética -Linguagem C


brunopl65

Posts recomendados

Meu programa não está rodando. Será que eu errei na parte do codigo que tem que colocar os nomes em ordem alfabética? Ou é outra coisa? De qualquer maneira gostaria de saber o que fazer para que o meu programa funcione direito.

//* Crie um programa para ler 5 nomes e armazená-los no vetor NOMES. Depois, organize
os nomes no vetor de forma que eles fiquem em ordem alfabética*/


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

int main(){
int i,j;
char nome[30][30],temp;

for(i=0;i<5;i++){
printf("Digite um nome: ");
gets(nome[i]);
}


for(j = 0; j < i; j++){
if((strcmp(nome[j],nome[j+1]>0)){
strcpy(nome[j+1],temp);
strcpy(nome[j],nome[j+1]);
strcpy(temp, nome[j]);
}
}


for (i=0;i<5;i++){
for(j=0;j<5;j++){
printf("%s",nome[i][j]);
}
}
getchar();
}

Link para o comentário
Compartilhar em outros sites

Eu não entendi muito bem a lógica, mas o erro está em:

for(i=0;i<4;i++){

for(j=i+1;j<5;j++){

if(nome[j]>nome[j]){

x=nome[j];

nome[j]=nome[j];

nome[j]=x;

}

}

}

Em if(nome[j]>nome[j]) você está comparando strings (char) como se fosse ints ou floats. E C não permite esse tipo de comparação, você deve usar a biblioteca:

#include <string.h>

E depois, para comparar:

strcmp(nome,nome2) que é igual a zero se foram iguais.

Exemplo:

if(strcmp("laranja","laranja") == 0) é verdadeiro

if(strcmp("laranja","laranja lima") == 0) é falso

Verifica isso.

Link para o comentário
Compartilhar em outros sites

Eu consertei o meu código ai em cima, porém o meu compilador exibe essas mensagens:

F:\IFES\TP\Exemplos\Matrizes de strings\ordem_alfabetica.cpp: In function `int main()':

F:\IFES\TP\Exemplos\Matrizes de strings\ordem_alfabetica.cpp:20: error: cannot convert `bool' to `const char*' for argument `2' to `int strcmp(const char*, const char*)'

F:\IFES\TP\Exemplos\Matrizes de strings\ordem_alfabetica.cpp:20: error: expected `)' before '{' token

F:\IFES\TP\Exemplos\Matrizes de strings\ordem_alfabetica.cpp:25: error: expected primary-expression before '}' token

F:\IFES\TP\Exemplos\Matrizes de strings\ordem_alfabetica.cpp:25: error: expected `;' before '}' token

O que faço para resolver o problema?

Link para o comentário
Compartilhar em outros sites

Eu consertei de novo o meu codigo e o meu programa esta rodando! Só que a minha dúvida é: porque o meu programa não está ordenando em ordem alfabética os nomes que eu digito?

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

int main(){
char nome[5][30], aux[30];
int i = 0;


for(i = 0; i < 5; i++){
printf("Entre com o %d%c nome: ", i + 1, 167);
gets(nome[i]);
}

for(i = 0; i < 5; i++){
if(strcmp(nome[i], nome[i + 1]) > 0){
strcpy(aux, nome[i]);
strcpy(nome[i], nome[i + 1]);
strcpy(nome[i + 1], aux);
}
}

printf("\n\nNomes em ordem alfabetica: \n");
for(i = 0; i < 5; i++){
printf("\n%s",nome[i]);
}

system("Pause");
}

Link para o comentário
Compartilhar em outros sites

  • mês depois...

Rodando e sem altera...

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main(){

char nome[5][30], aux[30];

int i, j;

for(i=0; i<5; i++){

printf("Entre com o %d%c nome: ", i + 1, 167);

gets(nome);

}

for(j=0; j<5; j++)

for(i=0; i<5-1; i++)

{

if(strcmp(nome, nome[i + 1]) > 0)

{

strcpy(aux, nome);

strcpy(nome, nome[i + 1]);

strcpy(nome[i + 1], aux);

}

}

printf("\n\nNomes em ordem alfabetica: \n");

for(i=0; i<5; i++)

{

printf("%s\n",nome);

}

getchar();

}

Link para o comentário
Compartilhar em outros sites

  • 3 anos depois...
  • 3 anos depois...
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!