Você está na página 1de 10

/*---------------------------------------------------------------------Linguagens e Tcnicas de Programao - ALGPROG

professores Rodolfo Goya e Bernardo Goisman


Atividade de Laboratrio 07. 08/08/2011
Uso de funo em Linguagem C: Matrizes e Strings
----------------------------------------------------------------------*/
/*---------------------------------------------------------------------Exemplo de uso matrizes.
----------------------------------------------------------------------*/
#include <conio.h>
/* Para o prototipo de putch().
*/
#include <stdio.h>
/* Para o prototipo de printf() e scanf().
*/
#include <stdlib.h>
/* Biblioteca onde system() esta' definido.
*/
void barra( float );
void extremos( float array[] ); /* Note que passamos um array como parametro. */
float max, min; /* Os extremos serao dados globais. */
int main() /* Exemplo de uso de matrizes. */
{
int i;
float dados[10]; /* Declaramos um array de 10 dados com tipo float. */
float soma;
printf( "\n" );
for( i = 0; i < 10; i++ ) /* Entrada dos dados. */
{
printf( "Entre com a temperatura no dia %2d: ", i+1 );
scanf( "%f", &dados[i] );
}
extremos( dados ); /* Note que passamos um array como parametro. */
for( i = 1, soma = dados[0]; i < 10; i++ ) /* Computa media. */
soma += dados[i];
/* Imprime cabecalho do grafico. -----------------------------------*/
printf( "\nDia Temperatura| min" );
for( i = 0; i < 44; i++ )
printf( "." );
printf( "max" );
for( i = 0; i < 10; i++ ) /* Imprime o grafico. */
{
printf( "\n%2d ->%11.2f: ", i + 1, dados[i] );
barra( dados[i] );
}
/* Imprime resultados do maximo, minimo e media. -------------------*/
printf( "\nMaxima= %8.2f", max );
printf( "\nMinima= %8.2f", min );
printf( "\nMedia = %8.2f", soma / 10 );
system( "PAUSE" );
return 0;
}

/*----------------*/
void barra( float x )
{
float final, passo;
int i;
final = 50.0 * ( x + 0.01 - min ) / ( max + 0.01 - min );
passo = 0.0; /* Imprime de 1 a 50 dependendo do x recebido. */
i
= 0;
while( passo++ < final )
if( ++i % 10 )
putch( '=' );
else
putch( '*' ); /* Imprime um '*' a cada 10 impressoes feitas. */
}
/*----------------*/
void extremos( float array[] ) /* Note que passamos um array como parametro. */
{
int i;
max = min = array[0];
for( i = 1; i < 10; i++ ) /* Computa maximo e minimo. */
{
if( min > array[i] )
min = array[i];
if( max < array[i] )
max = array[i];
}
}

/*---------------------------------------------------------------------Exemplo de uso matrizes.


----------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>

/* Para o prototipo de printf() e scanf().


/* Biblioteca onde system() esta' definido.

int main() /* Exemplo de uso de matrizes 2. Inicializacao. */


