Ajuda: Array em c [RESOLVIDO]

1. Ajuda: Array em c [RESOLVIDO]

Bell Coutinho
BellCoutinho

(usa Arch Linux)

Enviado em 04/04/2018 - 12:45h

Pessoal eu tou com duvida de como resolver esse exercicio:
Faça um programa que peça o nome, a altura e o peso de duas pessoas e apresente
o nome da mais pesada, se elas têm o mesmo peso e o nome da mais alta.

está dando o seguite erro o meu código: error: assignment to expression with array type
nome_pesado = nome;

OBS: Não sei quase nada de array.

Meu código :

#include <stdio.h>
#include <stdbool.h>

int main(void) {
char nome[100], nome_pesado[100], nome_pesado2[100], nome_alto[100], nome_alto2[100];
float altura, altura_maior, peso, peso_maior;
bool peso_igual = false, altura_igual = false;

for (int cont = 1; cont <= 2; cont++) {
printf("Digite o seu nome: ");
scanf("%s", &nome);
printf("Digite sua altura: ");
scanf("%f", &altura);
printf("Digite o seu peso: ");
scanf("%f", &altura);

if (cont == 1) {
nome_pesado = nome;
peso_maior = peso;
nome_alto = nome;
altura_maior = altura;
} else if ((peso >= peso_maior) || (altura >= altura_maior)) {
if (peso >= peso_maior) {
if (peso_maior == peso) {
peso_igual = true;
nome_pesado2 = nome;
} else {
nome_pesado = nome;
}
} else {
if (altura_maior == altura) {
altura_igual = true;
nome_alto2 = nome;
} else {
nome_alto = nome;
}
}

}

}

if (peso_igual) {
printf("\nPessoas mais pesadas\n");
printf("=========================\n");
printf("Nome: %s\n", nome_pesado);
printf("Nome: %s\n", nome_pesado2);

printf("Elas tem o mesmo peso\n");
} else {
printf("Pessoa mais pesada\n");
printf("=========================\n");
printf("Nome: %s", nome_pesado);

printf("Elas não tem o mesmo peso\n");
}

if (altura_igual) {
printf("\nPessoas mais altas\n");
printf("=========================\n");
printf("Nome: %s\n", nome_alto);
printf("Nome: %s\n", nome_alto2);
} else {
printf("\nPessoa mais alta\n");
printf("=========================\n");
printf("Nome: %s\n", nome_alto);
}

return 0;
}

Desde já obrigado.


  


2. MELHOR RESPOSTA

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 04/04/2018 - 13:09h

Você está tentando atribuir um array ao outro, como o compilador disse.

Acredito que você queira copiar o conteúdo de um array para o outro, para isso, recomendo utilizar strncpy

https://linux.die.net/man/3/strncpy

No seu caso seria:


length = sizeof(nome_pesado) / sizeof(nome_pesado[0]);
strncpy(nome_pesado, nome, length);


3. Re: Ajuda: Array em c

Paulo
paulo1205

(usa Ubuntu)

Enviado em 04/04/2018 - 17:04h

uilianries escreveu:

No seu caso seria:

length = sizeof(nome_pesado) / sizeof(nome_pesado[0]);
strncpy(nome_pesado, nome, length);


Como nome_pesado é um array de caracteres tradicionais (tipo char), não é necessário dividir o tamanho do array pelo tamanho de um de seus elementos, já que, por definição, sizeof(char)==1.

E para a cópia ser segura, já que você aparentemente não confia no comprimento do dado da origem, seria melhor acrescentar a seguinte linha após a execução de strncpy().
nome_pesado[length-1]='\0'; 



4. Re: Ajuda: Array em c [RESOLVIDO]

Uilian Ries
uilianries

(usa Linux Mint)

Enviado em 04/04/2018 - 19:01h

Bem lembrado Paulo! :+1:






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts