Você está na página 1de 7

Funes de manipulao de strings: y leitura: scanf(%s,varstr); /* prottipo em <stdio.h> NO aceita espao*/ gets(varstr); /* prottipo em <string.

h> */ y impresso: printf(%s \n,varstr); /* prottipo em <stdio.h> */ puts(varstr); /* prottipo em <string.h> imprime e j salta linha*/

manipulao: /* todas com prottipo em <string.h> */ strcpy(varstr,str2); /* copia a constante ou varivel string str2 na varivel varstr*/ strlen(str); /* calcula o tamanho (sem contar o \0 ) da var. ou constante string */ strcat(varstr1,str2); /* une as duas strings varstr1+str2*/ strcmp(str1,str2) /* compara as duas strings e retorna */

< 0 se str1 < str2 (ordem alfab) = 0 se str1 = str2 >0 se Exemplos: str1 > str2 (ordem alfab)
char vetletras[101]; /* vetor que armazena letras (max 100 + \0) gets(vetletras); /* l o vetor de uma vez s e j inclui o \0 no lugar do \n*/ scanf(%s,vetletras); /* idem anterior mas no aceita nomes com espao*/ printf(%s,vetletras); /* imprime o vetor todo de uma vez */ puts(vetletras); /* idem anterior e j pula linha no final*/ strlen(vetletras); /* calcula o tamanho (sem contar o \0 ) do vetor vetletras */ strcpy(vetletras,myriam); /* copia a string myriam no vetor vetletras */ strcat(vetletras,myriam); /* adiciona a string myriam ao vetor vetletras */ strcmp(vetletras,myriam) /*compara o vetor vetletras com a string myriam*/ y retorna 0 se vetletras for igual a myriam y retorna <0 se vetletras for anterior no alfabeto o por exemplo qualquer nome iniciando c/ a letra a l (< m) y retorna >0 se vetletras for posterior no alfabeto o por exemplo qualquer nome iniciando c/ a letra n-z (> m)

/* Alteracao do programa anterior para ler e imprimir como string */ #include <stdio.h> #include<string.h> main ( ) { char nome[51]; /* at 50 letras + '\0'*/ float nota[3], soma, media; int indice; soma = 0.0f; printf("Entre com as notas do aluno \n"); for(indice=0; indice<3;indice++) { scanf("%f", &nota[indice]); soma = soma+nota[indice]; } media = soma/3.0f; printf("Entre com o nome do aluno (max de 4 letras) \n"); scanf(\n); /* limpar memria do teclado para ler character*/ gets(nome); printf("A media do(a) aluno(a) %s foi %2.2f\n",nome,media); } y gets(nome) strcpy(nome,Joana); pois strcpy copia a constante string Joana no vetor nome ao passo que gets(nome) atribui uma string qualquer (definida pelo usurio) ao vetor nome.

A diferena entre gets e strcpy similar diferena entre scanf(%i, &N); N =2;

pois no segundo caso, atribui-se a constante 2 varivel N ao passo que no primeiro caso, atribui-se um valor qualquer (definido pelo usurio) varivel N. Exemplos: Funes de Manipulao de Strings com Matrizes char matletras[10][101]; /* armaz conj de palavras (max 10) cada uma c/ max 100 letras + \0 )*/ gets(matletras[3]); /* l a 4 palavra de uma vez s e j inclui o \0 no lugar do \n*/ scanf(%s ,matletras[3]); /* idem anterior mas no aceita nomes com espao*/ printf(%s ,matletras[3]); /* imprime 4 palavra toda de uma vez */ puts(matletras[3]); /* idem anterior e j pula linha no final*/

strlen(matletras[2]); /* calcula o tamanho (sem contar o \0 ) da 3 palavra da mat*/ strcpy(matletras[2],joana); /* copia a string joana na 3 palavra da mat*/ strcat(matletras[2],joana); /* adiciona a string joana na 3 palavra da mat */ strcmp(matletras[2],joana) /*compara a 3 palavra da mat com a string joana*/ y retorna 0 se a 3 palavra da matriz for igual a joana y retorna <0 se 3 palavra da matriz for anterior no alfabeto o por exemplo qualquer nome iniciando c/ a letra a i (< j) y retorna >0 se 3 palavra da matriz for posterior no alfabeto o por exemplo qualquer nome iniciando c/ a letra k-z (> j)

strcmp(fabio,joana) < 0 strcmp(fabio,fabio) = 0 strcmp(fabio,adilson) > 0 Exemplo:


#include<stdio.h> #include<string.h> main( ) { char mat[2][50]; int resp1, resp2, resp3; strcpy(mat[0], "carolina"); strcpy(mat[1],"danilo"); resp1 = strcmp(mat[0],mat[1]); resp2 = strcmp(mat[0],mat[0]); resp3= strcmp(mat[1],mat[0]); printf("%i %i %i\n", resp1,resp2,resp3); /* imprime -1 0 1 na tela */ } 6 - #include <stdio.h> #include <stdlib.h> #include <math.h> main(){ float x1,x2,y1,y2,dist; printf("Coordenadas do primeiro ponto:\n"); printf("EIXO X: \n"); scanf("%f",&x1); printf("EIXO Y: \n"); scanf("%f",&y1); printf("Coordenadas do segundo ponto:\n"); printf("EIXO X: \n"); scanf("%f",&x2); printf("EIXO Y: \n"); scanf("%f",&y2); dist=pow(pow((x1-x2),2)+pow((y1+y2),2),0.5); printf("Distancia entre os pontos informados = %f",dist); system("PAUSE"); }

9#include #include #include #include

<stdio.h> <stdlib.h> <string.h> <conio.h>

main(){ int qtdeCandidatos,alunos, professores, servidores; char candidatos[11][20]; int votosAlunos[10],votosProfessores[10],votosServidores[10]; float votosResultantes[10]; printf("Informe quantidade de alunos:\n"); scanf("%d",&alunos); printf("Informe quantidade de professores:\n"); scanf("%d",&professores); printf("Informe quantidade de servidores:\n"); scanf("%d",&servidores); printf("\nInforme a quantidade de candidatos\n"); scanf("%d",&qtdeCandidatos); for (int i=0;i<qtdeCandidatos;i++){ printf("\nInforme nome do candidato ",i); scanf("\n"); gets(candidatos[i]); }

float pAlunos,pProfessores,pServidores; pAlunos = (33.3333333)/(alunos); pProfessores = (33.3333333)/(professores); pServidores = (33.3333333)/(servidores); printf("Informe, respectivamente, a quantidade dos votos de alunos, professores \ne servidores para cada candidato"); for(int i=0;i<qtdeCandidatos;i++){ printf("\nCandidadto: %s",candidatos[i]); printf("\nVotos de alunos\n"); scanf("%d",&votosAlunos[i]); printf("Votos de professores\n"); scanf("%d",&votosProfessores[i]); printf("Votos de servidores\n"); scanf("%d",&votosServidores[i]); } system("cls"); for(int i=0; i<qtdeCandidatos;i++){ votosResultantes[i]=(votosAlunos[i]*pAlunos)+(votosProfessores[i]*pPro fessores)+(votosServidores[i]*pServidores);

} //procurando candidatos mais votados for(int i=0;i<qtdeCandidatos-1;i++){ for(int j=i;j<qtdeCandidatos;j++){ if(votosResultantes[i]<votosResultantes[j]){ float aux=votosResultantes[i]; votosResultantes[i]=votosResultantes[j]; votosResultantes[j]=aux; char auxChar[20]; strcpy(auxChar,candidatos[i]); strcpy(candidatos[i],candidatos[j]); strcpy(candidatos[i],auxChar);

} } } printf("\n"); for (int i=0; i<qtdeCandidatos; i++){ printf("\nCandidato: %s",candidatos[i]); printf(" porcentagem de votos = %2.2f",votosResultantes[i]); } printf("\n"); if(votosResultantes[0]>50){ printf("\nO candidato vencedor : %s",candidatos[0]); }else{ printf("\nSEGUNDO TURNO"); printf("\nCandidato 1: %s",candidatos[0]); printf("\nCandidato 2: %s",candidatos[1]); }

printf("\n"); system("PAUSE"); } 10 - #include <stdlib.h> #include <stdio.h> #include <string.h> main(){

/*professor... para no haver confusao na traducao de uma mensagem eh necessario que o usurio informe numeros de um algarimos precedidos por zero a=01, b=02,...,j=10 esse programa nao considera espaos... assim, as mensagens codificadas e decodificadas tambm no devem considerar isso...

*/ int opcao; char alfabeto[28]=" abcdefghijklmnopqrstuvxyzw"; printf("MENU\n"); printf("1 - Codificar\n"); printf("2 - Decodificar\n"); scanf("%d",&opcao); char mensagem[100]; switch(opcao){ case 1: system("cls"); printf("CODIFICACAO\n"); printf("Entre com a mensagem a ser codificada \n"); scanf("\n"); gets(mensagem); //printf("\n%s",mensagem); //codificando char codigo[100]; strcpy(codigo,"");//uma maneira alternativa de se limpar uma string @@ for(int i=0;i<strlen(mensagem);i++){ for(int j=0;j<28;j++){ char num[3]; if(mensagem[i]==alfabeto[j]){ itoa(j,num,10); if(j<10){ //coloca zero a esquerda para identificar letra a letra strcat(codigo,"0"); } strcat(codigo,num); //printf("\n%s",codigo); break; } } } printf("\nMENSAGEM CODIFICADA:"); printf("\n%s",codigo); break; case 2: //tentar colocar o zero antes dos numeros de um algarismo para identificar corretamente a letra =DDDDDDDDDDDDD system("cls"); printf("DECODIFICACAO DE MENSAGEM\n"); printf("Entre com a mensagem a ser decodificada \n(ex: a=01, b=02, etc)\n");

scanf("\n"); gets(mensagem); char traducao[100]; int indice,m; m=0; for(int i=0;i<strlen(mensagem);i=i+2){ char str[3]; str[0]=mensagem[i]; str[1]=mensagem[i+1]; indice=atoi(str); //printf("\n%d",indice); traducao[m]=alfabeto[indice]; m=m+1; } printf("\nMENSAGEM DECODIFICADA:"); printf("\n%s",traducao); break; default: printf("Opcao invalida"); break; } printf("\n"); system("PAUSE"); }

Você também pode gostar