Pesquisar na Comunidade
Mostrando resultados para as tags ''c''.
Encontrado 475 registros
-
Olá, to entrando agora no mundo da programação. Já programava algumas coisas em HTML, mas resolvi migrar para por algumas ideias em prática. Só que não consigo tirá-las do papel para desenvolver esse app de rede social, no estilo das que conhecemos(login,post,interação). Queria saber todos os passos e como organizar os códigos, e quais linguagem tenho que dominar para isso, para conseguir fazer da estrutura, ao layout do app. Já sei que vou precisar de um banco de dados.
-
Pessoal, sofri para conseguir fazer o programa abaixo, mas gostaria de saber se minha lógica esta correta ou se há um modo mais 'limpo, direto' ou simples de se fazer. Escreva um programa que imprima o seguinte losango. * *** ***** ******* ********* ******* ***** *** * #include <stdio.h> #include <stdlib.h> int main() { int i, tam, espaco, asterisco, x, y, metade; asterisco=1; espaco=tam=10; metade=tam/2; printf("Bem vindo ao losango\n\n\n"); for (x=0; x<metade; x++){ //Começa a parte superior for (i=1; i<=espaco; i++) // Da espaco para alinhamento do losango, a cada vez reduz um espaco printf(" "); espaco--; //Decrementa o espaco for (y=0;y<asterisco;y++) //Imprime o losango printf("*"); printf("\n"); // Pula linha asterisco+=2; // Adiciona 2 * para cada linha que for impressa } // Atualiza asterisco-=2; espaco++; // Começa a imprimir a parte inferior for (x=0; x<metade; x++){ asterisco-=2; // Reduz 2 * para cada linha do losangulo espaco++; // Aumenta o espaço para proxima linha for (i=0; i<espaco;i++) printf(" "); for (y=0; y<asterisco;y++) printf("*"); printf("\n"); } return 0; }
-
Boa noite a todos. Escrevi um programa em linguagem C, que não está rodando corretamente. Consigo gravar usando a opção 1 , mas quando tento buscar o produto usando a opção 2 imediatamente recebo e mensagem de erro: falha de segmentação. Já li e reli inúmeras vezes mas não consegui corrigir meu código. Alguém sabe onde está o erro? Desde já grato pela atenção. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> typedef struct{ char nome[40]; int peso; float preço; }Produto; void limparBuffer(void){ char ch; while((ch = getchar()) != '\n' && ch != EOF){ } } Produto* getProdutos(void){ Produto* produtos; int qtd_Produtos; system("clear"); printf("Informe quantos produtos deseja cadastrar: "); scanf("%d", &qtd_Produtos); limparBuffer(); produtos = malloc(sizeof(Produto) * qtd_Produtos); for(int cont = 0; cont < qtd_Produtos; cont++){ system("clear"); printf("Nome do produto: "); fgets((produtos + cont)->nome, 40, stdin); printf("Peso Produto: "); scanf("%d", &(produtos + cont)->peso); printf("Valor Produto: "); scanf("%f", &(produtos + cont)->preço); limparBuffer(); } system("clear"); return produtos; } int buscarProduto(Produto* produtos, const char* nome_Produto){ int encontrado = 0; while(produtos != NULL){ if(strcmp((produtos)->nome, nome_Produto)){ }else{ encontrado = 1; break; } produtos++; } return encontrado; } Produto retornarProduto(Produto* produtos, const char *nomeProduto){ Produto produto; while(produtos != NULL){ if(buscarProduto(produtos, nomeProduto)){ produto = *(produtos); } produtos++; } return produto; } void exibirProduto(Produto* produtos){ char nome_Produto[40]; Produto produto; printf("Digite nome produto procurado: "); fgets(nome_Produto, 40, stdin); system("clear"); if(buscarProduto(produtos, nome_Produto)){ produto = retornarProduto(produtos, nome_Produto); printf("Nome Produto: %s", produto.nome); printf("Peso: %d\n", produto.peso); printf("Valor: %.2f\n", produto.preço); }else{ puts("Produto não encontrado!"); } sleep(5); } int main(int argc, char* argv[]){ Produto *produtos; int escolha = 0; do { system("clear"); printf("Menu Principal\n\n"); printf("(1) - Cadastrar Produtos\n"); printf("(2) - Buscar Produtos\n"); printf("(3) - Encerrar Programa\n\n\n"); printf("?: "); scanf("%i", &escolha); switch (escolha) { case 1: produtos = getProdutos(); break; case 2: exibirProduto(produtos); } } while (escolha != 3); system("clear"); puts("Programa Encerrado!"); sleep(4); return 0; }
-
Boa Tarde. Preciso de ajuda pra esse código que mostra o tempo de exibição de processos. Porem, ele mostra o Gráfico de um jeito errado. Ao invés dele mostrar o gráfico assim: Gráfico de Gantt: ------------------------ 1: ---XXX 2: -XX 3: X ------------------------ Ele me mostra assim: Gráfico de Gantt: ------------------------ 3: X 2: -XX 1: ---XXX ------------------------ #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { char nome[20]; int tempo_execucao; int tempo_espera_inicial; int tempo_processamento; int tempo_espera_final; } Processo; void fcfs(Processo* processos, int n) { int tempo_chegada = 0; int tempo_total = 0; printf("Gráfico de Gantt:\n"); printf("------------------------\n"); for (int i = 0; i < n; i++) { printf("%s: ", processos[i].nome); for (int j = 0; j < tempo_chegada; j++) printf("-"); for (int j = 0; j < processos[i].tempo_execucao; j++) printf("X"); printf("\n"); tempo_chegada += processos[i].tempo_execucao; processos[i].tempo_espera_inicial = tempo_chegada - processos[i].tempo_execucao; processos[i].tempo_espera_final = tempo_total - processos[i].tempo_execucao; tempo_total += processos[i].tempo_execucao; processos[i].tempo_processamento = processos[i].tempo_execucao; } printf("\nDados adicionais:\n"); printf("Tempo de espera para iniciar o processo:\n"); for (int i = 0; i < n; i++) { printf(" %s)", processos[i].nome); printf("%d -", processos[i].tempo_espera_inicial);} printf("\nTempo de processamento do processo:\n"); for (int q = 0; q < n; q++){ printf(" %s)", processos[q].nome); printf("%d -", processos[q].tempo_processamento); } printf("\nTempo de espera para finalizar o processo:\n"); for (int e = 0; e < n; e++){ printf(" %s)", processos[e].nome); printf("%d -", 0); } printf("\n"); double tempo_medio_espera_inicial = 0.0; double tempo_medio_espera_final = 0.0; for (int i = 0; i < n; i++) { tempo_medio_espera_inicial += processos[i].tempo_espera_inicial; tempo_medio_espera_final += processos[i].tempo_espera_final; } tempo_medio_espera_inicial /= n; tempo_medio_espera_final /= n; printf("Tempo médio de espera para iniciar cada processo: %.2lf\n", tempo_medio_espera_inicial); printf("Tempo total de processador: %d\n", tempo_total); } void sjf(Processo* processos, int n) { // Ordena os processos pelo tempo de execução (SJF) for (int i = 0; i < n - 1; i++) { int menor_tempo = i; // Índice do processo com menor tempo de execução for (int j = i + 1; j < n; j++) { if (processos[j].tempo_execucao < processos[menor_tempo].tempo_execucao) { menor_tempo = j; } } // Troca os elementos somente no final da iteração Processo temp = processos[i]; processos[i] = processos[menor_tempo]; processos[menor_tempo] = temp; } int tempo_chegada = 0; int tempo_total = 0; printf("Gráfico de Gantt:\n"); printf("------------------------\n"); for (int i = 0; i < n; i++) { printf("%s: ", processos[i].nome); for (int j = 0; j < tempo_chegada; j++) printf("-"); for (int j = 0; j < processos[i].tempo_execucao; j++) printf("X"); printf("\n"); tempo_chegada += processos[i].tempo_execucao; processos[i].tempo_espera_inicial = tempo_chegada - processos[i].tempo_execucao; processos[i].tempo_espera_final = tempo_total - processos[i].tempo_execucao; tempo_total += processos[i].tempo_execucao; processos[i].tempo_processamento = processos[i].tempo_execucao; } printf("\nDados adicionais:\n"); printf("Tempo de espera para iniciar o processo:\n"); for (int i = 0; i < n; i++) { printf(" %s)", processos[i].nome); printf("%d -", processos[i].tempo_espera_inicial);} printf("\nTempo de processamento do processo:\n"); for (int q = 0; q < n; q++){ printf(" %s)", processos[q].nome); printf("%d -", processos[q].tempo_processamento); } printf("\nTempo de espera para finalizar o processo:\n"); for (int e = 0; e < n; e++){ printf(" %s)", processos[e].nome); printf("%d -", 0); } printf("\n"); double tempo_medio_espera_inicial = 0.0; double tempo_medio_espera_final = 0.0; for (int i = 0; i < n; i++) { tempo_medio_espera_inicial += processos[i].tempo_espera_inicial; tempo_medio_espera_final += processos[i].tempo_espera_final; } tempo_medio_espera_inicial /= n; tempo_medio_espera_final /= n; printf("Tempo médio de espera para iniciar cada processo: %.2lf\n", tempo_medio_espera_inicial); printf("Tempo total de processador: %d\n", tempo_total); } void circular(Processo* processos, int n, int quantum) { int* temp_restante = (int*)malloc(n * sizeof(int)); for (int i = 0; i < n; i++) temp_restante[i] = processos[i].tempo_execucao; int tempo_chegada = 0; int tempo_total = 0; // Determinar o comprimento máximo do nome dos processos int max_length = 0; for (int i = 0; i < n; i++) { int length = strlen(processos[i].nome); if (length > max_length) max_length = length; } printf("Gráfico de Gantt:\n"); printf("------------------------\n"); while (1) { int finalizados = 1; for (int i = 0; i < n; i++) { if (temp_restante[i] > 0) { finalizados = 0; if (temp_restante[i] > quantum) { printf("%-*s: ", max_length, processos[i].nome); // Adicionar espaços em branco para alinhar o gráfico de Gantt for (int j = 0; j < tempo_chegada; j++) printf("-"); for (int j = 0; j < quantum; j++) printf("X"); printf("\n"); tempo_chegada += quantum; temp_restante[i] -= quantum; processos[i].tempo_processamento += quantum; } else { printf("%-*s: ", max_length, processos[i].nome); // Adicionar espaços em branco para alinhar o gráfico de Gantt for (int j = 0; j < tempo_chegada; j++) printf("-"); for (int j = 0; j < temp_restante[i]; j++) printf("X"); printf("\n"); tempo_chegada += temp_restante[i]; processos[i].tempo_processamento += temp_restante[i]; temp_restante[i] = 0; } } } if (finalizados) break; } tempo_total = tempo_chegada; printf("\nDados adicionais:\n"); for (int i = 0; i < n; i++) { processos[i].tempo_espera_inicial = processos[i].tempo_espera_inicial - processos[i].tempo_processamento; processos[i].tempo_espera_final = tempo_chegada - processos[i].tempo_processamento; printf("Tempo de espera para iniciar o processo %-*s: %d\n", max_length, processos[i].nome, processos[i].tempo_espera_inicial); printf("Tempo de processamento do processo %-*s: %d\n", max_length, processos[i].nome, processos[i].tempo_processamento); printf("Tempo de espera para finalizar o processo %-*s: %d\n", max_length, processos[i].nome, processos[i].tempo_espera_final); } double tempo_medio_espera_inicial = 0.0; double tempo_medio_espera_final = 0.0; for (int i = 0; i < n; i++) { tempo_medio_espera_inicial += processos[i].tempo_espera_inicial; tempo_medio_espera_final += processos[i].tempo_espera_final; } tempo_medio_espera_inicial /= n; tempo_medio_espera_final /= n; printf("Tempo médio de espera para iniciar cada processo: %.2lf\n", tempo_medio_espera_inicial); printf("Tempo médio de espera para finalizar cada processo: %.2lf\n", tempo_medio_espera_final); printf("Tempo total de processador: %d\n", tempo_total); free(temp_restante); } int main() { int n; printf("Quantos processos deseja cadastrar? "); scanf("%d", &n); Processo* processos = (Processo*)malloc(n * sizeof(Processo)); for (int i = 0; i < n; i++) { printf("Nome do processo %d: ", i + 1); scanf("%s", processos[i].nome); printf("Tempo de execução do processo %d: ", i + 1); scanf("%d", &processos[i].tempo_execucao); } char algoritmo[20]; printf("Qual algoritmo de escalonamento deseja utilizar? (FCFS/SJF/Circular): "); scanf("%s", algoritmo); if (strcmp(algoritmo, "FCFS") == 0) { fcfs(processos, n); } else if (strcmp(algoritmo, "SJF") == 0) { sjf(processos, n); } else if (strcmp(algoritmo, "Circular") == 0) { int quantum; printf("Informe o quantum: "); scanf("%d", &quantum); circular(processos, n, quantum); } else { printf("Algoritmo de escalonamento inválido.\n"); } free(processos); return 0; } Quem souber como me ajudar fico agradecido!
-
Oii gente, eu estou tendo um problema no meu algoritmo, onde ele não retorna p/ a linha que o programa pede e aparece a mensagem: "signal: segmentation fault (core dumped)". Link pelo replit: https://replit.com/@ferkamui/ex-1#main.c
-
Alguém sabe quais seriam os parâmetros de compilação correspondentes ? HP-UX +u2 +w3 AIX -w ????? No HP-UX usamos cc. No AIX-IBM , usa o XLC ou XLCC ... Não sei bem. Mas o compilador interpreta esses parâmetros com arquivos. Existem correspondentes ? Se não, posso remover esses parâmetros e o programa vai funcionar ?
-
#include <stdio.h> #include <stdlib.h> #include <locale.h> int main() { setlocale(LC_ALL, "Portuguese"); int dep,tax,mult=0,i=0,mont=0; printf("depósito : "); scanf("%d", &dep); printf("taxa : "); scanf("%d", &tax); tax= tax/100; while (dep != (dep*3)){ mult = dep*tax; mont = dep+mult; i++; if ( mont == (dep*3)) { printf("%d meses", i); } } // fiz isso mas não funcionou. return 0; }
-
Ola Estou a construir um datalogger em código C.Desta forma necessito passar os dados entre ficheiros. O meu problema está na inclusão de algumas variáveis no topo de um arquivo .txt onde os dados são salvos. Variáveis como tempo de data e hora, id do dispositivo e muito mais... Para isso preciso de ajuda, gostaria que os dados estivessem disponíveis para todos os arquivos, até aí é fácil, basta incluir a variável como extern, no arquivos *.h e incluí-lo em todos os outros que você deseja que a variável esteja disponível. mas como posso fazer para ter acesso a ele dentro do array que preciso? Exemplo: main.c #include "main.h" char dateTimeFormat[24]; void main(void){ dateTimeFormat = "22-02-22 13:23:04"; } main.h extern char dateTimeFormat[24]; este.c #include "main.h" extern char dateTimeFormat[24]; /*Header .txt file initialization*/ volatile char headerFile[] ="\n\n" "# HEALT MONITORING SYSTEM \r\n" "# DEVELOPED: BIZA \r\n" "# VERSION: B \r\n" "# DATATIMECAPTURE:"+dateTimeFormat+ "\r\n" "# SAMPLINGFREQUENCY: 500 \r\n" "# SAMPLECHANNELS: 1 2 3 4 5 6 7 8 \r\n" "# SAMPLINGRESULUTION: 24 \r\n" "# IDDEVICE: HEALTHY \r\n" "# ENDOFHEADER Como posso incluir a variável "dateTimeFormat" dentro do headerFile como descrevi acima?
-
4) Faça um programa que calcule e imprima o CR do período para os alunos de Sistemas de Informação. Para cada aluno o programa devera ler: a) Matrícula; b) Quantidade de disciplinas cursadas; c) Soma das médias finais das disciplinas. Além do CR de cada a
uma questão postou lucas costa da cruz C, C++
boa noite pode me ajuda eu fiz esse exercício e queria saber se está certo de acordo com o enunciado 4) Faça um programa que calcule e imprima o CR do período para os alunos de Sistemas de Informação. Para cada aluno o programa devera ler: a) Matrícula; b) Quantidade de disciplinas cursadas; c) Soma das médias finais das disciplinas. Além do CR de cada aluno, o programa deverá imprimir o maior CR dos alunos que cursaram 5 disciplinas ou mais. #include <stdio.h> #include <stdlib.h> void main() { int matricula, disciplinas, i; float cr, maior=0, nota, notas; do { notas = 0; printf("\nDigite a matricula: "); scanf("%d", &matricula); if (matricula < 1 || matricula > 5000) break; printf("\nDigite a quantidade de disciplinas cursadas: "); scanf("%d", &disciplinas); i = 1; while(i <= disciplinas) { printf("\nDigite a nota da disciplina %d: ", i); scanf("%f", ¬a); notas += nota; i++; } cr = notas / disciplinas; printf("\nMatricula: %d", matricula); printf("\nNumero de disciplinas: %d", disciplinas); printf("\nCR: %f", cr); if (disciplinas > 4 && cr > maior) { maior = cr; } } while(matricula > 0 && matricula <= 5000); printf("\nMaior CR dos alunos: %f", maior); } -
Essa questão caiu na minha prova, e como não podia usar compilador para rodar a gente que tinha que rodar na nossa cabeça e colocar o valor de s,m,n .. porem não entendi o que esse codigo faz e qual seria a resposta. alguém poderia me ajudar? https://imgur.com/a/PsbVuAW
-
- c
- linguagemc
-
(e %d mais)
Tags:
-
Conhecem algum software/libraly que traduza a saida de textos /* printf("") */ automaticamente, ou qualquer ferramenta que ajude ? Se puderem dar dicas de lógica que diminuam tabém estou aceitando, pois estou pensando em criar uma condição e a cada printf colocar uma estrutura de decisão... If(ingles==true){ printf("TEXTO es_us"); }else{ printf("TEXTO pt_br"); }
-
Bom galera, como dito anteriormente, comecei agora o conteúdo de funções, porém não estou sabendo desenvolver uma atividade proposta. Ela é a seguinte: Faça uma função chamada MULTIPLO que recebe como parâmetro dois números inteiros e retorna o 1, se o primeiro número for múltiplo do segundo, número e o 0 caso contrário. Exemplo de utilização da função: MULTIPLO(35,5) Retornará o valor 1 MULTIPLO(35,2) Retornará o valor 0 Depois faça um programa que lê dois números inteiros e escreve se o primeiro é múltiplo do segundo, utilizando a função MULTIPLO. Até agora, tenho isso, mas sei que está errado. Poderiam me ajudar? int multiplo (int num1, int num2) { int multi; if (num1%num2 == 0) printf("1"); if (num1%num2 != 0) printf("0"); return multi; }
- 2 respostas
-
Olá, estou com um problema no valor float de uma variável (peso). Quando o valor não é acrescido de decimais na entrada do dado (por exemplo, peso = 1 ou 2 ou 3...) o resultado é correto. Entretanto, quando o valor do peso vem com decimais (por exemplo, peso = 1.3 ou 2.3 ou 4.45...) o programa simplesmente ignora todos os demais comandos e roda o programa de maneira errada. Já quebrei a cabeça mas não encontrei solução. Quem puder me ajudar, agradeço demais. PS- sou noob então relevem se for algo prosaico rs Abaixo segue o código: /* programa para ler o peso de uma encomenda, tipo de entrega(1-sedex, 2-sedex 10) e região onde será entregue a encomenda(1- Norte, 2-Nordeste, 3-Centro-Oeste, 4-Sudeste, 5-Sul), calcular o valor de postagem com base nas condições referentes ao peso, região de entrega e tipo de entrega dispostos na apostila e imprimir o valor total da postagem */ //Inclusão de bibliotecas #include <stdio.h> #include <locale.h> int main(void) { //Comando que faz escrever com acentuação setlocale(LC_ALL,"Portuguese"); //Declaração das variáveis float peso, postagem; int tipo, regiao; //Título esubtítulo do programa printf("\tLOJAS PYONGYANG\n\n\n\n"); printf("\tCálculo do valor da postagem\n\n\n"); //Leitura dos seguintes dados de entrada: peso, tipo de entrega e região de entrega printf("Digite aqui o peso da encomenda, em kg: "); scanf("%f", &peso); printf("\nQual o tipo de entrega?\n(1- Sedex, 2- Sedex 10)\n"); scanf("%d", &tipo); printf("\nQual a região da entrega?\n(1- Norte, 2- Nordeste, 3- Centro-Oeste, 4- Sudeste, 5- Sul)\n"); scanf("%d", ®iao); postagem = 0; //Switch para os casos referentes à região, com if-else referentes à peso e tipo de entrega switch(regiao) { case 1: postagem = postagem+3; if (tipo == 1) { postagem = postagem+9; }else { if(tipo == 2) postagem = postagem+11; } if (peso <= 1.00) postagem = postagem+5; else { if(peso >= 1.00 || peso <= 5.00) postagem = postagem+10; else { if(peso > 5.00) postagem = ((peso-5.00)*3)+15+postagem; } } break; case 2: postagem = postagem+2; if (tipo == 1) { postagem = postagem+9; }else { if(tipo == 2) postagem = postagem+11; } if (peso <= 1.00) postagem = postagem+5; else { if(peso >= 1.00 && peso <= 5.00) postagem = postagem+10; else { if(peso > 5.00) postagem = ((peso-5.00)*3)+15+postagem; } } break; case 3: postagem = postagem+6; if (tipo == 1) { postagem = postagem+9; }else { if(tipo == 2) postagem = postagem+11; } if (peso <= 1.00) postagem = postagem+5; else { if(peso >= 1.00 && peso <= 5.00) postagem = postagem+10; else { if(peso > 5.00) postagem = ((peso-5.00)*3)+15+postagem; } } break; case 4: postagem = postagem+5; if (tipo == 1) { postagem = postagem+9; }else { if(tipo == 2) postagem = postagem+11; } if (peso <= 1.00) postagem = postagem+5; else { if(peso >= 1.00 && peso <= 5.00) postagem = postagem+10; else { if(peso > 5.00) postagem = ((peso-5.00)*3)+15+postagem; } } break; case 5: postagem = postagem+7; if (tipo == 1) { postagem = postagem+9; }else { if(tipo == 2) postagem = postagem+11; } if (peso <= 1.00) postagem = postagem+5; else { if(peso >= 1.00 && peso <= 5.00) postagem = postagem+10; else { if(peso > 5.00) postagem = ((peso-5.00)*3)+15+postagem; } } break; } //Impressão dos resultados printf("\n\n\nVALOR TOTAL DA POSTAGEM...................R$ %.2f\n\n", postagem); system("pause"); }
-
Ola, estou fazendo esse exercício e gostaria de saber como posso contar cada elemento repetido em um vetor dinâmico?
-
Estou tendo problema com esse exercício, abaixo coloquei a saída do programa, ele não está fazendo essa inversão que o exercício pede. Dada uma matriz A de dimensões 5x4 formada de elementos numéricos reais. Faça um programa em C que calcule e mostre sua matriz transposta T. #include <stdio.h> #define lin 5 #define col 4 int main(){ int i, j; float A[lin][col], t[col][lin]; for(i = 0; i < lin; i++){ for(j = 0; j < col; j++){ printf("Informe os valores de A: [%d][%d]\n", i, j); scanf("%f", &A[i][j]); } } for(i = 0; i < lin; i++){ for(j = 0; j < col; j++){ t[j][i] = A[i][j]; } } printf("\nElementos da matriz transporta:\n"); for(i = 0; i < lin; i++){ for(j = 0; j < col; j++){ printf("%.2f\n", t[j][i]); } } return 0; } eu também tentei alterar o final: printf("\nElementos da matriz transporta:\n"); for(i = 0; i < col; i++){ for(j = 0; j < lin; j++){ printf("%.2f\n", t[i][j]); } } Eu tinha feito 2 x 1 para facilitar
-
não estou conseguindo fazer esse exercício Faça um programa em C que leia inicialmente a quantidade de procedimentos que foram realizados. Depois apresente como resultado: a) As informações de cada procedimento (mostrar normalmente); b) A quantidade total de dias que ele ficou internado; e c) O valor total que ele deverá pagar no momento de sua alta. •OBS: Utilize duas funções para calcular os totais de a e b.
-
Para resolver este exercício, siga os passos abaixo: E = 1 + 1 / 1! + 1 / 2! + 1 / 3! + ... + 1 / (k-1)! + 1 / k! 1. A função deve receber um valor real x e calcule o valor de E. x representa o valor máximo (tolerância) para a diferença entre dois termos consecutivos. Isto é, o cálculo do valor de E deve ser computado até que |1/k! – 1/(k+1)! | < x . Imprima cada termo gerado e o resultado de E ao final. 2. Escreva uma função principal (main) que leia um valor real x e chame a função desenvolvida no item anterior. ex: 0.5 1 + 1/1! + 1/2! = 2.500 Não faço ideia de como devo fazer o fatorial de um número decimal e de como colocar a conta (1 +1/1! + 1/2! = ) junto com a resposta para cada tipo de exemplo. Tudo que eu consegui foi isso aqui: #include <stdio.h> #include <stdlib.h> #include <math.h> int main(){ float soma = 0, fat = 0, num; int i; scanf("%f", &num); for(i = 0; i < num; i++){ fat = fat * i; soma = soma + (1 / fat); } printf("%.3f", soma); return soma; }
-
Escreva um programa que leia dez valores do teclado (usando a mesma variável) e imprima as posições do maior e do menor na sequência. ex: 2, 20, 1, 3, 6, 15, 12, 18, 8, 7. O 2o elemento é o maior. O 3o elemento é o menor. Não estou conseguindo colocar a posição de cada número. No meu programa aparece "20" e "1" em vez de "O 2o elemento é o maior." e "O 3o elemento é o menor.". Algum cidadão de bem poderia concluir esse código? Obrigado. Obs: acho que tem que fazer como vetor, mas quando eu fiz as posições saíram incorretas. #include <stdio.h> #include <stdlib.h> int main(){ int num, maior = 0, menor = 0, y = 0; printf("Digite um numero:"); scanf("%d", &num); menor = num; maior = num; for(y = 1; y < 10; y++){ printf("Digite um numero:"); scanf("%d", &num); if(num > maior) maior = num; if(num < menor) menor = num; } printf ("%d\n", maior); printf ("%d", menor); return 0; }
-
Como utilizar a função fopen para abrir múltiplos arquivos
uma questão postou Davi_c Grupo de Estudos
Estou criando um login em C que precisa ser capaz de guardar múltiplos usuários e fazer com que eles possam logar. Em dado momento percebi que o fopen com o "wb" reescreve os usuários anteriores, mantendo só um. Há a possibilidade de abrir ele com a+, mas se eu fizer isso a minha função login não vai ser mais capaz de permitir a ninguém logar. Sendo assim, minha decisão foi: abrir um arquivo para cada usuário, e depois faço com que minha função login olhe arquivo por arquivo vendo se as credenciais de acesso do usuário batem com as de qualquer arquivo. O problema é que não consigo fazer a função fopen abrir diferentes arquivos utilizando a variável i. Tentei de diversas maneiras, mas aparentemente a função simplesmente não comporta mais argumentos do que "arquivo_nome", "wb". Alguém tem uma ideia de como fazer isso? Abaixo, minha função cadastrar. void cadastrar_user() { FILE *fp; struct usuario_t usuario; int i = 0; memset(&usuario,0,sizeof(struct usuario_t)); printf("\n ------Cadastro de usuario------"); printf("\n\n Insira um login> "); scanf("%s", &usuario.login); printf("\n Insira uma senha> "); scanf("%s", &usuario.senha); i++; fp = fopen("registro", "wb"); fwrite(&usuario, sizeof(struct usuario_t), 1, fp); fclose(fp); printf("\n"); printf("\n ---- Usuario cadastrado, redirecionando para login! ----"); login(); Abaixo, minha função login: int login(){ FILE *fp; struct usuario_t usuario; fp = fopen("login","rb"); memset(&usuario, 0, sizeof(struct usuario_t)); fread(&usuario, sizeof(struct usuario_t), 1, fp); fclose(fp); if(!strcmp("", usuario.login)){ printf("\n ----Cadastro não encontrado, redirecionando para cadastro!----\n"); cadastrar_user();} else { char login[LOGIN_MAX]; char senha[SENHA_MAX]; printf("\n Login> "); scanf("%s", &login); printf(" Senha> "); scanf("%s", &senha); if (!strcmp(login, usuario.login) && !strcmp(senha, usuario.senha)) { printf("\n Bem vindo %s!\n", usuario.login); menu_crud(); return 0; } else { printf(" \n----Usuario ou senha invalidos!----\n"); printf("\n Tente novamente! Redirecionando para a pagina inicial\n\n"); main(); } } return 0; } -
02.) Questão DEFINIR a função recursiva em C contar ( ) para: - receber dois valores inteiros, sendo o segund certo algarismo; - retornar a quantidade de vezes que esse algarismo significativo aparecer no primeiro valor. OBS.: Recomendável não usar a conversão de inteiros para caracteres. Exemplos: 1. int z1 = contar ( 11, 0 ); // z1 = 0 2. int z2 = contar ( 10, 0 ); // z2 = 1 3. int z3 = contar ( 100, 0 ); // z3 = 2 4. int z4 = contar ( 101, 0 ); // z4 = 1 5. int z5 = contar ( 0, 0 ); // z5 = 1 6. int z6 = contar ( -10, 0 ); // z6 = 1
-
oiii gente, eu estou fazendo um projeto da facul mas no meio do caminho me perdi ahsudhas, eu fiz um programinha onde deveria dar para escrever um texto com titulo porém na quando eu vou digitar o texto em si so programa só ta aceitando números não estou conseguindo alterar sla porque aaah e outra q se eu digitar um texto real ele pega o que escrevi e faz aparecer como se fosse o titulo man uashduah me perdi total nem sei como posso consertar isso segue programa ae #include <stdio.h> #include <stdlib.h> FILE* AbreArquivo(char modo, char caminho[30]) { FILE *arquivo; switch(modo) { case 'g': arquivo = fopen(caminho,"wt"); break; case 'l': arquivo = fopen(caminho,"rt"); break; case 'a': arquivo = fopen(caminho,"a"); break; } if(arquivo==NULL) { printf("não foi possivel abrir o arquivo"); exit(0); } return arquivo; } void FecharArquivo(FILE *arquivo) { fclose(arquivo); } void Cadastra(char Titulo[30], int Texto[10000]) { FILE *arquivo; arquivo = AbreArquivo('a', "vendas.txt"); fprintf(arquivo, "%s %d\n", Titulo, Texto); FecharArquivo(arquivo); } void Listar() { FILE *arquivo; char Titulo[30]; int Texto[10000]; arquivo = AbreArquivo('l',"vendas.txt"); while(!feof(arquivo)) { fscanf(arquivo,"%s %d ", &Titulo, &Texto); printf("Titulo: %s - Texto: %d\n", Titulo, Texto); } FecharArquivo(arquivo); } int main() { int opcao; char Titulo[30]; int Texto[10000]; do { system("cls"); printf("\n\n\t\também Vindo ao programa (NOME)\n"); printf("\nMENU"); printf("\n 1 - Registrar Infos"); printf("\n 2 - Consultar Infos"); printf("\n 3 - Encerrar programa"); printf("\nDigite uma opcao: "); scanf("%d", &opcao); system("cls"); switch(opcao) { case 1: printf("\nDigite o Titulo: "); setbuf(stdin,NULL); gets(Titulo); printf("\nDigite o Texto: "); scanf("%d", &Texto); Cadastra(Titulo, Texto); system("pause"); break; case 2: Listar(); system("pause"); break; case 3: printf("\n\nFinalizando...\n\n"); system("pause"); exit(0); break; default: printf("\n\nOpcao invalida! Tente Novamente!\n\n"); system("pause"); } }while(opcao!=3); return 0; }
-
Uma empresa decidiu fazer um recrutamento para preencher algumas vagas. Os candidatos serão cadastrados por computador. Faça um programa em C para: a) Ler o número do candidato, a idade, o sexo (M/F), o estado civil (S para Solteiro/C para Casado/D para Divorciado), a experiência profissional (S/N) e a quantidade de filhos que a pessoa possui. O número de candidatos é indefinido, dessa forma, fazer a leitura e registro até que o número do candidato seja negativo, para finalizar as entradas do programa; b) Mostrar o número total de candidatos e candidatas; c) Mostrar o percentual de pessoas com experiência profissional (S). d) Mostrar o percentual de pessoas acima de 50 anos de idade. e) Mostrar o percentual dos candidatos (homens e mulheres) maiores de idade que tenham experiência no serviço; f) Mostrar o percentual das candidatas que não possuem filho e que são casadas.
-
Boa noite, Tenho uma atividade para fazer e não estou sabendo como iniciar, referente a um editor de texto com pilhas no livro do Ziviani, Alguns editores de texto permitem que algum caractere funcione como um " cancela-caractere", cujo efeito é o de cancelar o caractere anterior na linha que está sendo editada. Por exemplo, se o cancela-caractere, então a seqüência de caracteres UEM##FMB#G corresponde à seqüência UFMG. Outro comando encontrado em editores de texto é o "cancela-linha", cujo efeito é o de cancelar todos os caracteres anteriores na linha que está sendo editada. Neste exemplo vamos considerar como o caractere cancela-linha. Finalmente, outro comando encontrado em editores de texto é o "salta-linha" , cujo efeito é o de causar a impressão dos caracteres que pertencem à linha que está sendo editada, iniciando uma nova linha de impressão a partir do caractere imediatamente seguinte ao caractere salta-linha. Por exemplo, se ` @' é o salta-linha, então a seqüência de caracteres DCC@UFMG.@ corresponde às duas linhas abaixo: DCC UFMG. Vamos escrever um Editor de Texto (ET) que aceite os três comandos descritos acima. O ET deverá ler um caractere de cada vez do texto de entrada e produzir a impressão linha a linha, cada linha contendo no máximo 70 caracteres de impressão. O ET deverá utilizar o tipo abstrato de dados Pilha definido anteriormente, implementado através de arranjo
-
Ola!!!, programei no codeblocks um programa, mas testei depois no dev, agora no dev esta saindo com caracteres errados, sabe me dizer o porque? Exemplo: -> A matriz dividida pelo maior valor encontrado: -1,#R -1,#R -1,#R -1,#R -1,#R -1,#R -1,#R -1,#R -1,#R -1,#R -1,#R -1,#R Esse 1,#R era pra ser numeros reais...