Ir ao conteúdo
  • Cadastre-se

Comparar vários caracteres em condicional (if)


francinerosa
Ir à solução Resolvido por vangodp,

Posts recomendados

Boa tarde pessoal!
 
Estou tentando comparar strings para atingir um objetivo nesse exercício, obs.: não tenho tempo de ler o material ao todo então estou aprendendo aos poucos e com referências... Infelizmente minha vida é bem corrida...! Mas enfim, não consigo de jeito nenhum comparar vários caracteres em uma condição "se", como poderia resolver esse problema?

 

Obs.: Dessa maneira ele funciona, mas não consigo colocar mais condições...!

/* 4. Foi realizada uma pesquisa de algumas características físicas da população de um certa região. Foram entrevistadas 500 pessoas e coletados os seguintes dados:a- sexo: M (masculino) e F (feminino)b- cor dos olhos: A (azuis), V (verdes) e C (castanhos)c- cor dos cabelos: L (louros), C (castanhos) e P (pretos)d- idadeDeseja-se saber:a maior idade do grupoa quantidade de indivíduos do sexo feminino, cuja idade está entre 18 e 35 anos e que tenham olhos verdes e cabelos louros.*/#include <stdio.h> // cabeçalho standart input-output header, entrada/ saída de dados do teclado#include <iostream> // Comandos do sistema#include <locale.h> // Definição de configuração de linguagem#include <string.h>#include <conio.h> #include <stdlib.h> int main(){	setlocale(LC_ALL, "Portuguese"); // Atribuindo uma linguagemint idade = 0, loiras = 0, maior = 0;char *sexo, *olhos, cabelo;for (int i = 1; i <= 1; i++){		printf("Informe o sexo, sendo F (feminino) e M (masculino): ");	scanf("%s", &sexo);		printf("Informe a cor dos olhos, sendo A (azuis), V (verdes) e C (castanhos): ");	scanf("%s", &olhos);		printf("Informe a cor do cabelo, sendo L (loiro), C (castanho) e P (preto): ");	scanf("%s", &cabelo);		printf("Informe a idade: ");	scanf("%d", &idade);		printf("\n");		// maior idade do grupo		if (idade > maior){			maior = idade;		}		// quantidade de indivíduos do sexo feminino se idade 18 >= 35 e olhos verdes e cabelos louros	//if ((stricmp(sexo,"F")!=0) && (stricmp(olhos,"V")!=0) && (stricmp(cabelo,"L")!=0)){}		if ((stricmp(sexo,"F")!=0)){			if (idade >= 18 && idade <= 35){				loiras += i;		}	}}			printf("\nQuantidade de indivíduos do sexo feminino, cuja idade está entre 18 e 35 anos e que tenham olhos verdes e cabelos louros: %d\n", loiras);	printf("Maior idade do grupo: %d\n\n", maior);system("pause");return 0;}
Link para o comentário
Compartilhar em outros sites

isso esta mal: char *sexo... Logo depois você tenta ler como si fosse um string porém isso é um ponteiro.

 

Si você quer espaço para guardar um string, Em C você tem os arrays, e em C++ você tem os arrays e a classe string.

 

Um exemplo valido em C e C++, é o tal array de chars ou também chamado vetor de chars, ou também c_string, ou simplesmente string, porém não devemos de confundir string de C com a classe string de C++.

 

c_string

#include <iostream>using namespace std;int main (){    char palavra[20];    printf("Escreva uma palavra de menos de 20 letras: ");    scanf ( "%s", palavra ); // Nao ponha & adiante como vc faz normalmente com char ou int        printf("A palavra é: ");    printf("%s",  palavra );    cin.ignore();    return 0;}

Classe string de C++ (Só vale em C++)

#include <iostream>using namespace std;int main (){        string palavra;    cout << "Escreva uma palavra sem se preucupar pelo tamanho dela: ";    cin >> palavra;        cout << "A palavra é: " << palavra << endl;    cin.ignore();    return 0;}

Da sua forma você pode apenas guardar literais nela ou seja, o unico que você pode fazer é
 

#include <iostream>using namespace std;int main (){        char *palavra = (char*)"Isso é um string literal"; // nao se pode usar scanf para modificar ela depois, ela é uma constante criada em tempo de compilaçao, por isso nao podemos modificala.        cout << palavra << endl;            cin.ignore();    return 0;}

Primeiro você deve solucionar isso antes dos ifs. Logo você nos conta como foi isso.

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

Obrigada pela dica, eu não sabia dessas diferenças! Agora preciso trabalhar na condição, é estranho porque se eu coloco só uma ele funciona!!

