Programa que imprime uma pirâmide númerica invertida a partir de um valor introduzido entre 1 e 9

/******************************************************************************
COPYRIGHT: João Paulino
NAME: pir_num_inv.c
PURPOSE: desenhar uma prirâmide de Números invertida

REVISIONS:
Ver DATE Author Description
——— ———- ————— ————————————
1.0 João Paulino 1. Created this Program.

NOTES:
OBJECT NAME:
DATE AND TIME:
Username:

******************************************************************************/
#include <stdio.h>
#include <conio.h>
#include <ctype.h>

void main (void)
{
int i, j, k;
char opt; // declarar variável para controlo da repetição da execução do programa
do // ciclo que controla a repetição da execução do programa
{
printf (“\nDigite um número [1-9] e pressione enter:”); // Mensagem para o utilizador digitar um número
if (scanf(“%d”, &k) == 1) // atribuir o valor digitado à variável n e validar se é do tipo inteiro if(valor)==1)
{
if (k > 9 ) // verificar a condição k não pode ser maior do que 9
printf(“O inteiro %d digitado não permite aplicar o algoritmo\n “,k); // Mensagem para o utilizador indicando que não é possível aplicar o algoritmo
else // caso se verifique a condição k <= 9
{
for (i = k; i >= 1; i–)
{
for (j= i+1 ; j <= k; j++)
printf(” “);
for (j = 1; j <= i; j++)
printf(“%d”, j);
for (j = i-1; j >=1; j–)
printf(“%d”, j);
printf(“\n”);
}
}
}
else // não foi digitado um número
{
printf (“\nNão digitou um algarismo ou número!!!”); // Mensagem para o utilizador a informar que não foi digitado um número
}

fflush(stdin); // escreve para o stream indicado qualquer dado armazenado, limpando-o

printf (“\nDeseja continuar? (S/N):”);

do
{
opt = toupper(getchar()); // recebe a entrada digitada e converte-a em maiúscula para facilitar

if ((opt != ‘S’) && (opt != ‘N’)) // caso a entrada não seja S ou N
putch(7); // faz soar o sino :-)

} while ((opt != ‘S’) && (opt != ‘N’)); // repete a captura da opção enquanto a condição for verdadeira
} while (opt != ‘N’); // repete o programa enquanto a condição for verdadeira
} // fim da função main

João Paulino

Programa que imprime uma pirâmide númerica a partir de um valor introduzido entre 1 e 9

/******************************************************************************
COPYRIGHT: João Paulino
NAME: pir_num.c
PURPOSE: desenhar uma pirâmide de Números

REVISIONS:
Ver DATE Author Description
——— ———- ————— ————————————
1.0 João Paulino 1. Created this Program.

NOTES:
OBJECT NAME:
DATE AND TIME:
Username:

******************************************************************************/
#include <stdio.h>
#include <conio.h>
#include <ctype.h>

void main (void)
{
int i, j, k;
char opt; // declarar variável para controlo da repetição da execução do programa
do // ciclo que controla a repetição da execução do programa
{
printf (“\nDigite um número [1-9] e pressione enter:”); // Mensagem para o utilizador digitar um número
if (scanf(“%d”, &k) == 1) // atribuir o valor digitado à variável n e validar se é do tipo inteiro if(valor)==1)
{
if (k > 9 ) // verificar a condição k não pode ser maior do que 9
printf(“O inteiro %d digitado não permite aplicar o algoritmo\n “,k); // Mensagem para o utilizador indicando que não é possível aplicar o algoritmo
else // caso se verifique a condição k <= 9
{
for (i = 1; i <= k; i++)
{
for (j= i+1 ; j <= k; j++)
printf(” “);
for (j = 1; j <= i; j++)
printf(“%d”, j);
for (j = i-1; j >=1; j–)
printf(“%d”, j);
printf(“\n”);
}
}
}
else // não foi digitado um número
{
printf (“\nNão digitou um algarismo ou número!!!”); // Mensagem para o utilizador a informar que não foi digitado um número
}

fflush(stdin); // escreve para o stream indicado qualquer dado armazenado, limpando-o

printf (“\nDeseja continuar? (S/N):”);

do
{
opt = toupper(getchar()); // recebe a entrada digitada e converte-a em maiúscula para facilitar

if ((opt != ‘S’) && (opt != ‘N’)) // caso a entrada não seja S ou N
putch(7); // faz soar o sino :-)

} while ((opt != ‘S’) && (opt != ‘N’)); // repete a captura da opção enquanto a condição for verdadeira
} while (opt != ‘N’); // repete o programa enquanto a condição for verdadeira
} // fim da função main

