7

Click here to load reader

Exemplos registros e funções

Embed Size (px)

Citation preview

Page 1: Exemplos registros e funções

Exercício: Defina uma struct de um carro. Crie um modelo de carro, preencha seus dados e exiba eles através de uma função que recebe esse tipo de struct. Primeiro criamos a nossa struct, que será tipo CARRO, em seguida uma função que recebe um dado do tal tipo CARRO, que vamos chamar de ‘car’. Então, quando passamos uma struct do tipo CARRO para a função, ele é vista dentro da função como a struct de nome ‘car’, bastando acessar diretamente suas variáveis e exibi -las. Dentro da main(), criamos uma variável, ou struct do tipo CARRO, de nome ‘fusca’. A única coisa, talvez, diferente é a maneira com a qual inicializamos nossa struct: temos que preencher todos os termos da struct, na ordem. Veja como ficou nosso código C

#include <stdio.h>

typedef struct carro

{

char modelo[30];

float potenciaMotor;

int anoFabricacao,

numPortas;

}CARRO;

void Exibe(CARRO car)

{

printf("Modelo: %s\n", car.modelo);

printf("Motor: %.1f\n", car.potenciaMotor);

printf("Ano: %d\n", car.anoFabricacao);

printf("%d portas\n", car.numPortas);

}

int main(void)

{

CARRO fusca = {"Fuscao preto", 1.5, 74, 2};

Exibe(fusca);

return 0;

}

1. Escreva um aplicativo em C mostra todos os números ímpares de 1 até 100. Essa é bem simples. Basta percorrermos os números de 1 até 100, e fazer um teste condicional IF dentro do laço WHILE, para exibir somente aqueles números que são ímpares, ou seja, aqueles números que deixam resto 1 quando divididos por

#include <stdio.h>

int main()

{

int count = 1;

while(count <= 100)

{

if(count%2 == 1)

printf("%d ",count);

count++;

}

}

Escreva um aplicativo em C que recebe inteiro e mostra os números pares e ímpare s (separados, em duas colunas), de 1 até esse inteiro.

Page 2: Exemplos registros e funções

Como o primeiro número é ímpar (1), os ímpares serão exibidos primeiro. Após cada ímpar damos o espaço de um TAB (\t), e na mesma linha imprimimos o par, e logo em seguinte o caractere new line ( \n).

#include <stdio.h>

int main()

{

int num,

count = 1;

printf("Digite um numero: ");

scanf("%d", &num);

printf("IMPARES \tPARES\n");

while(count <= num)

{

if(count%2 == 1)

printf(" %d \t",count);

else

printf(" \t %d\n", count);

count++;

}

}

Escreva um programa que pergunte ao usuário quantos alunos tem na sala dele. Em seguida,

através de um laço while, pede ao usuário para que entre com as notas de todos os alunos da sala,

um por vez.

Por fim, o programa deve mostrar a média, aritmética, da turma.

Para resolver este exercício, vamos precisar de várias variáveis de apoio.

A variável 'total' vai receber o número total de alunos em uma sala.

A variável 'count' será a que vai mudar dentro do laço WHILE. E ela começa do primeiro aluno e termina

no último.

A cada iteração do laço while, pedimos uma nota, que é somada a variável do tipo float 'soma'. A média

aritmética é dada por essa soma (de todas as notas), dividida pelo número de alunos na sala.

Assim, nosso programa em C fica:

#include <stdio.h>

int main()

{

int total,

count = 1;

float nota,

soma=0.0;

printf("Numero de alunos na sala: ");

scanf("%d",&total);

while(count <= total)

{

printf("Nota do aluno %d: ",count);

scanf("%f",&nota);

soma = soma + nota;

count++;

}

printf("Media da turma: %.2f", soma/total);

}

Page 3: Exemplos registros e funções

Achar o maior, menor, média e organizar números ou seqüências são os algoritmos mais

importantes e estudados em Computação. Em C não poderia ser diferente.

Em nosso curso, obviamente, também não será diferente.

Escreva um programa em C que solicita 10 números ao usuário, através de um laço while, e

ao final

mostre qual destes números é o maior.

Vamos usar a nossa velha e conhecida variável 'count' pra contar de 1 até 10 no laço while.

Inicialmente, também, criamos a variável 'maior', que irá armazenar o maior número.

Inicializamos ela com valor 0. A cada iteração do laço while pedimos um número ao usuário, e

armazenamos sempre na variável 'num'.

Em seguida fazemos uma comparação com o teste condicional IF ELSE para saber se esse

número digitado é maior que o 'maior'. Se for, é porque esse número é o maior que já foi

digitado, então fazemos com a variável 'maior' receba o valor desse 'num'.

Caso o 'num' não seja maior que 'maior', nada acontece e 'maior' continua armazenando o

maior número. Veja como ficou nossa solução em C:

#include <stdio.h>

int main()

{

int maior=0,

num,

count=1;

while (count <= 10)

{

printf("Digite o numero %d: ", count);

scanf("%d", &num);

if( num > maior)

maior=num;

count++;

}

printf("Maior: %d", maior);

}

Escreva um programa que lê o tamanho do lado de um quadrado e imprime um quadrado

daquele tamanho com asteriscos. Seu programa deve funcionar para quadrados com lados

de todos os tamanhos entre 1 e 20.

Por exemplo, para lado igual a 5:

Note que sempre existirão 'lado * lado' asteriscos. Vamos usar o while para imprimir todos os

'lado*lado' asteriscos.

Note também que a cada 'lado' asteriscos, ocorre uma quebra da linha.