/* 4. Foi realizada uma pesquisa de algumas características físicas da população de um certa região. Foram entrevistadas 500 pessoas e coletados os seguintes dados:a- sexo: M (masculino) e F (feminino)b- cor dos olhos: A (azuis), V (verdes) e C (castanhos)c- cor dos cabelos: L (louros), C (castanhos) e P (pretos)d- idadeDeseja-se saber:a maior idade do grupoa quantidade de indivíduos do sexo feminino, cuja idade está entre 18 e 35 anos e que tenham olhos verdes e cabelos louros.*/#include <stdio.h> // cabeçalho standart input-output header, entrada/ saída de dados do teclado#include <iostream> // Comandos do sistema#include <locale.h> // Definição de configuração de linguagem#include <string.h>#include <conio.h> #include <stdlib.h> using namespace std;int main(){	setlocale(LC_ALL, "Portuguese"); // Atribuindo uma linguagemint idade = 0, loiras = 0, maior = 0;char sexo[1], olhos[1], cabelo[1];for (int i = 1; i <= 3; i++){		cout << "Informe o sexo, sendo F (feminino) e M (masculino): ";	cin >> sexo;		cout << "Informe a cor dos olhos, sendo A (azuis), V (verdes) e C (castanhos): ";	cin >> olhos;		cout << "Informe a cor do cabelo, sendo L (loiro), C (castanho) e P (preto): ";	cin >> cabelo;		cout << "Informe a idade: ";	cin >> idade;		printf("\n");		// maior idade do grupo		if (idade > maior){			maior = idade;		}		// quantidade de indivíduos do sexo feminino se idade 18 >= 35 e olhos verdes e cabelos louros	//if ((stricmp(sexo,"F")==0) && (stricmp(olhos,"V")==0) && (stricmp(cabelo,"L")==0)){		if (idade >= 18 && idade <= 35){			loiras += i;		}	}}			cout << "Quantidade de indivíduos do sexo feminino, cuja idade está entre 18 e 35 anos e que tenham olhos verdes e cabelos louros: " << loiras << endl;	cout << "Maior idade do grupo: " << maior << endl;	cin.ignore();	return 0;}
Link para o comentário
Compartilhar em outros sites

  • Solução

Toma ai...

/* 4. Foi realizada uma pesquisa de algumas características físicas da população de um certa região. Foram entrevistadas 500 pessoas e coletados os seguintes dados:a- sexo: M (masculino) e F (feminino)b- cor dos olhos: A (azuis), V (verdes) e C (castanhos)c- cor dos cabelos: L (louros), C (castanhos) e P (pretos)d- idadeDeseja-se saber:A maior idade do grupoA quantidade de indivíduos do sexo feminino, cuja idade está entre 18 e 35 anos e que tenham olhos verdes e cabelos louros.*/#include <iostream>using namespace std;struct Dados{    char sexo;    char corOlho;    char corCabelo;    int idade;};int main (){    Dados entrevista[500] = {       //sexo,olho,cabe,idade        { 'M', 'A', 'L', 22 }, //<- entrevista[0]        { 'F', 'V', 'P', 27 }, //<- entrevista[1]           { 'F', 'A', 'C', 39 }, //<- entrevista[2]        { 'M', 'C', 'C', 18 }, //...        { 'F', 'A', 'L', 52 },        { 'M', 'A', 'L', 22 },        { 'F', 'V', 'L', 27 }, //Loira de olhos verdes XD            { 'F', 'A', 'C', 39 },        { 'F', 'V', 'L', 22 }, //Outra loira        { 'F', 'A', 'L', 52 },        //pode por até 500 mas eu acho que vou passar disso, só quero testar... Preenche vc kkk    };        int maiorIdade=0;    int n=0;    for ( int i = 0; i < 500; i++ ){        //maior idade            cout << "lol" << i << endl;        if ( entrevista[i].idade > maiorIdade ){            maiorIdade = entrevista[i].idade;        }            //quantidade de indivíduos do sexo femininoentre 18 e 35 anos         //e que tenham olhos verdes e cabelos louros        if (entrevista[i].sexo == 'F' &&             entrevista[i].idade > 17 &&             entrevista[i].idade < 36 &&             entrevista[i].corOlho == 'V' &&             entrevista[i].corCabelo == 'L'  ){            n++;        }    }        cout << "A maior idade do grupo é: " << maiorIdade << endl << endl;    cout << "Quantidade de indivíduos do sexo \nfemininoentre 18 e 35 anos "          << "e que \ntenham olhos verdes e cabelos louros: " << n << endl;        cin.ignore();    return 0;}

Leia com atenção e modifique o que quiser

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

vaia a youtube em um canal que se chama de "aluno para aluno" busque nas listas videos de programação C. Pratique até o tema de estruturas, arrays etc

 

Eu não sei exatamente quanto você sabe, por isso não posso dar um programa conforme seus conhecimentos. Porém pense que uma estrutura é como um array, a diferença é que um array armazena dados de igual tipo, já uma estrutura armazena tipos diferentes.

 

Explicar coisas por aqui fica difícil, si quiser ajuda pode me add no skype e te ajudo sem problemas.

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!