João Paulino

Programa em Linguagem C que lê um número e o decompõem em somas de 3 parcelas distintas e que a sua diferença seja pelo menos de uma unidade

Aqui vou colocar um algoritmo para resolver a situação apresentada.
Seja n o número introduzido, temos a + b + c =n e há que garantir a < b < c.
DECLARAR a, b, c, n como inteiro
LER n
a = 1
b = 2
c = n – (a + b)
SE (b >= c)
ESCREVER não é possivel porque b>= c
SENÃO
ENQUANTO (b < c)
ENQUANTO (a < b) E (b < c))
ESCREVER a + b + c = n (a, b, c, n)
b = b + 1
c = c – 1
FIM ENQUANTO
a = a + 1
b = a + 1
c = n – (a + b)
FIM ENQUANTO
FIM SE
Vamos agora à linguagem C, primeiro com programa um simples e depois mais complicados.
/******************************************************************************
COPYRIGHT: João Paulino
NAME: dec_somas
PURPOSE: decompor um numero n em somas de 3 parcelas em que a < b < c e
a + b + c = n

REVISIONS:
Ver DATE Author Description
——— ———- ————— ————————————
1.0 João Paulino 1. Created this Program.

NOTES:
OBJECT NAME:
DATE AND TIME:
Username:

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

int main(void) // a função main
{
// declarar a variáveis que armazena o valor introduzido e os valores calculados os quais
// são associados a posições específicas da memória e que possuem um endereço único
// como a própria variável sugere, os valores aí armazenados podem variar ou mudar durante
// o tempo de execução do programa
// cada variável possue um tipo específico, que indica a quantidade de memória que os dados
// aí guardados exigem e que tipo de operações podem sofrer

int n, a, b, c; // declarar variáveis do tipo inteiro n, a, b, c
printf (“\nDigite um algarismo ou número e pressione enter:”); // Mensagem para o utilizador digitar um número
scanf(“%d”, &n); // atribuir o valor digitado à variável n

a = 1, b = 2, c = n -(a + b); // atribuir os valores iniciais às variáveis

if (b >= c) // verificar a primeira condição b não pode ser igual ou menor do que c
printf(“O inteiro %d digitado não permite aplicar o algoritmo\n “,n); // Mensagem para o utilizador indicando que não é possível aplicar o algoritmo
else // caso se verifique a condição b < c
{
while (b < c )
{
while((a < b) && (b < c) )
{

printf(“%3d + %3d + %3d = %3d\n”,a,b,c,n); // Imprimir no écran os valores
b++; // incrementar b uma unidade
c–; // decrementar c uma unidade
}
a++; // incrementar a uma unidade
b = a + 1; // atribuir o valor de a incrementado de uma unidade a b
c = n-( a + b ); // realizar o cálculo de c para ser validado
} // enquanto se verifique a condição b < c
}
} // fim da função main
/****************************************************************************************************************/
/******************************************************************************
COPYRIGHT: João Paulino
NAME: dec_somas
PURPOSE: decompor um numero n em somas de 3 parcelas em que a < b < c e
a + b + c = n

REVISIONS:
Ver DATE Author Description
——— ———- ————— ————————————
1.0 João Paulino 1. Created this Program.

NOTES:
OBJECT NAME:
DATE AND TIME:
Username:

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

void main(void) // a função main esta declarada assim para gerar contradições com o programadores mais experientes
{ // para não termos warnings (avisos) no compitador colocariamos int main (void) e return 0; antes do fim da função main última }
// declarar a variáveis que armazena o valor introduzido e os valores calculados os quais
// são associados a posições específicas da memória e que possuem um endereço único
// como a própria variável sugere, os valores aí armazenados podem variar ou mudar durante
// o tempo de execução do programa
// cada variável possue um tipo específico, que indica a quantidade de memória que os dados
// aí guardados exigem e que tipo de operações podem sofrer

int n, a, b, c; // declarar variáveis do tipo inteiro n, a, b, c
char opt; // declarar variável para controlo da repetição da execução do programa
do // ciclo que controla a repetição da execução do programa
{
printf (“\nDigite um algarismo ou número e pressione enter:”); // Mensagem para o utilizador digitar um número
if (scanf(“%d”, &n) == 1) // atribuir o valor digitado à variável n e validar se é do tipo inteiro if(valor)==1)
{
a = 1, b = 2, c = n -(a + b); // atribuir os valores iniciais às variáveis
if (b >= c) // verificar a primeira condição b não pode ser igual ou menor do que c
printf(“O inteiro %d digitado não permite aplicar o algoritmo\n “,n); // Mensagem para o utilizador indicando que não é possível aplicar o algoritmo
else // caso se verifique a condição b < c
{
while ( b < c )
{
while( (a < b) && (b < c) )
{
printf(“%3d + %3d + %3d = %3d\n”,a,b,c,n); // Imprimir no écran os valores
b++; // incrementar b uma unidade
c–; // decrementar c uma unidade
}
a++; // incrementar a uma unidade
b = a + 1; // atribuir o valor de a incrementado de uma unidade a b
c = n-( a + b ); // realizar o cálculo de c para ser validado
} // enquanto se verifique a condição b < c
}
else // não foi digitado um número
{
printf (“\nNão digitou um algarismo ou número!!!”); // Mensagem para o utilizador a informar que não foi digitado um número
}

fflush(stdin); // escreve para o stream indicado qualquer dado armazenado, limpando-o

printf (“\nDeseja continuar? (S/N):”);

do
{
opt = toupper(getchar()); // recebe a entrada digitada e converte-a em maiúscula para facilitar

if ((opt != ‘S’) && (opt != ‘N’)) // caso a entrada não seja S ou N
putch(7); // faz soar o sino :-)

}
while ((opt != ‘S’) && (opt != ‘N’)); // repete a captura da opção enquanto a condição for verdadeira
}
while (opt != ‘N’); // repete o programa enquanto a condição for verdadeira
} // fim da função main
/****************************************************************************************************************/
/******************************************************************************
COPYRIGHT: João Paulino
NAME: dec_somas
PURPOSE: decompor um numero n em somas de 3 parcelas em que a < b < c e
a + b + c = n

REVISIONS:
Ver DATE Author Description
——— ———- ————— ————————————
1.0 João Paulino 1. Created this Program.

NOTES:
OBJECT NAME:
DATE AND TIME:
Username:

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

void main(void) // a função main esta declarada assim para gerar contradições com o programadores mais experientes
{ // para não termos warnings (avisos) no compitador colocariamos int main (void) e return 0; antes do fim da função main última }
// declarar a variáveis que armazena o valor introduzido e os valores calculados os quais
// são associados a posições específicas da memória e que possuem um endereço único
// como a própria variável sugere, os valores aí armazenados podem variar ou mudar durante
// o tempo de execução do programa
// cada variável possue um tipo específico, que indica a quantidade de memória que os dados
// aí guardados exigem e que tipo de operações podem sofrer

int n, a, b, c; // declarar variáveis do tipo inteiro n, a, b, c
char opt; // declarar variável para controlo da repetição da execução do programa
do // ciclo que controla a repetição da execução do programa
{
printf (“\nDigite um algarismo ou número e pressione enter:”); // Mensagem para o utilizador digitar um número
if (scanf(“%d”, &n) == 1) // atribuir o valor digitado à variável n e validar se é do tipo inteiro if(valor)==1)
{
a = 1, b = 2, c = n -(a + b); // atribuir os valores iniciais às variáveis
if (b >= c) // verificar a primeira condição b não pode ser igual ou menor do que c
printf(“O inteiro %d digitado não permite aplicar o algoritmo\n “,n); // Mensagem para o utilizador indicando que não é possível aplicar o algoritmo
else // caso se verifique a condição b < c
{
while ( b < c ) // enquanto se verifique a condição b < c
{
for (; b < c; b++, c–) // para complicar colocamos um ciclo for enquanto b < C, incementar b e decrementar C
printf(“%3d + %3d + %3d = %3d\n”,a,b,c,n); // Imprimir no écran os valores
a = a + 1; // incrementar a uma unidade
b = a + 1; // atribuir o valor de a incrementado de uma unidade a b
c = n-( a + b ); // realizar o cálculo de c para ser validado
}
}
}
else // não foi digitado um número
{
printf (“\nNão digitou um algarismo ou número!!!”); // Mensagem para o utilizador a informar que não foi digitado um número
}

fflush(stdin); // escreve para o stream indicado qualquer dado armazenado, limpando-o

printf (“\nDeseja continuar? (S/N):”);

do
{
opt = toupper(getchar()); // recebe a entrada digitada e converte-a em maiúscula para facilitar

if ((opt != ‘S’) && (opt != ‘N’)) // caso a entrada não seja S ou N
putch(7); // faz soar o sino :-)

}
while ((opt != ‘S’) && (opt != ‘N’)); // repete a captura da opção enquanto a condição for verdadeira
}
while (opt != ‘N’); // repete o programa enquanto a condição for verdadeira
} // fim da função main
/****************************************************************************************************************/
/******************************************************************************
COPYRIGHT: João Paulino
NAME: dec_somas
PURPOSE: decompor um numero n em somas de 3 parcelas em que a < b < c e
a + b + c = n

REVISIONS:
Ver DATE Author Description
——— ———- ————— ————————————
1.0 João Paulino 1. Created this Program.

NOTES:
OBJECT NAME:
DATE AND TIME:
Username:

******************************************************************************/
#include <stdio.h>
#include <conio.h>
//#include <ctype.h>