No exemplo do lado=5: quando chegamos no asterisco de número 5, não imprimimos somente

'*', mas '*\n'

O mesmo para o asterisco de número 10, pro de número 15, ...e pro de número 20

Ou seja, após o asterisco múltiplo de 5 ser impresso na tela, devemos colocar uma quebra da

linha.

Como chamamos números que são múltiplos de 'lado'? Ora, pelo módulo (ou resto da divisão)

Page 4: Exemplos registros e funções

#include <stdio.h>

int main()

{

int lado,

count=1;

printf("Lado do quadrado: ");

scanf("%d", &lado);

while( count <= lado*lado)

{

if(count % lado == 0)

printf("*\n");

else

printf("*");

count++;

}

}

Lendo e Escrevendo Strings em C

Exemplo: Programa que pede o nome e sobrenome em C Crie um aplicativo em C que peça ao usuário seu nome, armazene em uma String, peça o sobrenome, armazene em outra string e exiba o nome do usuário de maneira formal ( Sobrenome, Nome).

#include <stdio.h>

// Curso C Progressivo: www.cprogessivo.net

// O melhor curso de C! Online e gratuito !

// Apostila online, tutorial completo sobre

// a linguagem de programação C !

int main()

{

char nome[21], sobrenome[21];

printf("Primeiro nome: ");

scanf("%s", nome);

printf("Ultimo sobrenome: ");

scanf("%s", sobrenome);

printf("Ola senhor %s, %s. Bem-vindo ao curso C Progressivo.\n",

sobrenome, nome);

return 0;

}

Exemplo de código: Programa em C que pede os dados cadastrais completos Crie um aplicativo em C que peça o nome do usuário, sua idade e data de nascimento.

#include <stdio.h>

// Curso C Progressivo: www.cprogessivo.net

// O melhor curso de C! Online e gratuito !

// Apostila online, tutorial completo sobre

// a linguagem de programação C !

int main(void)

{

char nome[31], sobrenome[31], nascimento[11];

int idade;

printf("Nome: ");

Page 5: Exemplos registros e funções

gets(nome);

printf("Sobrenome: ");

gets(sobrenome);

printf("Idade: ");

scanf("%d", &idade);

fflush(stdin);

printf("Data de nascimento: ");

gets(nascimento);

printf("\nNome completo: %s %s\n", nome, sobrenome);

printf("Idade: %d\n", idade);

printf("Data de nascimento: "); puts(nascimento);

return 0;

}

Funções Questão 0, 1, 2 e 3:

Programa que calculas raízes de equação do segundo grau, até as complexas, em C

As questões 0, 1, 2 e 3 vão ensinar você a construir, passo a passo, um programa que recebe os coeficientes de uma equação do 2º grau, e devolver as raízes dele. #include <stdio.h>

#include <math.h>

int positivo(float n);

int nulo(float n);

float delta(float a, float b, float c);

int main()

{

float a, b, c,

raiz1, raiz2;

int continuar;

do

{

system("cls || clear");

printf("Programa que acha as raizes de uma equacao do 2o grau:

ax^2 + bx + c = 0\n\n");

printf("Entre com os coeficientes a, b, e c: ");

scanf("%f", &a);

scanf("%f", &b);

scanf("%f", &c);

if( nulo(a))

printf("'a' deve ser diferente de zero.");

else

{

//Se delta for maior ou igual a zero, as raizes sao reais

if( positivo( delta(a,b,c) ) || nulo( delta(a,b,c) ) )

{

raiz1 = ( (-1)*b + sqrt(delta(a,b,c)) )/(2*a);

raiz2 = ( (-1)*b - sqrt(delta(a,b,c)) )/(2*a);

printf("Raiz 1: %.2f\nRaiz 2: %.2f", raiz1, raiz2);

}

else

{

//Precisamos exibir a parte real e a parte imaginária

separadamente

//raiz 1

Page 6: Exemplos registros e funções

printf("%.2f + i.%.2f\n", (-1)*b/(2*a),

sqrt((-1)*delta(a,b,c))/(2*a) );

//raiz 2

printf("%.2f - i.%.2f\n", (-1)*b/(2*a),

sqrt((-1)*delta(a,b,c))/(2*a) );

}

}

printf("\n\nCalcular mais raizes?\n1. Continuar\n0. Sair\n");

scanf("%d", &continuar);

}

while(continuar);

}

int positivo(float n)

{

if(n > 0)

return 1;

else

return 0;

}

int nulo(float n)

{

if(n == 0)

return 1;

else

return 0;

}

float delta(float a, float b, float c)

{

return ((b*b) - (4*a*c));

}

Crie uma função em linguagem C que receba 2 números e retorne o maior valor.

float maior2(float num1, float num2)

{

if(num1 >= num2)

return num1;

else

return num2;

}

Crie uma função em linguagem C que receba 2 números e retorne o menor valor.

float menor2()2(float num1, float num2)

{

if(num1 <= num2)

return num1;

else

return num2;

}

Page 7: Exemplos registros e funções

Crie uma função em linguagem C que receba 3 números e retorne o maior valor, use a função da questão 4. float maior3(float num1, float num2, float num3)

{

if( maior2(num1, num2) >= num3)

return (maior2(num1, num2));

else

return num3;

}

Crie uma função em linguagem C que receba 3 números e retorne o menor valor, use a função da questão 5. float menor3(float num1, float num2, float num3)

{

if( menor2(num1, num2) <= num3)

return (menor2(num1, num2));

else

return num3;

}