Enviar um café pro programador

Pode me ajudar a transformar cafeína em código?

Contato

É importante para nós receber o feedback dos leitores!

Deixem suas dúvidas, elogios, críticas, o que está faltando, erratas, sugestão de aulas, etc:
http://progressiva.forumeiros.com/

Para demais assuntos: jarlisson.moreira [a] gmail . com

Para referências bibliográficas: Moreira de Matos, Francisco Jarlisson
Fortaleza, Ceara - Brasil

Temos também um grupo no Facebook:
Programação Progressiva

38 comentários:

luizcarloscorreia disse...

obligado pelo trabalho...
foi um dos melhores que já vi...
espero um dia poder fazer um..
trabalho desse...beijos por enquanto...

Thiago Furlan disse...

Parabéns, baita trabalho!

Luan Cardoso disse...

Na pagina "Soluções das questões sobre o laço FOR", no exercicio "6.", o código não será efetivo caso o terceiro número a ser digitado seja maior que o segundo e menor que o primeiro. Nesse caso o segundo maior não será efetivamente o segundo maior.
Eu construi o código desta maneira e funcionou:

#include "stdio.h"

int main()
{
int maior,
segundo_maior,
num,
count;

for(count=1, maior=0, segundo_maior=0 ; count<=9 ; count++)
{
printf("Digite o numero %d: ", count);
scanf("%d", &num);

if(num > maior)
{
maior = num;
}
else
if(num>segundo_maior&&num<maior)
{
segundo_maior=num;
}
}

printf("Maior: %d\n", maior);
printf("Segundo maior: %d\n", segundo_maior);
}


Att.,

Apostila C Progressivo disse...

Opa, valeu Luan. Realmente tava incompleto o código, vou alterar lá e corrigir outras coisas também.

Lembrando que, no seu código, se 'num > maior', você altera só o valor de 'maior', mas tem que alterar o de 'segundo_maior' também. E você está contando só de 1 até 9

Na nossa solução, estávamos alterando só no caso de 'num>maior'.
Mas também tem o caso 'num > segundo_maior'.

Isso pode ser resolvido com:
if(num > maior)
{
segundo_maior = maior;
maior = num;
}
else
if(num > segundo_maior)
segundo_maior = num;

Outro problema: note que estamos começando 'maior' e 'segundo_maior' com valor 0. Ou seja, podemos ter problemas se digitarmos valores negativos (na questão não diz que é pra colocar só positivos).

Luan Cardoso disse...

Muito obrigado pela dica.

Tenho outra dpuvida, na apostila de "DO...WHILE", quando executo os programas que contem " system("cls || clear"); ", aparece a mensagem " error: 'system' was not declared in this scope "

O que devo fazer?

Apostila C Progressivo disse...

Luan,

Além da stdio, adicione a stdlib também

Anônimo disse...

Gostaria que vocês postassem sobre o algoritmo de dijkstra em C.

@guipolonca disse...

Parabéns, o site é excelente e me ajudou muito!

Anônimo disse...

muito fera o site! Parabéns à equipe e muito obrigado por compartilhar conhecimento!

Anônimo disse...

Gostaria de contribuir com o site com
conteúdos, como posso fazer para ajudar ?

Ralph Albert Sommer disse...

Olá,
o tutorial de c está muito bom. Apenas no capítulo de modificadores de int está escrito: 'short' em inglês, significa curso e 'long', longo.

deveria ser:'short' em inglês, significa curto

valeu pela apostila online.
um abraço.

Apostila C Progressivo disse...

Opa, valeu ralph!

O corretor não avisou pois existe a palavra 'curso'.

Abraço.

hubert disse...

poderia me explicar esse exercício de função:

Desenvolva um programa em C que leia dois números e chame uma função que retorne
se os valores digitados são iguais ou diferentes. O programa deve ficar em execução até ser
digitado um valor negativo para o primeiro número.

hubert2@bol.com.br

Apostila C Progressivo disse...

Olá hubert,

Crie um programa que peça dois números. Passe esses números para a função.

Dentro da função você compara, se forem iguais, você retorna 1, se forem diferentes retorna 0 (um simples IF ELSE).

Você bota esse processo de perguntar os números e enviar pra função dentro de um laço, um WHILE por exemplo. Esse laço só vai terminar se o primeiro número digitado for negativo.

Carlos Augusto disse...

Olá Bom dia!

Gostaria de saber como faço para imprimir a saida de mais de um while, por exemplo:

