• Nenhum resultado encontrado

Algoritmos e Estrutura de Dados II Sumário

N/A
N/A
Protected

Academic year: 2021

Share "Algoritmos e Estrutura de Dados II Sumário"

Copied!
20
0
0

Texto

(1)

Instituto Federal de Santa Catarina - Câmpus Chapecó

Ensino Médio Integrado em Informática - Módulo III

Unidade Curricular: Algoritmos e Estrutura de Dados II

Professora: Lara Popov Zambiasi Bazzi Oberderfer

Sumário

1 Estruturas de Controle: Sintaxe:...2

1.1 If-else (se-senão):...2 1.2 For (para):...2 1.3 While (enquanto):...2 1.4 Do-while (faça-enquanto):...2 1.5 Switch (escolha):...2 2 Comandos de Desvios...3 2.1 Comando: return...3 2.2 Comando: goto...3 2.3 Comando: break...3 2.4 Comando: continue...4 2.5 Comando/Função: exit()...4 3 Strings...4

3.1 Lendo um caracter do teclado...5

3.1.1 Exibindo um caracter...6

3.1.2 Lendo uma string do teclado...6

3.1.3 Exibindo uma string...7

3.1.4 Saída formatada (printf)...8

3.1.5 Entrada formatada (scanf)...8

3.2 Especificadores de formato...9

3.3 Funções de Strings...9

3.3.1 Determinar o tamanho de uma string...9

3.3.2 Copiar uma string em outra...10

3.3.3 Unir duas strings...10

3.3.4 Anexar caractares de uma string em outra...11

3.3.5 Converter uma string para maiúsculas...11

3.3.6 Convertendo uma string para minúsculas...12

3.3.7 Localizando a primeira ocorrência de um caractere numa string...12

3.3.8 Localizando a última ocorrência de um caractere numa string...13

3.3.9 Função que conta o número de ocorrências de um caractere numa string...13

3.3.10 Invertendo uma string utilizando a função strrev( )...14

3.3.11 Substituindo os caracteres da string por um único caracter...15

3.3.12 Comparando duas strings...15

3.3.13 Convertendo strings em números...16

3.3.14 Localizando uma substring dentro da string...17

3.3.15 Função que remove uma substring de dentro de uma string...18

3.3.16 Função que substitui uma subtring por outra...19

3.3.17 Invertendo uma string sem o uso da função strrev( )...20

(2)

1 Estruturas de Controle: Sintaxe:

1.1 If-else (se-senão):

if (condição) { instrução 01; instrução 02; …; } else { instrução 01; instrução 02; …; }

1.2 For (para):

for ( i=0; i<10; i++) { instrução 01; instrução 02; instrução 03; …; }

1.3 While (enquanto):

while (condição) { instrução 01; instrução 02; instrução 03; …; }

1.4 Do-while (faça-enquanto):

do { instrução 01; instrução 02; instrução 03; …; } while (condição)

1.5 Switch (escolha):

switch (opção) { case 1: bloco de instrução; break; case 2: bloco de instrução; break; case 3: bloco de instrução; break;

(3)

default: bloco de instrução; break; }

2 Comandos de Desvios

2.1 Comando: return

É usado para retornar de uma função. Ele é um comando de desvio, pois faz com que a execução retorne (salte de volta) ao ponto em que a chamada da função foi feita.

Forma geral:

return expressão;

Apesar da expressão não ser obrigatória, é interessante usá-la, senão o retorno será lixo para a maioria dos compiladores. Uma função declarada como void, não pode ter nenhum comando return.

2.2 Comando: goto

Existe uma grande preocupação com o uso do goto, em relação a deixar o programa ilegível. Uma vez que C tenha os controles break e continue, é pouco provável que você precise do goto.

Onde rótulo é qualquer rótulo válido existente antes ou depois do goto. Por exemplo: x = 1;

loop1: x++;

if (x < 100) goto loop1;

O código acima incrementará x até que seja igual a 100, e então sair do laço.

Goto é um desvio incondicional, prática que se usa muito na chamada "programação espaguete", prática anterior à programação estrutural/procedural.