{
int dias[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int d1, d2, m1, m2;
int dias1;
int dias2;
int i;
printf( "\nCalcula o numero de dias entre duas datas.\n\n" );
printf( "Entre com a primeira data( dia mes ):" );
scanf( "%d %d", &d1, &m1 );

*/
*/

printf( "Entre com a segunda data( dia mes ):" );


scanf( "%d %d", &d2, &m2 );
dias1 = d1;
for( i = 0; i < m1 - 1; i++ ) /* Calcula o numero de dias entre 01/01 e dia1.
*/
dias1 += dias[i];
dias2 = d2;
for( i = 0; i < m2 - 1; i++ ) /* Calcula o numero de dias entre 01/01 e dia1.
*/
dias2 += dias[i];
printf( "\nO numero de dias entre %02d/%02d e %02d/%02d eh %d.\n", d1, m1, d2,
m2, dias2-dias1 );
system( "PAUSE" );
return 0;
}

/*---------------------------------------------------------------------Exemplo de uso matrizes.


----------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>

/* Para o prototipo de printf() e scanf().


/* Biblioteca onde system() esta' definido.

*/
*/

int main() /* Exemplo de uso de matrizes 3. Inicializacao. */


{
long valores[] = {100,
50,
20,
10,
5, /* Note que o tamanho da
*/
1}; /* matriz nao foi especificado. */
long moedas[] = {50,
25,
10,
5,
1};

/* Note que o tamanho da


*/
/* matriz nao foi especificado. */

int indice;
long quantidade;
long valor, centavos;
printf( "\nCalcula quantas notas precisa para um valor em dinheiro.\n\n" );
printf( "Entre com um valor em dinheiro (R$###,##): R$" );
scanf( "%ld,%ld", &valor, &centavos );
indice = 0;
while( valor > 0 )
{
quantidade = valor / valores[indice];
if( quantidade )

printf( "Numero de notas de R$%5ld.00: %-ld.\n", valores[indice], quantida


de );
valor %= valores[indice++];
}
indice = 0;
while( centavos > 0 )
{
quantidade = centavos / moedas[indice];
if( quantidade )
printf( "Numero de moedas de R$0.%02ld: %-ld.\n", moedas[indice], quantida
de );
centavos %= moedas[indice++];
}
system( "PAUSE" );
return 0;
}

/*---------------------------------------------------------------------Exemplo de uso matrizes.


----------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>

/* Para o prototipo de printf() e scanf().


/* Biblioteca onde system() esta' definido.

*/
*/

#define LINHAS 5
#define COLUNAS 10
/* Jogo de batalha naval. --------------------------------------------*/
int main() /* Exemplo de uso de matrizes 2. Matriz de duas dimensoes. */
{
char inimigo[LINHAS][COLUNAS] =
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{ 0, 1, 1, 1, 1, 0, 0, 1, 0, 1},
{ 0, 0, 0, 0, 0, 0, 0, 1, 0, 1},
{ 1, 0, 0, 0, 0, 0, 0, 1, 0, 0},
{ 1, 0, 1, 1, 1, 0, 0, 0, 0, 0} };
char tentativas[LINHAS][COLUNAS];
int i, j;
int alvos;
int acertos;
/* Inicia as tentativas e conta os alvos a acertar. ----------------*/
alvos = 0;
for( i = 0; i < LINHAS; i++ )
for( j = 0; j < COLUNAS; j++ )
{
tentativas[i][j] = '.';
if( inimigo[i][j] )
alvos++;

}
acertos = 0;
while( acertos < alvos )
{
for( i = 0; i < LINHAS; i++ ) /* Imprime a posicao atual. */
{
for( j = 0; j < COLUNAS; j++ )
printf( "%c ", tentativas[i][j] );
printf( "\n\n" );
}
printf( "Coordenadas de tiro( x, y ):" );
scanf( "%d, %d", &i, &j );
if( inimigo[i][j] )
{
tentativas[i][j] = '\xDB'; /* Acertou. */
acertos++;
}
else
tentativas[i][j] = '\xB1'; /* Errou. */
}
system( "PAUSE" );
return 0;
}

/*---------------------------------------------------------------------Exemplo de uso strings.


----------------------------------------------------------------------*/
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

/* Para o prototipo das funcoes de strings.


/* Para o prototipo de printf() e scanf().
/* Biblioteca onde system() esta' definido.

*/
*/
*/

int main() /* Exemplo de uso de strings. Entrada e saida. ------------*/