int N, CONTADOR;
printf ("Digite um numero inteiro:");
scanf ("%i", &N);
CONTADOR=1;

printf("SOMA\n");
while(CONTADOR<=10)
{
printf("%i + %i = %i\n", N, CONTADOR, N+CONTADOR);
CONTADOR=CONTADOR+1;
}

printf("SUBTRACAO\n");
while(CONTADOR<=10)
{
printf("%i - %i = %i\n", N, CONTADOR, N-CONTADOR);
CONTADOR=CONTADOR+1;
}

return 0;
}

Imprime somente a saida do 1º while, depois a palavra SUBTRAÇÃO. Mas a saida do 2º while nao imprime.
Obrigado!
Carlos.

Apostila C Progressivo disse...

Carlos Augusto,

Note que ao término de seu primeiro laço a variável CONTADOR vai ter valor 11.

E pra ela iniciar o segundo ela, tem que ter valor menor que 10, é por isso que o segundo laço nem inicia.

Antes do segundo WHILE faça: CONTADOR=1

hubert disse...

muito obrigado pela a ajuda consegui montar a parte de comparação sem a função mas não sei colocar dentro da função poderia me ajudar.

Desenvolva um programa em C que leia dois números e chame uma função que retorne
se os valores digitados são iguais ou diferentes. O programa deve ficar em execução até ser
digitado um valor negativo para o primeiro número.


#include
#include

main()
{
int n1, n2;
printf("Digite o primeiro numero");
scanf("%d",&n1);

printf("Digite o segundo numero");
scanf("%d",&n2);

if (n1 > n2)
printf("O primeiro numero e o maior %d",n1);

if (n1 < n2)
printf("O segundo numero e o maior %d",n2);

system("pause");
}

Unknown disse...

Boas sou um recente fá seu e do seu trabalho.

Sou um estudante e este site esta a ajudar imenso.

Gostava no entanto de saber se há alguma parte referente as variáveis estáticas é que não encontro, e é onde tenho mais dificuldades.

obrigado, cumprimentos

Marcelo Vieira disse...

Cara primeiro parabéns pelo site, estou estudando C e em Conceitos Básicos da Linguagem C, Recebendo números do usuário - A função scanf : no final existe um exercício, o mesmo solicita que se faça uma divisão de dois números Double, depois de muito quebrar a cabeça busquei na internet a solução vale a pena postar, talvez alguem tenha dado este erro no scanf colocar "%lf" ao invés de "%f". valeu.

Unknown disse...

ME AJUDEM?
" Sejam duas listas encadeadas l1 e l2 ordenadas. Escreva uma função que construa uma lista ordenada contendo os elementos que pertencem simultaneamente a l1 e l2. Suponha que as listas não contém elementos repetidos. As listas originais não podem ser alteradas. A assinatura desta função é dada por:

Tlista* insercao(Tlista* l1, Tlista* l2) "

Marcel Carvalho disse...

Muito boa apostila, realmente é difícil encontrar conteúdo em C tão bem explicado gratuitamente.

Mas acho que o formulário de inserção de comentários deveria ser incorporado a postagem e não em uma nova janela como está.

Anônimo disse...

tentei comentar usando a minha conta do google,mas foi pedida uma palavra-chave. Que palavra chave é essa?

Anônimo disse...

Equipe C progressivo, parabéns pelo site

ze disse...

Parabéns pelo site, equipe C progressivo. Sempre que possível e satisfeito alguma coisa me deixar como as questoes de fibonacci e do diamante. eu postarei um comentário como forma de agradecimento.

Unknown disse...

Boa tarde, gostei muito dos videos sobre a linguagem C no Code blocks. Sera que eu poderia te mandar uma questão pra tu resolver? É que to precisando da resolução dela, mas não to conseguindo de jeito nenhum. Agradeceria demais!!
A questão é essa:

Deseja-se fazer sistema para informatizar um banco. Para isso os dados dos clientes do banco devem ser armazenados em arquivo de dados, que tem a seguinte estrutura:
Agencia (int)
Conta_corrente (int)
Nome (char [40])
Saldo (float)
Limite de cheque especial (float)

O sistema possue o seguinte menu:
[1] - Cadastrar Cliente
[2] - Consultar Saldo
[3] - Deposito
[4] - Saque
[5] - Encerrar conta
[6] - Sair
Opção:

Fazer um programa em C:
a) A função void para ler e armazenar no arquivo os dados dos clientes do banco, não admitir a entrada de agencia e conta já existente.
b) Fazer uma função void para consultar o saldo do cliente. Ao digitar a agencia e conta corrente do cliente deverá ser mostrado o Nome, o Saldo, o limite de cheque especial do cliente. Caso a agencia e conta corrente não esteja cadastrada informe CONTA CORRENTE INVALIDA!
c) Fazer uma função void para efetuar um deposito na conta corrente do cliente. Ao digitar a agencia e conta corrente do cliente e o valor a depositar atualizar o Saldo do cliente e informe DEPOSITO EFETUADO COM SUCESSO! Caso agencia e conta corrente não esteja cadastrada informe CONTA CORRENTE INVALIDA!
d) Fazer uma função void para efetuar um saque na conta corrente de um cliente. Ao digitar a agencia e conta corrente do cliente e o valor a sacar, verificar se o saldo + o limite de cheque especial são suficientes para autorizar o saque, em caso afirmativo atualizar o saldo do cliente e informe SAQUE EFETUADO COM SUCESSO! Caso não exista saldo suficiente informe SALDO INSUFICIENTE! Caso agencia e conta corrente não esteja cadastrada informe CONTA CORRENTE INVALIDA!
e) Fazer uma função void para encerrar a conta corrente de um cliente. Ao digitar a agencia e conta corrente do cliente, verificar se o saldo está zero, pois o encerramento da conta só poderá ser feito se a conta estiver com saldo zero, e perguntar se realmente deseja encerrar a conta do cliente se afirmativo proceder a exclusão e informe EXCLUSAO EFETUADA COM SUCESSO!
f) Faze uma função void para fazer o menu de opções como descrita acima.
g) Fazer a função main.

Evariste Musekwa disse...

Agora estou aprendendo Programar em C. Este tutorial eh muito facil de acompanhar.
Muito obrigado por esta iniciativa que esta ajudando milhares de pessoas!

Unknown disse...

Preciso de ajuda aqui! Devem ser respondidas em linguagem c++ e usando o assunto de funções recursivas.

01.Escreva uma função recursiva que, a partir da passagem de um número inteiro positivo, exiba todos os números naturais pares inferiores ou iguais àquele número em ordem crescente. Observação: os números devem ser exibidos em uma única linha, separados por símbolos de vírgula.

02.Escreva uma função recursiva, de nome inverso, que identifica e retorna o inverso, em relação à ordem dos dígitos, de um número inteiro. A função recebe apenas um argumento: o número inteiro a partir do qual será obtido seu inverso. Observação: para a implementação da função, é sugerido a realização das seguintes operações, se considerado um número inteiro com 2 ou mais dígitos: a) Extração do último dígito, seguido do seu armazenamento em uma string através do uso da função sprintf1 (biblioteca stdio.h); b) Extração dos dígitos restantes, seguido do seu armazenamento em uma segunda string; c) Concatenação das strings das operações discriminadas nos itens a e b (com o último dígito acrescentado ao final da sequência dos dígitos restantes), através do uso da função strcat2 (biblioteca string.h); d) Conversão da string resultante da concatenação para um inteiro, através do uso da função strtol3 (biblioteca stdlib.h).

Unknown disse...

Olá boa tarde!

Sera que alguém poderia me ajudar neste exercício urgentemente!

1. As estruturas

struct ponto{int x, y;};

struct retangulo { estruct ponto sup_esquerdo, inf_direito };

Um ponto é uma estrutura que armazena as coordenadas x e y de um

ponto na tela. Um retângulo é uma estrutura que armazena as

coordenadas dos pontos superior esquerdo e inferior direito. Escreva

funções para realizar o que se pede sobre uma estrutura retangulo r

passada como argumento

(a) Calcular a área de de r

(b) Calcular o centro de r, retornando um valor do tipo ponto. Se x e y não

forem do tipo inteiro, armazenar os valores truncados em uma

estrutura ponto

(c) Mover r x unidades na direção x e y unidades na direção y,

retornando a versao modificada de r (x e y são argumentos adicionais

da função)

(d) Determinar se um ponto p está em r, retornando verdadeiro ou falso

(p é um argumento adicional do tipo struct ponto)

Eliel Souza disse...

Olá preciso muito de ajuda para saber como faço o codigo para esse programa.

Escrever um programa em linguagem C que retorne o valor do seguinte somatorio. Use Função.


s= 1/2 +-2/3 + 3/4 - 4/5 + .... -1000/1001