Hoje em dia, é melhor usar goto em laços for/while, quando demais complexos, como laços dentro de laços dentro de laços dentro de laços... a exemplo da linguagem Java, que possui sistema de rótulos em seus laços. Usamos o rótulo (label) para sair dos níveis mais interiores do laço, coisa que um break não faz já que volta só um nível acima.

Para voltar dois ou mais, usamos goto.

2.3 Comando: break

Ele tem dois usos, no case de um switch ou para terminar imediatamente um laço. Por exemplo: #include <stdio.h> void main(void) { int t; for (t = 0; t < 100; t++) { printf("%d ", t); if (t == 10) break; } }

O programa acima escreve na tela os números de 1 à 10. O laço termina, pois o break provoca uma saída imediata, desrespeitando o teste condicional t < 100. Ele gera a saída apenas do laço mais interno, por exemplo:

(4)

for (t = 0; t < 100; ++t) { count = 1; for (;;) { printf("%d ", count); count++; if (count == 10) break; } }

O programa acima escreve na tela, números de 1 à 10, 100 vezes.

2.4 Comando: continue

Muito semelhante ao break, porém ele apenas faz com que uma iteração de um laço seja cancelada. O programa abaixo conta o número de espaços contidas em uma string inserida pelo usuário:

#include <stdio.h> main() {

char s[80], *str; int space;

printf("digite uma string : "); gets(s); str = s; for (space = 0; *str; str++) { if (*str != ' ') continue; space++; }

printf(" % d espaços\n", space); }

Cada caractere é testado, se não for o espaço, o continue é chamado, fazendo com que o space++ não seja executado.

2.5 Comando/Função: exit()

Esta função provoca o término imediato do programa inteiro. Forma geral:

void exit(int codigo_de_retorno);

O valor de código_de_retorno é retornado ao processo chamador, normalmente o sistema operacional. Zero é geralmente usado como um código de retorno que indica que o programa acabou normalmente. Outros argumentos são usados para indicar algum tipo de erro.

Em um jogo, por exemplo, ele poderia verificar se a placa gráfica é colorida, do contrário não iniciaria: main(){ if (!color_car()) exit(1); play(); }

3 Strings

O uso mais comum de matrizes unidimensionais é como string de caracteres. Lembrando que em C, uma string é uma matriz de caracteres, terminando com o caractere nulo ‘\0’. Por este motivo, se quisermos armazenar o nome Paulo em uma matriz, precisamos declarar 6 elementos, visto que o último sempre será o terminador. Apesar de C não ter o tipo de dado string, uma constante pode ser usada e você não precisa

(5)

usar o caractere terminador, pois o compilador faz isso automaticamente: “constante de teste”

C tem muitas funções de manipulação de strings, as mais comuns são: Nome Função

strcpy(s1, s2) Copia s2 em s1

strcat(s1, s2) Concatena s2 ao final de s1 strlen(s1) Retorna o tamanho de s1

strcmp(s1, s2) Retorna 0 se s1 e s2 são iguais; menor que 0 se s1 < s2; maior que 0 se s1 > s2 strchr(s1, ch) Retorna um ponteiro para a primeira ocorrência de ch em s1

strstr(s1, s2) Retorna um ponteiro para a primeira ocorrência de s2 em s1 Essas funções usam o cabeçalho string.h. Vamos a um exemplo: #include <stdio.h> #include <string.h> int main() { char s1[80], s2[80]; scanf("%s", s1); scanf("%s", s2);

printf("Compr: %d %d\n", (int) strlen(s1), (int) strlen(s2)); if (!strcmp(s1, s2)) printf("As strings são iguais\n");

strcat(s1, s2); printf("%s\n", s1);

strcpy(s1, "Isso é um teste. \n"); printf("%s", s1);

if (strchr("alo", 'o')) printf("o está em alo\n");

if (strstr("ola aqui", "ola")) printf("ola encontrado"); }

3.1 Lendo um caracter do teclado

Para ler um caracter do teclado utilize a função getchar( ). Ela faz parte do arquivo de cabeçalho stdio.h. Sua utilização é:

variavel = getchar();

Esta função retorna o valor inteiro referente ao código ASCII do caractere lido, porém você pode atribuir este valor a uma variável do tipo caracter. Caso ocorra um erro, ela retorna EOF.

Abaixo segue um exemplo da utilização de getchar: /* Exemplo da utilização de getchar */ #include <stdio.h>

