1. Funções para trabalho com textos (strings) Para trabalhar com texto em C/C++, faz-se necessário o uso de algumas funções específicas. O quadro abaixo lista algumas delas: Função Significado Biblioteca strcmp(nome1,nome2) Compara os strings nome1 e nome2 (char[n], uma cadeia de caracteres). Se forem iguais, o valor do comando será 0 (zero). strcpy(nome1,nome2) O string nome1 recebe o valor do string nome2. Equivalente à atribuição: nome1 = nome2 Obs.: nome1 e nome2 devem ser do tipo char[n]. strlen(nome) gets(nome) nome=getch() Retorna a quantidade de caracteres que o nome possui. Equivale ao comando scanf( %s,nome); ou cin>>nome; nome é uma variável do tipo char[n] (uma cadeia de n caracteres). Equivale ao comando scanf( %c,nome); ou cin>> nome; nome é uma variável do tipo char (um caractere). Esta variável vai receber um caractere digitado (do teclado). <string.h> ou <iostream> <string.h> ou <iostream> <string.h> ou <iostream> <stdio.h> ou <iostream> <conio.h> O comando cin >> nome; ou scanf("%s",&nome);pode ser substituído por gets(nome);. A diferença é que apenas a função gets considera espaços entre textos. Por exemplo: atribuindo-se o texto te amo à variável nome: Com gets(nome), a variável assume o texto te amo; Com cin >> nome ou scanf("%s",&nome), a variável assume o texto te; Exemplos: 1) Com os comandos cout e cin: int n; char nome1[10],nome2[10]; cout<< "Digite duas palavras:\n"; cin>>nome1 >>nome2; n=strcmp(nome2,nome1); cout<< n <<"\n";
Neste programa, o valor da variável n será: 0 Se nome1 e nome2 forem iguais. -1 ou 1 Se nome1 e nome2 forem diferentes. Alternativamente, este programa pode ser escrito: 2) Com o comando cout: int n; char nome1[10],nome2[10]; main () { cout<< "Digite duas palavras:\n"; gets(nome1); gets(nome2); n=strcmp(nome2,nome1); cout<< n <<"\n"; No caso do uso da biblioteca <iostream>, a biblioteca <string.h> não é necessária. A função gets está contida nesta biblioteca. 3) O exemplo seguinte ilustra o uso da função getch. Com os comandos cout e cin: #include <conio.h> char letra1,letra2; cout<< "Digite duas letras:\n"; letra1=getch(); letra2=getch(); cout<<"foram digitadas: "<<letra1 <<" e " <<letra2 <<"\n"; ATENÇÃO: observe que a função getch requer a biblioteca <conio.h>, mesmo quando a biblioteca <iostream> está incluída.
4) Com o comando cout: char nome1[10],nome2[10]; strcpy(nome1,"maria"); strcpy(nome2,nome1); cout<< "nome1=" << nome1 <<"\n"; cout<< "nome2=" << nome2 <<"\n\n"; Neste programa, o string nome1 é uma constante cujo valor é Maria. O comando strcpy(nome2,nome1) fará nome2 receber o valor de nome1. Estas funções são usadas porque, na liguagem C/C++, não é permitida a atribuição direta entre variáveis de texto (cadeia de caracteres), da forma nome1 = nome2. A atribuição direta é permitida para variável tipo char (um único caracter). Exemplo: nome= t (este comando atribuirá à variável nome a letra t). 5) Com os comandos cout e cin: char nome1[10],nome2[10]; cout<< "Digite uma palavra:\n"; cin>>nome1; strcpy(nome2,nome1); cout<< "nome1=" << nome1 <<"\n"; cout<< "nome2=" << nome2 <<"\n\n";
6) Uma aplicação da estrutura com textos: C/C++ int n,k1,k2; char n1[10],n2[10]; main () { cout<<"escrever duas palavras:\n"; cin >> n1 >> n2; n=strcmp(n1,n2); k1=strlen(n1); k2=strlen(n2); if (n!=0) { if (k1>k2) cout <<"n1 e n2 sao diferentes. n1 tem mais caracteres que n2.\n\n"; else { if (k1<k2) cout<<"n1 e n2 sao diferentes.n1 tem menos caracteres que n2.\n\n"; else cout<<"n1 e n2 sao diferentes. Tem o mesmo numero de caracteres.\n\n"; else cout << "n1 e n2 sao iguais.\n\n"; A função strlen(var) indica a quantidade de caracteres do string nome. Propostas: 1. Reescrever o programa, trocando o comando cin por gets;
7) Exemplo de funções em C++ para converter maiúsculo em minúsculo e vice-versa. Ex.: char letra; main() { cout <<"Digite um caracter: "; cin >> letra; letra=toupper (letra); cout <<"A representacao maiuscula do que voce digitou eh -> "<<letra; letra=tolower (letra); cout <<"\na representacao minuscula do que voce digitou eh -> "<<letra<<"\n\n"; system ("pause");
EXERCÍCIOS PROPOSTOS: 1) FAÇA UM PROGRAMA QUE LEIA TRÊS NOMES, VERIFIQUE QUAL O MAIOR NOME ENTRE ELES (COM MAIOR QUANTIDADE DE CARACTERES), NO FINAL ESCREVA O NOME E A QUANTIDADE DE CARACTERES DO MAIOR NOME. 2) FAÇA UM PROGRAMA QUE LEIA O NOME E A IDADE DE TRÊS FUNCIONÁRIOS, VERIFIQUE QUAL DELES POSSUI A MENOR IDADE, NO FINAL ESCREVA O NOME E A IDADE DO FUNCIONÁRIO MAIS NOVO.
2. Usando funções matemáticas A linguagem C/C++ tem várias funções matemáticas pré-definidas. Por exemplo: Função significado sin(var); Funções trigonométricas seno e cosseno. cos(var) pow(v,x) Exponencial de um número: v x (v elevado a x ) exp(x) Exponencial neperiano: e x Onde: e = 2,71828... sqrt(var) Raiz quadrada de um número: var log(var) var Logaritmo neperiano: ln(var) = log e log10(var) Logaritmo de base 10: var log 10 Para usar uma (ou mais de uma) função matemática é preciso incluir no programa, na listagem de bibliotecas (primeiras linhas), o comando: #include <math.h> (ou #include math.h ) Exemplo: Cálculo do seno de um ângulo: 1) Com a biblioteca <iostream>: #include <math.h> float gr,s; float pi=3.141; /* Definição da constante pi (valor em radianos equivalente a 180 graus) */ cout<< "Digite um angulo (em graus):\n"; cin>> gr; //convertendo para radianos: gr=gr*pi/180; s=sin(gr); cout<< "seno: " <<s <<"\n";
No último programa foi definida a constante PI (π) na seção de declaração de variáveis. Mas a biblioteca math.h possui esta constante (M_PI). Então, este programa pode ser reescrito: 2) Com a biblioteca <iostream>: #include <math.h> float gr,s; cout<< "Digite um angulo (em graus):\n"; cin>> gr; //convertendo para radianos: gr=gr*m_pi/180; s=sin(gr); cout<< "seno: " <<s <<"\n";
EXERCÍCIOS PROPOSTOS: 1) Faça um programa que leia os coeficientes da seguinte equação do segundo grau. Calcule e escreva as suas raízes. (RAIZ DA EQUAÇÃO: Ax 2 + Bx + C = 0) Delta = B 2-4AC (Caso o Delta < 0 não há raízes reais) (Usar as funções matemáticas da biblioteca <math.h> Caso o Delta >= 0 calcular as raízes reais de acordo com as seguintes fórmulas: ( B Delta )/ A ( B Delta )/ A R1 = + 2 R2 = 2