me ajudem por favor

Anônimo disse...

Chayenne Barbosa: A resposta é fazer a função main.

Unknown disse...

Irei estudar estrutura de Dados, no qual irá cair os assuntos abaixo. Gostaria de saber se o site contempla o assunto e, se não, gostaria da indicação de material sobre o assunto.

EMENTA:
Tipos abstratos de dados. Técnicas de utilização de apontadores. Representação e manipulação de filas, pilhas e árvores. Técnicas de busca de informação na memória principal

Anderson Moss º"º disse...

Boa noite. Tenho uma dúvida que me bloqueia muitas vezes que é a seguinte: Ainda sou iniciante em c, agora estou vendo pilhas, só pra te posicionar mais ou menos o quanto eu sei enfim, muitas vezes eu perco muito tempo tentando "tratar erros" e acaba que o programa fica muito complexo e perco muito tempo nisso, evitando que o usuário coloque uma letra no lugar de um número e coisas do tipo, erros de entrada. Eu devo me preocupar com isso ou deixo quieto por enquanto e considero que o usuário vai fazer certo, apenas para poupar tempo e deixar pra aprender isso mais pra frente ou devo aprender isso agora? Tem algum tutorial ensinando sobre isso? obg

Unknown disse...

Urgente! Preciso de ajuda no seguinte exercício de Programação em linguagem C:

Utilizando vetores e strings, faça com que o usuário digite uma palavra, em seguinte peça ao usuário uma frase, a partir daí o programa tem que contar quantas vezes a palavra inserida aparece na frase! Estou enviando o código de como eu fiz o programa para ver ser algum professor pode me ajudar, pois quase todo o programa está certo, só a parte de contar quantas vezes a palavra pedida ao usuário aparece na frase que também foi pedida na frase. Exemplo:
Insira uma palavra: Mesa
Insira uma frase: O jantar já está na mesa!
Quantas vezes aparece a palavra:
1 vez

CÓDIGO FONTE QUE EU FIZ:

#include
#include
#include

void fim()
{
printf("Fim do programa busca texto\n");
}

main()
{
char frase[999],pal[15],cod;
int x,y,i,c;
i=0;
c=0;
do{
printf("Informe uma palavra:");
scanf("%s",pal);
printf("Informe uma frase:");
scanf("%s",pal);

for(x=0;pal[x]!='\0';x++){
for(y=0;frase[y]!='\0';y++){
c=strcmp(frase,pal);
if(c==0){
i++;
}}
}

printf("Aparece %d \n",i);
printf("Deseja realizar novo calculo: s-Sim n-Nao");
scanf(" %c",&cod);
}
while(cod=='s');

fim();


system("pause");
}



obs: Por favor me ajudem, já tentei resolver a parte de contar quantas vezes a palavra aparece e não consigo de jeito nenhum, e é só esta parte que não está funcionando! Por favor, peço ajuda nesta questão! Entre em contato comigo por: alexandrecostabarrientos@gmail.com

Unknown disse...

Boa tarde!

Não estou conseguindo baixar a apostila, poderia me ajudar?

email: flavioabreu9@gmail.com

Unknown disse...

Oi,

Eu gostaria de obter teu nome e teu sobrenome e teu lugar de onde tu publicas o site para a bibliografia no TCC porque teus artigos estão sem nome e lugar. Por favor, passa-mos. Obrigado!

Gustavo

Filho disse...

Bom dia, oi, qual é o melhor o Livro C Progressivo ou a apostila C Progressivo. Pretendo comprar, obrigado, aguardo uma resposta, até mais.
Tudo que tem na apostila tem no livro?

C Progressivo disse...

Olá Unknown, por conta do tanto de e-mail que recebo com essa dúvida, criei a apostila C Progressivo.

Fiz faculdade, fiz curso de programação presencial, compro cursos online, muitos e muitos e muitos livros, apostilas...e montei na apostila C Progressivo a maior e mais completa, sobre a linguagem. Já incluindo algoritmos e lógica da programação.

Pode ir nela sem medo. Se não gostar, fala que a gente te devolve o dinheiro.

Anônimo disse...

bom dia o senhor poderia informar se na sua cidade existe escola profissionalizante qu oferece cursso de programçao para computador o senhor r progrmador de computador qual o valor taxa de inscriçao para o cursso de programaçao de computador sem mais para o momento ateciosamente municipio taquaritinga estado de sao paulo cep 15900063.