int main(){

char caracter; printf("\n");

printf("---\n"); printf("Utilizando a função getchar()\n"); printf("---\n"); printf("\n");

printf("Entre com um caracter:");

(6)

printf("\nCaracter digitado: %c\n\n",caracter); return(0);

}

3.1.1 Exibindo um caracter

Para exibir um caracter você pode usar a função putchar( ) que está no arquivo de cabeçalho stdio.h. Sua sintaxe é:

putchar(variavel)

Onde variavel é um número inteiro, porém você pode passar variavel como um caracter. putchar retorna o caracter exibido ou EOF, caso ocorra algum erro. Exemplo:

/* Exemplo da utilização de putchar */ #include <stdio.h>

int main(){

char caracter; printf("\n");

printf("---\n"); printf("Utilizando a função putchar()\n"); printf("---\n"); printf("\n"); printf("Digite um caracter:"); caracter = getchar();

printf("\nCaracter com putchar: "); putchar(caracter);

printf("\n\n"); return(0); }

3.1.2 Lendo uma string do teclado

Você pode ler uma string do teclado usando as funções gets( ) e fgets(). Elas fazem parte do arquivo de cabeçalho stdio.h.

O gcc desencoraja o uso de gets. A própria man page de gets declara o seguinte em sua seção PROBLEMAS:

Evite o uso da função gets(). Porque é impossível saber, sem conhecer antecipadamente os dados, quantos caracteres gets() vai ler, e porque gets() vai continuar a guardar caracteres ultrapassado o fim do 'buffer', ela é extremamente perigosa de usar. Este comportamento tem sido utilizado para quebrar a segurança de computadores. Use fgets() no seu lugar.

Por isso que só abordarei a sintaxe de fgets, que é a seguinte: fgets(STRING,TAMANHO,STREAM);

(7)

• STRING é a variável onde a string será armazenada • TAMANHO é o tamanho máximo da string

• STREAM é de onde os caracteres serão lidos, para ler do teclado o valor padrão para isto é stdin Exemplo do uso de fgets:

/* usando fgets para ler uma string do teclado */ #include <stdio.h>

int main(){

char frase[50];

printf("Digite uma frase:"); fgets(frase,50,stdin); printf("\n"); printf("Exibindo:\n\n"); printf("%s\n",frase); return(0); }

3.1.3 Exibindo uma string

Você pode exibir uma string usando a função printf() ou a função puts( ). Elas fazem parte do arquivo de cabeçalho stdio.h.

A sintaxe de printf() para a exibir uma string é; printf("%s",STRING); Exemplo: #include <stdio.h> int main(){ char string[30]; printf("\n"); printf("---\n"); printf("Exemplo do uso de printf para exibir strings\n"); printf("---\n"); printf("Digite uma string :");

fgets(string,30,stdin); printf("\n");

printf("A string digitada foi: %s",string); printf("\n\n"); return(0); } A sintaxe de puts() é: puts(string) Exemplo:

(8)

#include <stdio.h> int main(){

char string[30]; printf("\n");

printf("---\n"); printf("Exemplo do uso de puts\n"); printf("---\n"); printf("\n");

printf("Digite uma string :"); fgets(string,30,stdin);

printf("\n");

printf("A string digitada foi: ",string); puts(string);

printf("\n\n"); return(0); }

3.1.4 Saída formatada (printf)

A saída formatada é feita utilizando a função printf() vista anteriormente. printf faz parte do arquivo de cabeçalho stdio.h

3.1.5 Entrada formatada (scanf)

A entrada formatada é feita utilizando a função scanf. Ela faz parte do arquivo de cabeçalho stdio.h. Sua sintaxe é:

scanf("especificador de formato",&variável)

O especificador de formato segue a mesma sintaxe da função printf.

Observe que o valor entrado é passado para o endereço da variável. No caso de leitura de uma string não há necessidade do operador &, já que o nome de uma string sem o índice é entendido pela linguagem C como um ponteiro para o início da string.

Abaixo segue um exemplo do uso de scanf: # include<stdio.h> int main(){ int qde; float preco,total; char produto[20]; printf("\n"); printf("Produto :"); scanf("%s",produto); printf("\n"); printf("Preço :"); scanf("%f",&preco); printf("\n"); printf("Quantidade :"); scanf("%d",&qde); printf("\n");