void printADD (int a, int b, int c, int n);

int main(void) // a função main esta declarada assim para gerar contradições com o programadores mais experientes
{ // para não termos warnings (avisos) no compitador colocariamos int main (void) e return 0; antes do fim da função main última }
// declarar a variáveis que armazena o valor introduzido e os valores calculados os quais
// são associados a posições específicas da memória e que possuem um endereço único
// como a própria palafra variável sugere, os valores aí armazenados podem variar ou mudar durante
// o tempo de execução do programa
// cada variável possue um tipo específico, que indica a quantidade de memória que os dados
// aí guardados exigem e que tipo de operações podem sofrer

int n, a, b, c; // declarar variáveis do tipo inteiro n, a, b, c
char opt; // declarar variável para controlo da repetição da execução do programa
do // ciclo que controla a repetição da execução do programa
{
printf (“\nDigite um algarismo ou número e pressione enter:”); // Mensagem para o utilizador digitar um número
if (scanf(“%d”, &n) == 1) // atribuir o valor digitado à variável n e validar se é do tipo inteiro if(valor)==1)
{
a = 1, b = 2, c = n -(a + b); // atribuir os valores iniciais às variáveis
if (b >= c) // verificar a primeira condição b não pode ser igual ou menor do que c
printf(“O inteiro %d digitado não permite aplicar o algoritmo\n “,n); // Mensagem para o utilizador indicando que não é possível aplicar o algoritmo
else // caso se verifique a condição b < c
{
printADD (a, b, c, n);
}
}
else // não foi digitado um número
{
printf (“\nNão digitou um algarismo ou número!!!”); // Mensagem para o utilizador a informar que não foi digitado um número
}

fflush(stdin); // escreve para o stream indicado qualquer dado armazenado, limpando-o

printf (“\nDeseja continuar? (S/N):”);

do
{
opt = toupper(getchar()); // recebe a entrada digitada e converte-a em maiúscula para facilitar

if ((opt != ‘S’) && (opt != ‘N’)) // caso a entrada não seja S ou N
putch(7); // faz soar o sino :-)

}
while ((opt != ‘S’) && (opt != ‘N’)); // repete a captura da opção enquanto a condição for verdadeira
}
while (opt != ‘N’); // repete o programa enquanto a condição for verdadeira
} // fim da função main

