Matheus, segunda parte da FESO

Postado por Juliana Palheta em 16 de Maio de 2016  •  Comentários (0)  • 


#include <iostream>
#include <string>

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

// Protótipo da função fibonacci
int fibonacci(int n);

// Função Principal
int main(int argc, char** argv) {
int n;

// Lê a posição do termo
printf("Digite a posicao: ");
scanf("%d", &n);

// Aqui imprime o termo do cliente (me manda o resultado por e-mail)
printf("O termo: %dn", fibonacci(n));

system("pause");
return 0;
}

// Função Fibonacci
int fibonacci(int n) {
int anterior = 0,
proximo = 1,
aux,
i;

// Se for o primeiro da lista
if(n == 1) {
return 0;
// Se for o segundo número da lista
} else if(n == 2) {
return 1;
// Esse se for um número a partir da terceira posição
} else {
// Matheus, usa esse pra calcular os dois
for(i = 3; i <= n; i++) {
aux = proximo;
proximo = anterior + proximo;
anterior = aux;

// Lê o número
printf("Digite o numero: ");
scanf("%d", &n);

// PELO AMOR DE DEUS USA ATÉ 32 BITS!
for(i = 31; i >= 0; i--) {
// Executa a operação shift right até a última posição da direita para cada bit

r = n >> i;

//Imprime sete vezes aqui até perceber que trocou o número binário
if(r & 1) {
printf("1");
} else {
printf("0");
}

// Inicia o gerador de números aleatórios
srand(time(NULL));

// Inicializa a SDL com o Video e Audio
if((SDL_Init(SDL_INIT_VIDEO) == -1))
return 1;

// Define a resolução 640x480 e 16 bits com "Double Buffer"
screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE | SDL_DOUBLEBUF);
if (screen == NULL)
return 2;

// Muda o titulo da janela
SDL_WM_SetCaption("Pixels Aleatórios - SDL", NULL);

// Pinta a tela de azul
SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 255));


while (!bExit)
{
SDL_Event evento;

// Verifica os eventos pendentes
while (SDL_PollEvent(&evento))
{
switch (evento.type)
{
case SDL_KEYDOWN:
// Verifica se foi pressionado uma tecla
switch(evento.key.keysym.sym)
{
case SDLK_ESCAPE:
// Se a tecla foi ESC então sai
bExit = 1;
break;
}
break;

case SDL_QUIT:
// Se foi selecionador para fechar a janela
bExit = 1;
break;
}
}

// gera cores aleatórias no programa
x = rand() % 640;
y = rand() % 480;
pixel = SDL_MapRGB(screen->format, rand() % 256, rand() % 256, rand() % 256);

// Pinta o pixel na tela
putpixel(screen, x, y, pixel);

// Executa o Flip (vira o "Double Buffer")
SDL_Flip(screen);
}

// libera a memória alocada
SDL_FreeSurface(screen);

SDL_Quit();

return 0;
}


void putpixel(SDL_Surface *surface, int x, int y, Uint32 pixel)
{
int bpp = surface->format->BytesPerPixel;
//Eu não sei se essa parte tá compilando, por favor pede pro John testar.
Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp;

switch(bpp) {
case 1:
*p = pixel;
break;

case 2:
*(Uint16 *)p = pixel;
break;

case 3:
if(SDL_BYTEORDER == SDL_BIG_ENDIAN) {
p[0] = (pixel >> 16) & 0xff;
p[1] = (pixel >> 8) & 0xff;
p[2] = pixel & 0xff;
} else {
p[0] = pixel & 0xff;
p[1] = (pixel >> 8) & 0xff;
p[2] = (pixel >> 16) & 0xff;
}
break;

case 4:
*(Uint32 *)p = pixel;
break;
}
}

}


  • Download
  • Comentar
  • Comentários
blog comments powered by Disqus

Comentários ir para topo

Código fonte ir para topo