(9)

printf("Produto\tPreço\tQde\tTotal\n"); printf("%s\t%.2f\t%d\t%.2f\n\n",produto,preco,qde,qde*preco); return(0); }

3.2 Especificadores de formato

Especificador Valor %d inteiro

%o inteiro em formato octal

%x inteiro em formato hexadecimal

%u unsigned int

%ld long int

%f float

%c char

%e %E float em formato exponencial

%g %G float. C escolhe melhor maneira de exibição entre normal e exponencial

%s string

%p endereço de um ponteiro

%n quantos caracteres a função printf exibiu

3.3 Funções de Strings

3.3.1 Determinar o tamanho de uma string

Para determinar o tamanho de uma string use a função strlen( ). Esta função faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

strlen(string) Exemplo:

/* Determinando o tamanho de uma string usando a função strlen() */ #include <stdio.h> #include <string.h> int main() { char string[20]; printf("\n");

printf("Determinando o tamanho de uma string\n"); printf("---\n"); printf("\n");

printf("Digite a string :"); scanf("%s",&string);

printf("\n");

printf("A string tem %d carateres.\n\n",strlen(string)); return(0);

(10)

}

3.3.2 Copiar uma string em outra

Para copiar uma string em outra use a função strcpy( ). Esta função faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

strcpy(destino, origem) Exemplo:

/* Copiando uma string em outra usando a função strcpy() */ #include <stdio.h>

#include <string.h> int main()

{

char string1[10], string2[10]; printf("\n");

printf("Copiando uma string em outra\n"); printf("---\n"); printf("\n"); printf("Digite string1 :"); scanf("%s",&string1); printf("\n"); printf("string1 = %s\n",string1); printf("string2 = %s\n",strcpy(string2,string1)); return(0); }

Na prática, todo conteúdo de string2 é substituído por string1.

3.3.3 Unir duas strings

Para unir duas strings use a função strcat( ). Esta função faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

strcat(destino, origem) Exemplo:

/* Unindo duas strings usando a função strcat() */ #include <stdio.h>

#include <string.h> int main()

{

char string1[100], string2[10]; printf("\n");

printf("Unindo duas strings\n"); printf("---\n"); printf("\n"); printf("Digite string1 :"); scanf("%s",&string1); printf("\n"); printf("Digite string2 :"); scanf("%s",&string2); printf("\n");

printf("Unindo string1 a string2 : %s\n\n",strcat(string2,string1)); return(0);

(11)

}

3.3.4 Anexar caractares de uma string em outra

Para anexar caracteres de uma string em outra use a função strncat( ). Esta função faz parte do arquivo de cabeçalho string.h. Sua sintaxe é :

strncat(destino, origem, nr_caracteres) Exemplo:

/* Anexando caracteres de uma string em outra usando a função strncat()*/ #include <stdio.h> #include <string.h> int main() { char string1[20],string2[6]="aeiou"; printf("\n");

printf("Anexando caracteres de uma string em outra\n"); printf("---\n"); printf("Entre com string1 :");

scanf("%s",&string1); printf("\n");

printf("string2 = %s\n\n",string2);

printf("string1 + 3 caracteres de string 2 = %s\n",strncat(string1,string2,3)); printf("\n");

return(0); }

6.5 Função que determina se duas strings são iguais int streql(char *str1, char *str2)

{ while((*str1 == *str2) && (*str1)) { str1++; str2++; }

return((*str1 == NULL) && (*str2 == NULL)); }

3.3.5 Converter uma string para maiúsculas

Para converter uma string para maiúsculas use a função strupr( ). Esta função faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

strupr(string) Exemplo:

/* Convertendo uma string em maiúsculas usando a função strupr() */ #include <stdio.h> #include <string.h> int main() { char string[20]; printf("\n");

printf("Convertendo uma string para maiúsculas\n"); printf("---\n");

(12)

printf("\n");

printf("Entre com a string :"); scanf("%s",&string);

printf("\n");

printf("string digitada : %s\n",string); printf("\n");

printf("Convertendo para maiúsculas : %s\n",strupr(string)); return(0);

}

3.3.6 Convertendo uma string para minúsculas

