-
Conteúdo Similar
-
Por EduardoLenz
Olá, pessoal,
Mexo com microcontroladores, antigamente com PIC e agora com ARM (plataforma LPCXpresso).
Ambos utilizam a linguagem C.
Meu problema é o seguinte: Preciso converter um caractere que vem da UART (porta de comunicação). No PIC havia uma função pronta para tal, no ARM não.
O caractere chega assim, por exemplo: P123 (tudo junto), e eu queria separar em:
dado_recebido[]={'P', '1', '2', '3'};
Para poder utilizar um switch
switch(dado_recebido[0])
{
case 'P':....
}
alguém tem alguma ideia de como posso fazer a conversão?
Agradeço desde já.
-
Por Caioba
Salve! Estou com problemas ao solucionar uma questão que me foi proposta na linguagem C. Já desenvolvi todo o código, mas os casos de teste não batem.
Questão:
A agência cearense para investigações criminais denominada OBI (Operação de Baita Investigação) notou que, a exemplo do que ocorreu na Petrobrás, muito dinheiro foi desviado dos cofres públicos do estado para pagamento de propina a políticos nos últimos anos, especialmente pelo partido QU (Quadrilha Unida).
A investigação está em andamento e a agência recrutou você para converter alguns valores que ficaram com caracteres estranhos após terem sidos descriptografados dos arquivos originais. Sua tarefa neste caso é relativamente simples: basta retirar todos os caracteres estranhos (não numéricos) de cada um dos dois valores disponíveis. Apenas tome o cuidado de separar os primeiros 11 dígitos do primeiro valor. Eles correspondem ao CPF do corrupto :)
Entrada: A entrada é composta por duas linhas, cada uma delas contendo entre 1 e 60 caracteres ('0'-'9' e outros caracteres não numéricos ou, pelo menos, 1 caracter '0'-'9') e no máximo um ponto ".". Desconsiderando os caracteres não numéricos, o número final não deve ter mais de 17 caracteres (incluindo o ponto decimal).
Exemplo de entrada:
7a5a6adfg4a4adsfgsd9fg6aa904aa91#$%1
42**&7746.67abc$
Saída: Imprima o CPF do corrupto e o valor que foram desviados dos cofres públicos.
Exemplo de saída
cpf 75644969049
propina 11427746.67
Meu código abaixo:
#include<stdio.h> #include<string.h> int main(){ char caract[60]; char caract2[60]; char cpf[10]; char propina[15]; int i=0, j=0; scanf("%s", caract); for(i = 0; caract[i] != '\0'; i++){ if(caract[i] >= 48 && caract[i] <= 57){ if(j<11){ cpf[j] = caract[i]; } j++; } } cpf[11] = '\0'; cpf[12] = '\0'; scanf("%s", caract2); for(i = 0; caract2[i] != '\0'; i++){ if((caract2[i] >= 48 && caract2[i] <= 57) || caract2[i] == 46){ propina[j] = caract2[i]; j++; } } cpf[10] = '\0'; printf("cpf %s", cpf); printf("propina %s", propina); }
-
Por TutoDS
Boa tarde pessoal.
Sou novo a programar em C, programo diariamente em PHP e já programei em C#.
Porém agora tenho que fazer um projeto para a minha Licenciatura em C, um programa estilo Via Verde.
Mas estou com dificuldades, pois o meu pensamento está mais virado para Base de Dados.
Se alguém me puder tirar as seguintes dúvidas agradeço:
Como recomendam estruturar os ficheiros para guardar os dados do cliente, os veículos e as viagens? Como posso fazer a pesquisa num ficheiro, por exemplo inserir 123456789 e aparecer me os dados do cliente com esse NIF? Obrigado
-
Por LucasCBSouto
Pessoal, estou com dificuldades na solução deste problema:
Seja um número N natural maior ou igual a 1. Fazer um algoritmo que calculo S = 1 + 1/2+ 1/3 + 1/4 + ... + 1/N.
Meu código está assim:
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int i, n; float soma; print("Entre com n: "); scanf("%d", &n); soma = 0; { for (i=1; i<=&n; i++) soma = soma + (1/i); } printf("\n O somatorio das fracoes eh: %f", soma); }
Alguém pode me dizer por que não funcionando? O que deve mudar ou o que falta inserir?
Solução:
https://forum.imasters.com.br/topic/316721-resolvido soma-com-fração/
-
Por roberto de souza gomes
boa noite pessoal, eu sou estudante de ADS , e sou novo na programacao, estou desenvolvendo
um sistema para um trabalho final do curso, um sistema de controle de entrada e saida de usuarios,
mas nele esta acontecendo um erro, quando eu digito um numero de uma cadeira que ja esta comprada
ele aceita, estou vendo e revendo o codigo mas nao vejo erro.
alguem pode apontar o meu erro?
obrigado, segue o codigo:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define linha 11
#define coluna 11
#define valor_minimo 29
#define valor_maximo 121
int valida(int num, int *ant, int cont);
void edita (int sort,int cont);
void chamaSorteio();
void CadeiraNum();//declara a funcao que preenche os lugares com numeros
void painel();//declara a funcao que mostra a matriz
void compra();//declara a funcao que faz a compra dos lugares
void cad();
int resp;
int matriz[linha][coluna];//
FILE *ponteiroArquivo;
struct cadastro{
char nome [50];
char cpf [15];
char email [30];
};
struct cadastro aux;
int main(){
int opcao=0;
int contador=0,lugares=92;
char nomes[30];
char timeStr[9];
struct tm *data_hora_atual;
time_t segundos;
time(&segundos);
data_hora_atual = localtime(&segundos);
CadeiraNum(matriz);//aqui complementa a funcao cadeiraNum(); colocando os numeros.
do{
//a partir daqui e mostrado para o usuario as opcoes do programa principal
system("cls");
printf("\n\n MENU \n\n");
printf(" 1- Reservar Cadeira (Ainda restam (%d) lugares)\n",lugares-contador);
printf(" 2- Mostrar Painel de lugares\n");
printf(" 3- Sorteio\n");
printf(" 4- SAIR \n");
printf(" opcao: ");
scanf("%d",&opcao);
switch(opcao){
case 1:
system("cls");
//cad();
// getch();
system("cls");
painel(matriz);//antes de escolher o lugar antes e chamado a matriz e o usuario pode ver o painel, inclusive com os lugares do teatro comprados atualizados.
texto:
printf("\n\nDigite o numero da cadeira desejada: \n");
scanf("%d",&resp);
if ((resp<=0) || (resp>=122)){
printf("Esta cadeira não existe!!!Escolha outra!\n");
goto texto;
getch();
}else if ((resp>=1) && (resp<=22)){
printf("Esta cadeira ja esta reservada!!!Escolha outra!\n");
goto texto;
getch();
}
else if ((resp>=23) && (resp<=28)){
printf("Esta cadeira é preferencial!!!Escolha outra!\n");
goto texto;
getch();
}else if (matriz[linha][coluna]==0){
printf("Esta cadeira esta ocupada!!! Escolha outra!\n");
goto texto;
getch();
}
else (printf(" \n"));
ponteiroArquivo=fopen("arquivo.txt","r");
fgets(nomes,30,ponteiroArquivo);
fclose(ponteiroArquivo);
system("cls");
_strtime( timeStr );
printf_s( "\tParabens %s pela sua compra no dia %d/%d/%d as %s \n\nSeu ticket sera enviado por e-mail!!\n",aux.nome, data_hora_atual->tm_mday,data_hora_atual->tm_mon+1,data_hora_atual->tm_year+1900,timeStr);
printf("seu assento e %d\n",resp);
contador++;
system("pause");
break;
case 2:
system("cls");
system("cls");
painel(matriz);//chama a funcao painel que contem a matriz
printf("\n\n");
system("pause");
break;
case 3:
system("cls");
chamaSorteio();
system("pause");
break;
//o usuario escolhendo este caso o programa retorna nada e fecha
case 4:
return 0;
break;
default:
printf("OPCAO INVALIDA!!!\n");
system("pause");
break;
}
}while(1==1);
system("pause");
return(0);
}
//esta e a funcao responsavel por preencher todos os lugares do teatro com numeros!
void CadeiraNum(){
int c,l;
int num;
num=1;
for(l=1;l<=linha;l++)
for(c=1;c<=coluna;c++){
matriz[l][c]=num;
num++;
}
matriz[3][1]=333;
matriz[3][2]=333;
matriz[3][3]=333;
matriz[3][4]=333;
matriz[3][5]=333;
matriz[3][6]=333;
/**/
matriz[1][1]=222;
matriz[1][2]=222;
matriz[1][3]=222;
matriz[1][4]=222;
matriz[1][5]=222;
matriz[1][6]=222;
matriz[1][7]=222;
matriz[1][8]=222;
matriz[1][9]=222;
matriz[1][10]=222;
matriz[1][11]=222;
/**/
matriz[2][1]=222;
matriz[2][2]=222;
matriz[2][3]=222;
matriz[2][4]=222;
matriz[2][5]=222;
matriz[2][6]=222;
matriz[2][7]=222;
matriz[2][8]=222;
matriz[2][9]=222;
matriz[2][10]=222;
matriz[2][11]=222;
}
//esta e a funcao que cria as linhas e as colunas do teatro matriz
void painel(){
int c,l;
printf("\n PAINEL DE OCUPACOES \n\n");
printf(" ");
for(c=1;c<=coluna;c++)
printf("\t%d",c);
for(l=1;l<=linha;l++){
printf("\n\n\t%d",l);
for(c=1;c<=coluna;c++)
if(matriz[l][c]==222){
printf("\t(R)");
}else if(matriz[l][c]==resp){
matriz[l][c]=0;
printf("\t(C)");
}else if(matriz[l][c]==0){
printf("\t(c)");
}
else if(matriz[l][c]==333){
printf("\t(P)");
} else printf("\t(%d)",matriz[l][c]);
}
printf("\n\n\t(29-121) - LUGAR LIVRE (p) - Assento preferencial (C) - CADEIRA JA COMPRADA (R) CADEIRA RESERVADA\n");
}
//funcao que marca no lugar escolhido o valor 0 guardando o lugar
/*void compra(int l, int c){
if(resp==matriz[linha][linha]){
matriz[linha][coluna] = 0;
}
} */
void cad(){
ponteiroArquivo=(fopen("arquivo.txt","a")); // "a" - cria um arquivo novo, ou modifica um ja existente.
getchar();
printf("\t\tSEJA BEM VINDO AO TEATRO DA UNIP!!\n\n");
printf("Antes de comprar a cadeira vamos fazer um breve cadastro........\n\npresssione ENTER para continuar......\n\n\n");
getch();
printf("Digite seu nome: ");
fgets (aux.nome, 50 ,stdin);
getchar();
printf("Digite seu CPF: ");
fgets (aux.cpf, 15 ,stdin);
getchar();
printf("Digite seu Email: ");
fgets (aux.email , 30 ,stdin);
//gravando com fprintf no arquivo
printf("\n");
fprintf(ponteiroArquivo, "\n------------------------\n");
fprintf(ponteiroArquivo,"nome: %s\n",aux.nome);
fprintf(ponteiroArquivo,"CPF: %s\n",aux.cpf);
fprintf(ponteiroArquivo,"Email: %s\n",aux.email);
fclose(ponteiroArquivo);//fecha o arquivo
}
void chamaSorteio(){
int i;
int sorteados[4];
srand(time(NULL));
printf("---------|SORTEIO\n\n");
for(i=0;i<4;i++){
sorteados = valor_minimo+rand()%(valor_maximo-valor_minimo);
if(i==0){
edita(sorteados,i);
}
else {
sorteados = valida(sorteados,sorteados,i);
edita(sorteados,i);
}
}
printf("------------------------------------------");
getch();
printf("\nParabens a todos os premiados!!\n\n");
getch();
}
int valida(int num, int *ant, int cont){
int aux;
for(aux=0;aux<cont;aux++){
while(num==*(ant+aux)){
num=valor_minimo+rand()%(valor_maximo-valor_minimo);
}
}
return num;
}
void edita (int sort,int cont){
printf("\t%d°premiado usuario da caderia : %.2d\n",cont+1,sort);
}
-