{
char nome[81];
char sobrenome[81];
char copia[81];
int
i;
size_t tam1, tam2;
printf( "\nComo eh o seu nome: " );
gets( nome ); /* gets eh uma funcao que le string. */
/* O especificador de formato eh %s e nao se usa & antes
do nome de uma variavel de tipo string.
printf( "\nComo vai %s ?", nome );
printf( "\nComo eh o seu sobrenome: " );
scanf( "%s", sobrenome );

*/

puts( "Seu nome completo, entao, eh:" ); /* puts imprime string.

*/

strcpy( copia, nome );


/* Copiamos o nome para copia.
strcat( copia, " " );
/* Concatenamos o nome e o
strcat( copia, sobrenome ); /* sobrenome em um soh string.

*/
*/
*/

printf( "%s", copia );


i = 0;
while( copia[i++] ); /* Percorre o string ate' achar o \0. */
printf( "\nSeu nome completo tem %u letras.", i - 2 );
tam1 = strlen( nome );
tam2 = strlen( sobrenome );
printf( "\nSeu nome tem %u letras e o sobrenome %u letras.", tam1, tam2 );
system( "PAUSE" );
return 0;
}

/*---------------------------------------------------------------------Exemplo de uso strings.


----------------------------------------------------------------------*/
#include
#include
#include
#include

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

/*
/*
/*
/*

Para o prototipo de getch() e putch().


Para o prototipo das funcoes de strings.
Para o prototipo de printf().
Biblioteca onde system() esta' definido.

*/
*/
*/
*/

#define NUM_USERS 5
int main() /* Exemplo de uso de strings. Manipulacao. ----------------*/
{
static char nome[NUM_USERS][21] = /* Nomes de no maximo 20 caracteres. */
{ "Goya",
"Ulisses",
"Angelo",
"Julio",
"Ricardo" }; /* Tabela de usuarios. */
static char senhas[NUM_USERS][6] = /* Senha de no maximo 5 caracteres. */
{ "12345",
"a",
"aaaaa",
"abcd",
"x"
}; /* Tabela de senhas.
*/
char User[21]; /* Nome teclado pelo usuario. */
char senha[6]; /* Senha teclada pelo usuario. */
char ch;
int i, j;
int achou = 0;
printf( "\nUsercode: " ); /* Le o nome de usuario. */

gets( User );
for( i = 0; i < NUM_USERS; i++ )
/* Procura na tabela de usuario. */
if( stricmp( nome[i], User ) == 0 ) /* Compara ignorando case. Achou ? */
{
achou = 1;
break;
}
if( achou )
{
printf( "\nSenha: " );
j = 0;
while( ((ch = getch()) != '\r') && (j < 5) ) /* Le a senha. */
{
senha[j] = ch; /* Le sem ecoar e imprime '*'. */
putch( '*' );
j++;
}
senha[j] = '\0'; /* Termina o string colocando \0 no final. */
if( strcmp( senhas[i], senha ) == 0 ) /* A senha eh correta ? */
printf( "\nOla sr. %s !\nComo vai ?\n", User );
else
printf( "\n\aSenha \ainvalida!\n\aPrendam \aeste \acara !\n" );
}
else
printf( "Usuario nao cadastrado." );
system( "PAUSE" );
return 0;
}

/*---------------------------------------------------------------------Exemplo de uso strings.


----------------------------------------------------------------------*/
#define MENSAGEM "Teste de datilografia\n\n"
#include
#include
#include
#include

<time.h>
<string.h>
<stdio.h>
<stdlib.h>

/*
/*
/*
/*

Para o prototipo das funcoes de tempo.


Para o prototipo das funcoes de strings.
Para o prototipo de printf() e scanf().
Biblioteca onde system() esta' definido.

*/
*/
*/
*/

int main() /* Exemplo de uso de strings. Constantes de strings. ------*/


{
const char teste[] = "The quick brown fox jumps over the lazy dog.";
char resposta[255];
time_t inicio;
time_t final;
double tempo;
printf( MENSAGEM );
while( 1 )

{
printf( "\nDigite a seguinte frase:\n%s\n", teste );
time( &inicio ); /* time devolve o numero de segundos deste
meia noite.
gets( resposta );

*/

time( &final );
if( strcmp( teste, resposta ) != 0 ) /* Compara os strings. */
printf( "\nVoce errou a digitacao. Tente de novo." );
else
break; /* Sai do while. */
}
printf( "\nParabens. Voce passou no teste." );
tempo = difftime( final, inicio ); /* difftime calcula a diferenca
entre final e inicial.
*/
printf( "\nSeu tempo foi de %.1f segundos.\n\n", tempo );
system( "PAUSE" );
return 0;
}