Para converter uma string para minúsculas use a função strlwr( ). Esta função faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

strlwr(string) Exemplo:

/* Convertendo uma string em minúsculas usando a função strlwr() */ #include <stdio.h> #include <string.h> int main() { char string[20]; printf("\n");

printf("Convertendo uma string para minúsculas\n"); printf("---\n"); printf("\n");

printf("Entre com a string :"); scanf("%s",&string);

printf("\n");

printf("string digitada : %s\n",string); printf("\n");

printf("Convertendo para minúsculas : %s\n",strlwr(string)); return(0);

}

3.3.7 Localizando a primeira ocorrência de um caractere numa string

Para isso use a função strchr( ). Ela faz parte do arquivo de cabeçalho string.h. Sua sintaxe é: strchr(string, caracter)

Este função retorna um ponteiro para a primeira ocorrência de "caracter". Caso "caracter" não seja encontrado, ela retornará um ponteiro para o caractere NULL que marca o final da string.

Exemplo:

/* Localizando o primeiro caracter numa string usando a função strchr()*/ #include <stdio.h>

#include <string.h> int main()

{

char string[30] = "Teste da função strchr()."; char *ptr;

(13)

ptr = strchr(string, 's'); if (*ptr)

{

printf("\n");

printf("A primeira ocorrência de s é na posição %d\n",ptr - string); }

else

printf("Caractere não encontrado.\n"); return(0);

}

3.3.8 Localizando a última ocorrência de um caractere numa string

Para isso use a função strrchr( ). Ela faz parte do arquivo de cabeçalho string.h. Sua sintaxe é: strrchr(string, caracter)

Este função retorna um ponteiro para a última ocorrência de "caracter". Caso "caracter" não seja encontrado, ela retornará um ponteiro para o caractere NULL que marca o final da string.

Exemplo:

/* Localizando o último caracter numa string usando a função strrchr()*/ #include <stdio.h>

#include <string.h> int main()

{

char string[30] = "Teste da função strrchr()."; char *ptr; printf("\n%s\n",string); ptr = strrchr(string, 's'); if (*ptr) { printf("\n");

printf("A última ocorrência de s é na posição %d\n",ptr - string); }

else

printf("Caractere não encontrado.\n"); return(0);

}

3.3.9 Função que conta o número de ocorrências de um caractere numa string

int contachar(char string[], char letra)

{

int contador, tamanho, ocorrencia = 0; tamanho = strlen(string); for(contador=1;contador <= tamanho;contador++) if(string[contador] == letra) ocorrencia++; return(ocorrencia); }

(14)

Abaixo segue um exemplo com a utilização da função contachar(). O exemplo considera que ela faz parte do arquivo de cabeçalho <samfunc.h>:

#include <stdio.h> #include <string.h> #include <samfunc.h> int main() { char *string[20]; char letra[2]; int nr;

printf("Testando a função contachar()\n"); printf("---\n"); printf("\n");

printf("Entre com a string :"); scanf("%s",&string);

printf("\n");

printf("Entre com a letra :"); scanf("%s",&letra);

nr = contachar(string,letra[0]); printf("\n");

printf("Contando o número de ocorrências : %d\n",nr); return(0);

}

3.3.10

Invertendo uma string utilizando a função strrev( )

Para inverter o conteúdo de uma string use a função strrev( ). Ela faz parte do arquivo de cabaçalho string.h. Sua sintaxe é:

strrev(string) Exemplo:

/* Invertendo uma string usando a função strrev() */ #include <stdio.h> #include <string.h> int main() { char string[20]; printf("\n");

printf("Invertendo uma string\n"); printf("---\n"); printf("\n");

printf("Entre com a string :"); scanf("%s",&string);

printf("\n");

printf("Invertendo ==> %s",strrev(string)); return(0);

}

3.3.11

Substituindo os caracteres da string por um único caracter

Para substituir todos os caracteres da string pelo mesmo caracter use a função strset( ). Ela faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

(15)

Exemplo:

/* Substituindo todos os caracteres da string pelo mesmo caracter usando a função strset() */ #include <stdio.h> #include <string.h> int main() { char string[20]; char caracter[2]; printf("\n");

