Ir ao conteúdo
  • Cadastre-se
francinerosa

RESOLVIDO Comparar vários caracteres em condicional (if)

Recommended Posts

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;}

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×