/*---------------------------------------------------------------------Exemplo de uso strings.


----------------------------------------------------------------------*/
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

/* Para o prototipo das funcoes de strings.


/* Para o prototipo de printf() e scanf().
/* Biblioteca onde system() esta' definido.

*/
*/
*/

int main() /* Exemplo de uso de strings. Conversoes. -----------------*/


{
char string[81];
printf( "\nDigite um string: " );
gets( string );
strupr( string ); /* Converte para maiusculo( FUNCAO NAO ANSI ! )
printf( "\nEm maiusculos: %s", string );

*/

strlwr( string ); /* Converte para minusculo( FUNCAO NAO ANSI ! )


printf( "\nEm minusculos: %s", string );

*/

sprintf( string, "%s %d + %d vale %d.", "Teste de sprintf: ", 2, 3, 2 + 3 );


printf( "\n%s", string );
strupr( string ); /* Converte para maiusculo( FUNCAO NAO ANSI ! )
printf( "\n%s", string );
system( "PAUSE" );
return 0;
}

*/

/*---------------------------------------------------------------------Exemplo de uso de funcoes de teste de caracteres.


----------------------------------------------------------------------*/
#include
#include
#include
#include

<ctype.h>
<string.h>
<stdio.h>
<stdlib.h>

/*
/*
/*
/*

Para o prototipo das funcoes de teste.


Para o prototipo das funcoes de strings.
Para o prototipo de printf() e scanf().
Biblioteca onde system() esta' definido.

*/
*/
*/
*/

int main()
{
int ch;
do
{
printf( "\n\nPressione uma tecla( Enter para terminar ): " );
ch = getche();
if( isalpha( ch ) )
printf( "\nE\' um caracter alfanumerico." );
if( isupper( ch ) )
printf( "\nE\' maiusculo." );
if( islower( ch ) )
printf( "\nE\' minusculo." );
if( isdigit( ch ) )
printf( "\nE\' um digito numerico." );
if( isxdigit( ch ) )
printf( "\nE\' um digito hexadecimal." );
if( isspace( ch ) )
printf( "\nE\' um separador." );
if( isalnum( ch ) )
printf( "\nE\' um caracter alfanumerico." );
if( ispunct( ch ) )
printf( "\nE\' um caracter de pontuacao." );
if( isprint( ch ) )
printf( "\nE\' um possivel de ser impresso." );
if( isgraph( ch ) )
printf( "\nE\' um caracter grafico." );
if( iscntrl( ch ) )
printf( "\nE\' um Ctrl." );
if( isascii( ch ) )
printf( "\nE\' um caracter ASCII." );
}
while( ch != '\r' );
system( "PAUSE" );
return 0;
}

/*---------------------------------------------------------------------Exemplo de uso de funcoes de conversao de strings.


----------------------------------------------------------------------*/

#include <stdio.h>
#include <stdlib.h>
main()
{
char
int
long
float

/* Para o prototipo de printf() e scanf().


/* Biblioteca onde system() esta' definido.

string[81];
i, j;
l;
f;

printf( "\nEntre com um numero long: " );


gets( string );
l = atol( string );
printf( "\nO valor digitado convertido para long e\' %ld.", l );
printf( "\nEntre com um numero float: " );
gets( string );
f = atof( string );
printf( "\nO valor digitado convertido para float e\' %f.", f );
printf( "\nEntre com um numero inteiro: " );
gets( string );
i = atoi( string );
printf( "\nO valor digitado convertido para inteiro e\' %d.", i );
for( j = 2; j <= 10; j++ )
{
itoa( i, string, j );
printf( "\n%d na base %d vale %s.", i, j, string );
}
system( "PAUSE" );
return 0;
}

*/
*/

Você também pode gostar