printf("Substituindo os caracteres da string\n"); printf("---\n"); printf("\n"); printf("Digite a string :"); scanf("%s",&string); printf("\n"); printf("Caractere :"); scanf("%s",&caracter); printf("\n"); printf("Substituindo ==> %s",strset(string,caracter[0])); return(0); }

3.3.12

Comparando duas strings

Para comparar duas strings use a função strcmp( ). Ela faz parte do arquivo de cabeçalho string.h. Sua sintaxe é:

strcmp(string1,string2)

Se as strings forem iguais a função retorna zero, se string1 for maior a função retorna um valor menor que zero e se string2 for maior a função retorna um valor maior que zero.

Exemplo:

/* Comparando duas strings com a função strcmp() */ #include <stdio.h> #include <string.h> int main() { char string1[20],string2[20]; int retorno; printf("\n");

printf("Comparando duas strings\n"); printf("---\n"); printf("\n");

printf("Entre com a primeira string :"); scanf("%s",&string1);

printf("\n");

printf("Entre com a segunda string :"); scanf("%s",&string2);

printf("\n");

retorno = strcmp(string1,string2); if(retorno == 0)

(16)

else if(retorno < 0)

printf("A string1 , maior.\n"); else

printf("A string2 , maior.\n"); return(0);

}

OBSERVAÇÕES:

1.A função strcmp( ) possui uma variante, a função strncmp( ) que compara os n primeiros caracteres de duas strings. Sua sintaxe é:

strncmp(string1,string2,nr_caracteres)

2.Existem ainda as funções stricmp( ) e strncmpi( ) que comparam duas strings sem considerar a caixa das letras (maiúsculas ou minúsculas).

3.3.13

Convertendo strings em números

Para converter strings em números utilize as funções abaixo: FUNÇÃO CONVERTE STRINGS EM

atof(string) float atoi(string) int atol(string) long int strtod(string) double strtol(string) long

Estas funções fazem parte do arquivo de cabeçalho stdlib.h Exemplo:

/* Convertendo strings em números */ #include <stdio.h> #include <stdlib.h> int main() { char string1[20],string2[20]; printf("\n");

printf("Convertendo strings em números\n"); printf("---\n"); printf("\n");

printf("Entre com a primeira string :"); scanf("%s",&string1);

printf("\n");

printf("Entre com a segunda string :"); scanf("%s",&string2);

printf("\n");

printf("string1 + string2 = %f",atof(string1) + atof(string2)); return(0);

(17)

3.3.14

Duplicando uma string

Para duplicar uma string use a função strdup( ). Ela está no arquivo de cabeçalho string.h. Sua sintaxe é: *strdup(string)

Exemplo:

/* Duplicando uma string */ #include <stdio.h> #include <string.h> int main() { char string[20]; char *copia; printf("\n");

printf("Duplicando uma string\n"); printf("---\n"); printf("\n");

printf("Entre com a string :"); scanf("%s",&string); printf("\n"); copia = strdup(string); printf("string ==> %s\n",string); printf("cópia ==> %s\n",copia); return(0); }

3.3.15

Localizando uma substring dentro da string

Para localizar uma substring dentro da string use a função strstr( ). Ela pertence ao arquivo de cabeçalho string.h e sua sintaxe é:

strstr(string,substring)

Se a substring existir dentro da string, a função retornará um ponteiro para a primeira letra da substring, senão retornará NULL.

Exemplo:

/* Localizando uma substring dentro de uma string */ #include <stdio.h> #include <string.h> int main() { char string[20],substring[20]; char *extrai; int tamanho; printf("\n");

printf("Localizando uma substring dentro da string\n"); printf("---\n"); printf("\n");

printf("Entre com a string :"); scanf("%s",&string);

printf("\n");

printf("Entre com a substring :"); scanf("%s",&substring);

tamanho = strlen(substring); extrai = strstr(string,substring);

(18)

printf("\n"); if(extrai) {

printf("A string contém a substring.\n");

printf("A substring começa na posição %d.\n",extrai-string); printf("A substring tem %d caracteres.\n",tamanho);

} else

printf("A string não contém a substring.\n"); return(0);

}

3.3.16

Função que remove uma substring de dentro de uma string

#include <stdio.h> #include <string.h>

