4) { while ($ads2 == $ads1) { $ads2 = rand(1, $slides); } } $ads3 = rand(1, $slides); if ($slides > 4) { while (($ads3 == $ads2) || ($ads3 == $ads1)) { $ads3 = rand(1, $slides); } } ?>
INTRODUÇÃO À PROGRAMAÇÃO  
LISTA DE EXERCÍCIOS 13  
1.  
Faça um programa para ler uma cadeia de caracteres (máximo 40 caracteres) e outros dois  
caracteres. Em seguida, o programa deve exibir a cadeia de caracteres substituindo todas  
as ocorrências do primeiro caractere pelo segundo caractere. Por exemplo, se o usuário  
digitar “Programacao”, e os caracteres 'a' e 'e', o programa deve mostrar “Progremeceo”.  
O seu programa deve implementar e usar uma função que recebe como parâmetro uma  
string e dois caracteres (original e novo), e substitui todas as ocorrências do caractere  
original na string pelo caractere novo. A função deve obedecer ao protótipo:  
void troca_letra(char str[], char original, char novo);  
2.  
Faça um programa para ler uma cadeia de caracteres (máximo 40 caracteres) e em seguida  
exibir a string invertida. O seu programa deve implementar e usar uma função que receba  
como parâmetro uma string e a inverta de trás para frente. Por exemplo, ao receber a  
string "puc-rio", a função deve transformar a string em "oir-cup". A função deve obedecer  
ao protótipo:  
void inverte_string(char str[]);  
3.  
Faça um programa para ler uma cadeia de caracteres (máximo 40 caracteres) e em seguida  
exibir somente uma parte dessa string. O seu programa deve implementar e usar uma  
função chamada imprime_pedacoque receba uma string e dois inteiros representando  
duas posições válidas (inicial e final) da string. A função deve exibir os caracteres da string  
a partir da posição inicial especificada até a posição final. A função deve obedecer ao  
protótipo:  
void imprime_pedaco(char str[], int inicio, int fim);  
3.  
Crie um programa que seja capaz de embaralhar uma string S1 com uma string S2 e  
colocar o resultado em uma string S3. Para embaralhar S1 com S2 é necessário preencher  
os índices pares de S3 com os elementos de S1 e os ímpares com os elementos de S2 até  
que os elementos de uma das duas strings termine. Os demais elementos de S3 serão  
preenchidos com os elementos da string restante.  
Exemplo:  
Digite a string S1: local  
Digite a string S2: misterio  
Nova string S3: lmoicsatlerio  
Seu programa deve implementar e usar uma função com o seguinte protótipo:  
void embaralha_strings(char s1[], char s2[], char s3[]);  
Seu programa deve pedir ao usuário para digitar as duas strings, chamar a função  
embaralha_strings e exibir as strings obtidas e a string embaralhada.  
4.  
Uma revista de caça-palavras recebeu algumas reclamações dos seus clientes e deseja  
calcular algumas estatísticas sobre as letras armazenadas na matriz 20x20 das suas  
atividades de caça-palavras.  
Faça um programa que leia de um arquivo texto chamado “letras.txt” as letras do caça-  
palavras e mostre as seguintes estatísticas:  
a) Quantidade de vezes que há letras iguais em posições vizinhas em cada linha;  
b) Quantidade de vezes que a letra ‘Z’ aparece na matriz;  
c) Média de vogais por coluna;  
d) Quantidade de letras ‘Q’ na diagonal principal;  
e) Quantidade de letras ‘U’ acima da diagonal principal;  
O seu programa deve implementar e utilizar uma função para cada uma das estatísticas a  
ser calculada.  
5.  
A eleição para presidente da ilha IPRJ terminou ontem à noite, sem nenhum incidente.  
Tanto os eleitores que moram na ilha quanto os que moram no exterior já votaram em um  
dos candidatos à presidência (máximo 30 candidatos). Também foi possível que o eleitor  
anulasse seu voto digitando na urna eletrônica o nome de um candidato inválido.  
As informações sobre a eleição estão distribuídas em 2 arquivos:  
CANDIDATOS.TXT: arquivo texto com os nomes e partidos dos candidatos à  
presidência (uma informação por linha):  
o
o
Nome do candidato (máximo de 20 caracteres válidos);  
Partido do candidato (máximo de 20 caracteres válidos).  
VOTOS.TXT: arquivo texto com os votos dos eleitores; uma linha para cada eleitor,  
contendo:  
i. Local da residência do eleitor: valor 0 (se é morador da ilha) ou valor 1  
(se mora no exterior);  
ii. Nome do candidato.  
Cada voto de um eleitor que mora na ilha vale integralmente para o seu candidato. Mas o  
total de votos recebido de eleitores que moram no exterior não pode ultrapassar 10% do  
total de votos recebidos de eleitores que moram na ilha. Ou seja, se um candidato  
recebeu 100 votos locais e 35 votos do exterior, o total de votos válidos desse candidato é  
110 (100 + 10).  
Faça um programa que gere um relatório (arquivo RELATORIO.TXT) baseado nas  
informações dos arquivos fornecidos de acordo com a saída esperada (vide seção  
RESULTADO ESPERADO). Para facilitar, assuma que não haverá empate no resultado.  
O seu programa deverá utilizar as seguintes funções feitas por você:  
a) função le_dados_candidatos(): recebe dois vetores de strings como parâmetro e  
preenche os vetores com os nomes e partidos lidos do arquivo CANDIDATOS.TXT.  
A função também deve retornar a quantidade de candidatos lidos;  
b) função le_votos(): recebe a matriz que armazena a quantidades de votos como  
parâmetro e a preenche com as informações de votos presentes no arquivo  
VOTOS.TXT;  
c) função gera_relatorio(): recebe, como parâmetros, todos as informações  
necessárias para gerar o relatório conforme seção RESULTADO ESPERADO;  
d) função descobre_eleito(): recebe a matriz com as quantidades de votos como  
parâmetro e retorna o número da linha da matriz referente ao candidato eleito.  
ARQUIVO CANDIDATOS.TXT:  
http://www.inf.puc-rio.br/~elima/prog1/Candidatos.txt  
ARQUIVO VOTOS.TXT:  
http://www.inf.puc-rio.br/~elima/prog1/Votos.txt  
RESULTADO ESPERADO (ARQUIVO RELATORIO.TXT):  
Nome  
Partido  
Votos  
Votos  
Votos exterior  
Total  
locais  
1
7
1
14  
2
0
1
1
1
0
9
8
87  
0
0
5
4
1
exterior  
computados  
geral  
1
7
1
15  
2
0
1
1
1
0
9
8
95  
0
0
5
4
1
CLARABELA  
GASTAO  
MARGARIDA  
MICKEY MOUSE  
PATETA  
JOAO BAFO DE ONCA  
ZEZINHO  
LUIZINHO  
HUGUINHO  
PLUTO  
PROFESSOR PARDAL  
MINNIE  
ZE CARIOCA  
TECO  
TICO  
DISNEY  
0
0
3
3
0
0
0
0
0
0
4
0
8
1
1
2
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
8
0
0
0
0
0
0
CARTOON  
DISCOVERY  
DISNEY  
DISNEY  
DISCOVERY  
DISNEY  
FOX  
DISCOVERY  
CARTOON  
FOX  
DISNEY  
DISCOVERY  
CARTOON  
CARTOON  
FOX  
DISNEY  
DISCOVERY  
CARTOON  
PATO DONALD  
PENINHA  
TIO PATINHAS  
VOVO DONALDA  
15  
15  
*** PRESIDENTE ELEITO: ZE CARIOCA DO PARTIDO DISCOVERY ***