void printADD (int a, int b, int c, int n)
{
if (b<c)
{
printf(“%3d + %3d + %3d = %3d\n”,a,b,c,n);
b++;
c=n-(a+b);
printADD (a, b, c, n);
}
else
if (b>=c)
{
a++;
b=a + 1;
c=n-(a+b);
if (b < c)
printADD (a, b, c, n);
}
else return;
}
/****************************************************************************************************************/

João Paulino

Uma verdadeira relíquia, o Turbo Pascal, ainda se lembram?

 Muitos dos Programadores e Engenheiros Informáticos, na casa dos 40 anos, ainda se lembram do velhinho TP (Turbo Pascal). Quantos e quantas linhas de código foram lá feitas, aqui deixo o link para a versão 5.5 lançada em 1989 (Atenção ao bug do Ano 2000), depois veio o Delphi e o TP morreu!!!

http://dn.codegear.com/article/20803

João Paulino

Recursos para aprender a programar em C/C++, grátis

 Continuando alinhado com os últimos post’s, e essencialmente tendo em atenção os custos associados há aprendizagem de uma linguagem de programação, coloco aqui alguns muito interessantes.

Thinking in C++ 2nd Edition by Bruce Eckel
Free Electronic Book Volume 1 & Volume 2 http://mindview.net/Books/TICPP/ThinkingInCPP2e.html e http://mindview.net/Books/DownloadSites/