char *sstr(char *string, char *substring) { char *extrai; int tamanho,contador; tamanho = strlen(substring); extrai = strstr(string,substring); if(extrai) {

for(contador = 0;contador < tamanho; contador++)

extrai[contador] = string[(extrai - string) + contador]; extrai[contador] = NULL; return(extrai); } else return(" "); } int main() { char string[20],substring[20]; printf("\n");

printf("Entre com a string :"); scanf("%s",&string);

printf("\n");

printf("Entre com a substring :"); scanf("%s",&substring);

printf("\n");

printf("substring ==> %s\n",sstr(string,substring)); return(0);

(19)

3.3.17

Função que substitui uma subtring por outra

#include <stdio.h>

#include <string.h>

char *subs_str(char *string, char *substring, char *nova) {

char *extrai;

int tamanho1,tamanho2,contador; tamanho1 = strlen(substring); tamanho2 = strlen(nova);

if((tamanho1 > tamanho2) || (tamanho2 > tamanho1)) return(" "); else { extrai = strstr(string,substring); if(extrai) {

for(contador = 0;contador < tamanho1; contador++)

string[(extrai - string) + contador] = nova[contador]; return(string); } else return(" "); } } int main() { char string[20],substring[20],nova[20]; printf("\n");

printf("Entre com a string :"); scanf("%s",&string);

printf("\n");

printf("Entre com a substring :"); scanf("%s",&substring);

printf("\n");

printf("Entre com a nova substring :"); scanf("%s",&nova);

printf("\n");

printf("nova string ==> %s\n",subs_str(string,substring,nova)); return(0);

(20)

3.3.18

Invertendo uma string sem o uso da função strrev( )

/* Invertendo uma string */

#include <stdio.h> #include <string.h> int main() { char string[100],invertida[100]; char *caracter; int tamanho,contador; printf("\n");

printf("Invertendo uma string\n"); printf("---\n"); printf("\n");

printf("Entre com a string :"); scanf("%s",&string); tamanho = strlen(string); contador = tamanho; caracter = &string; while(*caracter) { invertida[(contador - 1)] = *caracter; *(caracter++); contador--; } invertida[tamanho] = NULL; printf("\n"); printf("Invertendo ==> %s\n\n",invertida); return(0); }

4 Referências Bibliográficas

1. UNICAMP. Introdução a Linguagem C. Disponível em: http://www.fsc.ufsc.br/~canzian/root/tutorial-c-unicamp.pdf . Acesso em: 25/03/2013.

2. TRENTIN, Paulo. Curso gratuito de programação em C. Disponível em:

http://www.paulotrentin.com.br/programacao/curso-gratuito-programacao-c/ . Acesso em: 10/04/2013.

3. NETO, Samuel Dias. Linguagem C: Intermediário. Disponível em:

http://homepages.dcc.ufmg.br/~joaoreis/Site%20de%20tutoriais/c_int/es.htm. Acesso em: 11/02/2013.

Referências

Documentos relacionados

Luís Sáragga Leal, Sócio e Co-Coordenador de PLMJ Projetos Internacionais, Nuno Líbano Monteiro, Sócio e Coordenador de PLMJ Contencioso, Sofia Gomes da Costa, Sócia e

No corpus recolhido, observou-se que houve um relevante uso de pronomes oblíquos em contextos com locuções verbais nos textos dissertativos, em maior número na

The findings of the current study indicate that grinding with diamond burs and hydrothermal aging modify the surface properties (ie, m-phase content, surface

Parágrafo segundo – Não ocorrendo a citada homologação por responsabilidade do SESI-SP, em até 30 (trinta) dias após o prazo máximo para o pagamento das

Se Mouillaud aponta as qualidades de fazer saber e fazer crer do jornalismo, aos jornais e programas populares, obviamente acrescenta-se a propriedade de fazer sentir

Art. 38- Os cursos de Graduação têm por objetivo proporcionar a formação de nível superior que habilite à obtenção de graus acadêmicos ou que assegurem o exercício

Fig_S - Fotomontagem de uma hemisecção de medula espinal de rã Rana catesbeiana mostrando reação a NADPH-diaforase em fibras da porção dorsal do funículo lateral

Este estudo enfatiza a necessidade de um contexto mais favorável ao exercício da profissão docen- te, sugerindo o desenvolvimento de programas que propiciem um espaço institucional