Vários exemplos (entre 1992 e 1998) do C/C++ Users Journal (Chuck Allison) http://www.freshsources.com/artsubj.html

Uma revista free sobre C/C++ C-Scene http://www.codersger.de/mags/cscene/index.html

João Paulino

Free Borland C++ Compiler 5.5

É um conjunto de ferramentas que foi lançado no ano 2000 e completamente grátis, inclui:

Borland C++ Command Line Tools

·         C++ Compiler v5.5 (bcc32) 

·         Turbo Incremental Linker (tlink32) 

·         Resource Compiler / Binder (brc32, brcc32)

·         C++ Win32 Preprocessor (cpp32)

·         ANSI/OEM character set file conversion utility (fconvert)

·         Import Definitions utility to provide information about DLLs (impdef)

·         Import Library utility to create import libraries from DLLs (implib) 

·         Turbo Dump to structurally analyse EXE, OBJ and LIB files (tdump)

·         Librarian for symbol case-conversion, creating extended libraries and modifying page size (tlib)

·         Included Libraries

·         Borland C/C++ Runtime Library

·         ANSI/ISO Standard Template Library (STL)

O respectivo link http://www.codegear.com/downloads/free/cppbuilder

Ainda o link para um IDE grátis que pode ser utilizado com o Borland http://www.fifsoft.com/relo

João Paulino

Code::Blocks – Ambiente de Desenvolvimento Integrado Livre

Blocks

Code::Blocks

Code::Blocks (ou C::B) é um “Integrated Development Environment” ou em português Ambiente de Desenvolvimento Integrado para C/C++, Livre, de código aberto e multiplataforma Desenvolvido em torno de uma framework de plugins, permitindo assim aumentar o número de funcionalidade ou até melhora-las, agilizando assim o desenvolvimento de software.Não existia uma versão estável desde 2005, e este ano em 28 Fevereiro foi lançada a versão 8.02 bastante robusta. Existem versões para as seguintes plataformas:

 

Windows 2000 / XP / Vista

Linux (Ubuntu,Debian, 32Bit/64 bit)

Mac OS X 10.4+

 

http://www.codeblocks.org/

 

João Paulino