Ir ao conteúdo
  • Cadastre-se

paulo luz magalhaes

Membro Pleno
  • Posts

    42
  • Cadastrado em

  • Última visita

Tudo que paulo luz magalhaes postou

  1. Utilizando a linguagem C e o sistema operacional GNU/Linux, desenvolva um programa que calcule as raízes, se existirem, de uma equação do segundo grau, sendo que as constantes envolvidas no cálculo deverão ser fornecidas pelo usuário via teclado. Para a resolução da equação, deve-se utilizar três processos além do processo original. O primeiro processo será responsável por calcular o valor do delta e os demais deverão calcular as raízes da equação. Destaca-se que o envio do delta, para os processos que realizarão os cálculos das raízes, deverá ocorrer por Pipes. #include <stdio.h> #include <stdlib.h> #include <pthread.h> struct arguments { int a, b; }; void* sum (void* void_args) { struct arguments* args = (struct arguments *) void_args; float* result = malloc(sizeof(float)); *result = args->a + args->b; return (void*) result; } int main () { struct arguments args; args.a = 1; args.b = 2; float* result; pthread_t t1; pthread_create(&t1, NULL, sum, &args); pthread_join(t1, (void**) &result); printf("Resultado: %.2f\n", *result); return 0;
  2. #include <stdio.h> #include <stdlib.h> #include <pthread.h> struct arguments { int a, b; }; void* sum (void* void_args) { struct arguments* args = (struct arguments *) void_args; float* result = malloc(sizeof(float)); *result = args->a + args->b; return (void*) result; } int main () { struct arguments args; args.a = 1; args.b = 2; float* result; pthread_t t1; pthread_create(&t1, NULL, sum, &args); pthread_join(t1, (void**) &result); printf("Resultado: %.2f\n", *result); return 0; }
  3. O código para a separação do processo pai do filho é: #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main(void) { int i; pid_t pid; if ((pid = fork()) < 0) { perror("fork"); exit(1); } if (pid == 0) { //O código aqui dentro será executado no processo filho printf("pid do Filho: %d\n", getpid()); } else { //O código neste trecho será executado no processo pai printf("pid do Pai: %d\n", getpid()); } printf("Esta regiao sera executada por ambos processos\n\n"); scanf("%d", &i); exit(0); } Vamos fazer um experimento simples, declarar inicialmente uma variável do tipo char e iniciar ela com o valor 'a'. Então, no processo pai mudamo essa variável para armazenar 'b'. Vamos exibir, em ambos processos, o valor da variável e seu endereço de memória. Nosso código fica: #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main(void) { int i; char c = 'a'; pid_t pid; if ((pid = fork()) < 0) { perror("fork"); exit(1); } if (pid == 0) { printf("Caractere e Endereco: %c - %p (filho)\n",c,&c); } else { c='b'; printf("Caractere e Endereco: %c - %p (pai)\n",c,&c); } scanf("%d", &i); exit(0); } A função execv() é usada para executar um programa, em ambientes Linux. Ou seja, ela cria um processo novo, que é o programa que vai executar. Para ver a execv em ação, vamos criar um programa simples, de nome "teste" que simplesmente exibe a PID desse arquivo "teste", que é um executável, cujo código fonte é: #include <sys/types.h> #include <unistd.h> int main(void) { printf("\nPid do arquivo: %d\n", getpid()); Agora, nosso programa, que usa a função execv para executar o arquivo "teste": #include <stdio.h> int main(void) { printf("pid do Pai: %d\n", getpid()); execv("teste", NULL); printf("EU TENHO UM SEGREDO PRA CONTAR\n"); Assim como a função execv, a função system também executa um programa, na verdade ela simula o terminal, então é como se déssemos um comando no terminal. A diferença é que aqui a função filho não mata a pai, portanto, não há crimes ;) Vamos usar a função system para executar o mesmo arquivo "teste", isso é feito no terminal assim ./teste Logo, nosso código fica: #include <stdio.h> #include <sys/types.h> #include <unistd.h> int main(void) { printf("pid do Pai: %d\n", getpid()); system("./teste"); printf("\nPrograma apos a funcao system\n"); } Utilizando a linguagem C e o sistema operacional GNU/LINUX, desenvolva um programa que crie um novo processo. Esse novo processo deverá alterar a sua imagem de execução, via chamada ao sistema execve() ou uma de suas variações, inserindo a imagem do comando /bin/ls, utilizando os parâmetros -lha --color. O professor da disciplina de Sistemas Operacionais pediu que usamos threads. Nunca programei usando essas operações, nem sei pra onde vou, peço ajuda na solução desse programa.
  4. Utilizando a linguagem C e o sistema operacional GNU/Linux, desenvolva um programa que calcule as raízes, se existirem, de uma equação do segundo grau, sendo que as constantes envolvidas no cálculo deverão ser fornecidas pelo usuário via teclado. Para a resolução da equação, deve-se utilizar três processos além do processo original. O primeiro processo será responsável por calcular o valor do delta e os demais deverão calcular as raízes da equação. Destaca-se que o envio do delta, para os processos que realizarão os cálculos das raízes, deverá ocorrer por Pipes. Segue abaixo o código: #include #include int main() { float a, //declarando os coeficientes da equação de segundo grau b, c, delta, y, x; int quatro=4, dois=2; printf("Digite os coeficientes da equação de segundo grau que daremos as raízes: "); scanf ("%f %f %f",&a,&b,&c); //valor do dricriminante delta = ((b)*(b) - (quatro)*(a)*(c)); if (delta>=0) { x=((-b)-(sqrt(delta)))/((dois)*(a)); y=((-b)+(sqrt(delta)))/((dois)*(a)); printf("O valor das raízes são %.2f e %.2f", x,y); } else if(delta<0) { printf("Não há como encontrar raízes, pois o valor do discriminate é negativo"); } } COMO QUE FARIA O PROGRAMA USANDO "PIPES" ESSA É A MINHA DÚVIDA.
  5. Dada uma pilha de n cartas numeradas de 1 an com a carta 1 no topo e a carta n na parte inferior. A seguinte operação é realizada enquanto você tiver 2 ou mais cartas na pilha. Descarte a carta do topo e mova a próxima carta (a que está no topo) para o fundo da pilha. Sua tarefa é encontrar a sequência de cartas descartadas e a última carta restante. Cada linha de entrada (exceto a última) contém um número n ≤ 50. A última linha contém 0 e não deve ser processada. Cada número de entrada produz duas linhas de saída. A primeira linha mostra a sequência de cartas descartadas e a segunda linha mostra as cartas restantes. Entrada A entrada consiste em um número indeterminado de linhas, cada uma contendo um valor de 1 a 50. A última linha contém o valor 0. Saída Para cada caso de teste, imprima duas linhas. A primeira linha apresenta a sequência de cartas descartadas, cada uma separada por uma vírgula e um espaço. A segunda linha mostra o número do cartão restante. Nenhuma linha tem espaços extras no início ou no final. Veja o exemplo para verificar o formato esperado. Exemplo de entrada Exemplo de saída 7 19 10 6 0 Cartões descartados: 1, 3, 5, 7, 4, 2 Cartão restante: 6 Cartões descartados: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 4, 8, 12, 16, 2, 10, 18, 14 Cartão restante: 6 Cartões descartados: 1, 3, 5, 7, 9, 2, 6, 10, 8 Cartão restante: 4 Cartões descartados: 1, 3, 5, 2, 6 Cartão restante: 4 #include struct Pilha { int topo; /* posição elemento topo */ int capa; float *pElem; }; void criarpilha( struct Pilha *p, int c ){ p->topo = -1; p->capa = c; p->pElem = (float*) malloc (c * sizeof(float)); } int estavazia ( struct Pilha *p ){ if( p-> topo == -1 ) return 1; // true else return 0; // false } int estacheia ( struct Pilha *p ){ if (p->topo == p->capa - 1) return 1; else return 0; } void empilhar ( struct Pilha *p, float v){ p->topo++; p->pElem [p->topo] = v; } float desempilhar ( struct Pilha *p ){ float aux = p->pElem [p->topo]; p->topo--; return aux; } float retornatopo ( struct Pilha *p ){ return p->pElem [p->topo]; } int main(){ struct Pilha minhapilha; int capacidade, op; float valor; printf( "\nCapacidade da pilha? " ); scanf( "%d", &capacidade ); criarpilha (&minhapilha, capacidade); while( 1 ){ /* loop infinito */ printf("\n1- empilhar (push)\n"); printf("2- desempilhar (POP)\n"); printf("3- Mostrar o topo \n"); printf("4- sair\n"); printf("\nopcao? "); scanf("%d", &op); switch (op){ case 1: //push if( estacheia( &minhapilha ) == 1 ) printf("\nPILHA CHEIA! \n"); else { printf("\nVALOR? "); scanf("%f", &valor); empilhar (&minhapilha, valor); } break; case 2: //pop if ( estavazia(&minhapilha) == 1 ) printf( "\nPILHA VAZIA! \n" ); else{ valor = desempilhar (&minhapilha); printf ( "\n%.1f DESEMPILHADO!\n", valor ); } break; case 3: // mostrar o topo if ( estavazia (&minhapilha) == 1 ) printf( "\nPILHA VAZIA!\n" ); else { valor = retornatopo (&minhapilha); printf ( "\nTOPO: %.1f\n", valor ); } break; case 4: exit(0); default: printf( "\nOPCAO INVALIDA! \n" ); } } }
  6. Posso adivinhar a estrutura de dados! Existe uma estrutura de dados do tipo bolsa, suportando duas operações: 1 x Jogue um elemento x no saco. dois Retire um elemento do saco. Dada uma sequência de operações que retornam valores, você adivinhará a estrutura de dados. É uma pilha (último a entrar, primeiro a sair), uma fila (primeiro a entrar, primeiro a sair), uma fila prioritária (sempre retire os grandes elementos primeiro) ou qualquer outra coisa que você dificilmente possa imaginar! Entrada Existem muitos casos de teste. Cada caso de teste começa com a linha contando um único inteiro n (1 <= n <= 1000). Cada uma das n linhas a seguir é um comando do tipo 1 ou um inteiro 2, seguido por um inteiro x. Isso significa que após executar um comando do tipo 2, obtemos um elemento x sem erros. O valor de x é sempre um número inteiro, positivo e não maior que 100. O final da entrada é determinado pelo final do arquivo (EOF). O tamanho do arquivo de entrada não excede 1 MB. Saída Para cada caso de teste, mostre um dos seguintes: pilha É definitivamente uma pilha. fila Definitivamente é uma fila. Fila de prioridade Definitivamente, é uma fila prioritária. impossível Não pode ser uma pilha, uma fila ou uma fila de prioridade. não tenho certeza Pode ser mais de uma das três estruturas mencionadas acima. while True: try: x = int(input()) except: break ts=0 s = [] q = [] porque = [] stack=1 queue=1 prioriq=1 for _ in range(x): opc, n = input().split() if int(opc) == 1: s.append(int(n)) ts+=1 q.append(int(n)) porque.append(int(n)) porque.sort(reverse=True) else: if s[ts-1] == int(n) and stack == 1: ts-=1 del s[ts] else: stack=0 if q[0] == int(n) and queue == 1: del q[0] else: queue=0 if porque[0] == int(n) and prioriq == 1: del porque[0] else: prioriq=0 if (stack == 1 and queue == 1) or (stack == 1 and prioriq == 1) or (queue == 1 and prioriq == 1): print("not sure") elif stack: print("stack") elif queue: print("queue") elif prioriq: print("priority queue") else: print("impossible")
  7. Como faço na linguagem C a solução desse problema aqui.... Na escola onde você estuda, a hora do recreio é a mais aguardada pela grande maioria dos alunos. Não só porque as vezes as aulas são cansativas, mas sim porque a merenda servida é muito boa, preparada por um chefe italiano muito caprichoso. Quando bate o sinal para a hora do recreio, todos os alunos saem correndo da sua sala para chegar o mais cedo possível na cantina, tanta é a vontade de comer. Um de seus professores notou, porém, que havia ali uma oportunidade. Utilizando um sistema de recompensa, seu professor de matemática disse que a ordem da fila para se servir será dada não pela ordem de chegada, mas sim pela soma das notas obtidas em sala de aula. Assim, aqueles com maior nota poderão se servir antes daqueles que tem menor nota. Sua tarefa é simples: dada a ordem de chegada dos alunos na cantina, e as suas respectivas notas na matéria de matemática, reordene a fila de acordo com as notas de matemática, e diga quantos alunos não precisaram trocar de lugar nessa reordenação. Entrada A primeira linha contém um inteiro N, indicando o número de casos de teste a seguir. Cada caso de teste inicia com um inteiro M (1 ≤ M ≤ 1000), indicando o número de alunos. Em seguida haverá M inteiros distintos Pi (1 ≤ Pi ≤ 1000), onde o i-ésimo inteiro indica a nota do i-ésimo aluno. Os inteiros acima são dados em ordem de chegada, ou seja, o primeiro inteiro diz respeito ao primeiro aluno a chegar na fila, o segundo inteiro diz respeito ao segundo aluno, e assim sucessivamente. Saída Para cada caso de teste imprima uma linha, contendo um inteiro, indicando o número de alunos que não precisaram trocar de lugar mesmo após a fila ser reordenada. Exemplo de Entrada Exemplo de Saída 3 3 100 80 90 4 100 120 30 50 4 100 90 30 25 1 0 4
  8. Faça um programa que realiza o cadastro de contas bancárias com as seguintes informações: número da conta, nome do cliente e saldo. O banco permite o cadastramento de apenas quinze contas e não pode haver mais de uma conta com o mesmo número. Crie o menu de opções a seguir: 1 Cadastrar contas. 2 Visualizar todas as contas de determinado cliente. 3 Excluir a conta com menor saldo (Suponha a não existência de saldos iguais). 4 Sair. Código em C :
  9. Implemente, utilizando lista encadeada, uma fila de inteiros. Insere no fim e remove no início da lista. #include <stdio.h> #include <stdlib.h> struct no { int dado; struct no *prox; }; void imprimir(struct no *prim) { struct no *atual = prim; system("clear"); printf("\nLista: "); while (atual != NULL) { printf("%d -> ", atual->dado); atual = atual->prox; } printf("NULL"); } struct no *insere_inicio(struct no *prim) { int num; printf("\nInsira o elemento no inicio da lista: "); scanf("%d", &num); struct no *novo = (struct no *) malloc(sizeof(struct no *)); novo->dado = num; novo->prox = prim; return novo; } struct no *insere_final(struct no *prim) { int num; printf("Insira o elemento no final da lista: "); scanf("%d", &num); struct no *novo = (struct no *) malloc(sizeof(struct no *)); novo->dado = num; novo->prox = NULL; if (prim == NULL) return novo; struct no *ultimo = prim; while (ultimo->prox != NULL) { ultimo = ultimo->prox; } ultimo->prox = novo; return prim; } struct no *remove_fim(struct no *prim) { if (prim == NULL) { printf("Lista Vazia!"); return NULL; } if (prim->prox == NULL) { printf("Removido do final!"); free(prim); return NULL; } struct no *penultimo = prim; struct no *ultimo = prim->prox; while (ultimo->prox != NULL) { penultimo = ultimo; ultimo = ultimo->prox; } penultimo->prox = NULL; free(ultimo); printf("Removido do final!"); return prim; } int main() { int op; struct no *prim = NULL; do { system("clear"); printf("\n<1> - Inserir no inicio"); printf("\n<2> - Inserir no final"); printf("\n<3> - Remover no inicio"); printf("\n<4> - Remover no final"); printf("\n<5> - Imprimir"); printf("\n<10> - Sair do programa\n\n"); printf("Digite sua opcao: "); scanf("%d", &op); switch (op) { case 1: prim = insere_inicio(prim); break; case 2: prim = insere_final(prim); break; case 3: prim = remove_inicio(prim); break; case 4: prim = remove_fim(prim); break; case 5: imprimir(prim); break; } } while (op != 10); return 0; }
  10. #include <stdio.h> #include <stdlib.h> main() { //Definição de variaveis int i, j, linhaA, colunaA, linhaB, colunaB, x; //Entrada de dados printf("\n Informe a quntidade de linhas da matriz A : "); scanf("%d",&linhaA); printf("\n Informe a quantidade de colunas da matriz A : "); scanf("%d",&colunaA); printf("\n Informe a quntidade de linhas da matriz B : "); scanf("%d",&linhaB); printf("\n Informe a quantidade de colunas da matriz B : "); scanf("%d",&colunaB); float matrizA[linhaA][colunaA], matrizB[linhaB][colunaB], matrizC[linhaA][colunaB], aux = 0; if(colunaA == linhaB) { for(i = 0; i < linhaA; i++) { for(j = 0; j < colunaA; j++) { printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da Matriz A: ", i+1, 167, j+1, 167); scanf("%f", &matrizA[i][j]); } printf("\n"); } for(i = 0; i < linhaB; i++) { for(j = 0; j < colunaB; j++) { printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da 2%c Matriz B: ", i+1, 167, j+1, 167, 167); scanf("%f", &matrizB[i][j]); } printf("\n"); } // Imprime as matrizes definidas printf("---------------------------- 1 - Matriz Gerada ---------------------------------\n\n"); for(i = 0; i < linhaA; i++) { for(j = 0; j < colunaA; j++) { printf("%6.f", matrizA[i][j]); } printf("\n\n"); } printf("---------------------------- 2 - Matriz Gerada ---------------------------------\n\n"); for(i = 0; i < linhaB; i++) { for(j = 0; j < colunaB; j++) { printf("%6.f", matrizB[i][j]); } printf("\n\n"); } printf("---------------------------- 3 - Matriz Gerada ---------------------------------\n\n"); //Processamento e saida em tela = PRODUTO DAS MATRIZES for(i = 0; i < linhaA; i++) { for(j = 0; j < colunaB; j++) { matrizC[i][j] = 0; for(x = 0; x < linhaB; x++) { aux += matrizA[i][x] * matrizB[x][j]; } matrizC[i][j] = aux; aux = 0; } } for(i = 0; i < linhaA; i++) { for(j = 0; j < colunaB; j++) { printf("%6.f", matrizC[i][j]); } printf("\n\n"); } printf("\n\n"); } else { printf("\n\n Nao ha com multiplicar as matrizes dadas "); } } COMO SERIA NA ALOCAÇÃO DINAMICA USANDO A FUNÇÃO DOUBLE?
  11. Crie um programa que multiplica duas matrizes quadradas do tipo double lidas do teclado. Seu programa deve ler a dimensão n da matriz, em seguida alocar dinamicamente duas matrizes n × n. Depois ler os dados das duas matrizes e imprimir a matriz resultante da multiplicação destas. #include<stdio.h> #include<stdlib.h> int main () { int matriz[3][3],i, j; printf ("\nDigite valor para os elementos da matriz\n\n"); for ( i=0; i<3; i++ ) for ( j=0; j<3; j++ ) { printf ("\nElemento[%d][%d] = ", i, j); scanf ("%d", &matriz[ i ][ j ]); } printf("\n\n******************* Saida de Dados ********************* \n\n"); for ( i=0; i<3; i++ ) for ( j=0; j<3; j++ ) { printf ("\nElemento[%d][%d] = %d\n", i, j,matriz[ i ][ j ]); } getch(); return(0); }
  12. Escreva um programa que lê todos os elementos de uma matriz N × N e mostra a matriz e a sua transposta na tela. Obs: O tamanho (N) da matriz deve ser lido do teclado e sua alocação deve ser dinâmica através da função malloc. #include <stdio.h> #include <stdlib.h> int main() { // alocando matriz int n = 3, m = 2; int **matriz = malloc(n * sizeof(int*)); for (int i = 0; i < n; i++) matriz[i] = malloc(m * sizeof(int)); // código omitido: lê os dados de matriz int **transp = transposta(matriz, n, m); // código omitido: imprime ou faz algo com transp // libera a memória alocada for(int i = 0; i < n; i++) free(matriz[i]); for (int j = 0; j < m; j++) free(transp[j]); free(matriz); free(transp); return 0; }
  13. a ideia do programa ficou desse jeito, mas ainda esta com problemas, nao estou tendo sucesso. #include <stdio.h> #include <string.h> #define TAM 5 //tamanho do vetor usado como cadastro void imprimeArquivo(){ Aluno cadastro[5]; FILE *arq = fopen(nomeArq, "r+b"); //Note que usamos r e n~ao w int i; if(arq == NULL){ printf("Erro: Imprime Arquivo!\n"); return; } fread(cadastro, sizeof(Aluno), TAM, arq); printf(" ---- Imprimindo Dados ----\n"); for(i=0; i<TAM; i++){ printf("nome: %s, rga: %s, nota:f \n", cadastro[i].nome, cadastro[i].rga, cadastro[i].nota); } printf("\n"); fclose(arq); }
  14. (Peço ajuda(ideia) para desenvolver o seguinte exercicio na linguagem C.) Escreva um programa que armazene em um arquivo o RGA, Nome e Nota de 5 alunos e, apos a escrita, escreva o RGA, Nome e Nota dos alunos que possuem Nota acima de 7. *Escreva o programa utilizando arquivo binario. *Faça uma segunda solução utilizando arquivo texto.
  15. Vamos programar a inteligência de um monstro NPC em um jogo. Para isso vamos utilizar um Perceptron simples. A base abaixo servirá para o aprendizado do monstro. A base contém as características do ambiente em que este agente se encontra (distância do jogador, força do jogador e vida do jogador), além da ação que o monstro deve fazer. DistânciaForçaVidaAção PertoMaiorMenorAtacar LongeSemelhanteMenorAtacar PertoMenorMaiorAtacar PertoMaiorMaiorFugir LongeMaiorMenorFugir LongeSemelhanteMaiorFugir PertoSemelhanteMaiorFugir LongeMenorMenorAtacar Não há todas as combinações nessa base de treinamento, então para isso a rede neural tem que generalizar as informações, aprendendo o contexto e sabendo agir mesmo quando encontrar uma solução que ela não viu ainda. Como o monstro deve agir se o jogador estiver perto, com força menor e vida menor? Mostre o procedimento de aprendizado deste Perceptron assim como a ação a ser desempenhada pelo monstro. Dica: codifique a base de treinamento em números (-1, 0 ou 1).
  16. *Escreva um programa que compare dois arquivos especificados pelo usuário e imprima sempre que os caracteres dos dois coincidirem (na mesma posição). #include <stdio.h> #include <stdlib.h> void main() { FILE *p; char c, str[30]; int i = 0; /* Le um nome para o arquivo a ser aberto: */ printf("\n\n Entre com um nome para o arquivo:\n"); gets(str); /* Abre para leitura */ if (!(p = fopen(str,"r"))) /* Caso ocorra algum erro na abertura do arquivo..*/ { /* o programa aborta automaticamente */ printf("Erro! Impossivel abrir o arquivo!\n"); exit(1); } while (!feof(p)) /* Enquanto não se chegar no final do arquivo */ { c = getc(p); /* Le um caracter no arquivo */ i++; /* E incrementa i */ } fclose(p); /* Fecha o arquivo */ printf("\nO numero de caracteres do arquivo %s e igual a %d ", str, i); }
  17. A pergunta para fazer esse programa seria essa aqui: "Escreva um programa que compare dois arquivos especificados pelo usuário e imprima sempre que os caracteres dos dois coincidirem (na mesma posição).
  18. Eu debuguei até nesse site aqui https://www.onlinegdb.com/ e aconteceu a mesma coisa.
  19. O meu compilador não roda o programa. (CODBLOCKS versão 20.03 para Windows) Informe o nome do primeiro arquivo: 1 Nao e possivel abrir o arquivo especificado! Informe o nome do primeiro arquivo: arquivocomp_2014 Nao e possivel abrir o arquivo especificado! Informe o nome do primeiro arquivo: f1 Nao e possivel abrir o arquivo especificado! Informe o nome do primeiro arquivo: r Nao e possivel abrir o arquivo especificado! Informe o nome do primeiro arquivo: c2 Nao e possivel abrir o arquivo especificado! Informe o nome do primeiro arquivo:
  20. Ao tentar compilador o arquivo, ao digitar os dados o primeiro arquivo não valida. #include <stdio.h> int main() { char f1[256], f2[256]; FILE *fp1, *fp2; int c1, c2; /* abrindo os dois arquivos para leitura */ do { printf("Informe o nome do primeiro arquivo: "); gets(f1); fp1=fopen(f1, "r"); if (fp1==NULL) puts("\nNao e possivel abrir o arquivo especificado!"); } while (fp1==NULL); do { printf("Informe o nome do segundo arquivo: "); gets(f2); fp2=fopen(f2, "r"); if (fp2==NULL) puts("\nNao e possivel abrir o arquivo especificado!");} while (fp2==NULL); fseek(fp1, 0, SEEK_SET); fseek(fp2, 0, SEEK_SET); while (1) { c1=fgetc(fp1); c2=fgetc(fp2); if (feof(fp1) || feof(fp2)) break; if (c1==c2) printf("%ld - %c \n", ftell(fp1), c1); } }
  21. Tentei fazer as alterações mas ainda persiste o erro. Realmente estou queimando fosfato aqui mas não consigo. #include <stdio.h> #include <stdlib.h> int main () { file * ptr; char namefile [20]; int total = 0 scanf("%s", namefile); ptr = fopen (namefile, "rt"); if (ptr == NULL) { printf("Arquivo não existe"); saída (0); } while(getc (ptr)! = EOF) { total ++; } printf("%d", total); return 0; } retificando o código. #include <stdio.h> #include <stdlib.h> int main () { FILE * ptr; char namefile [20]; int total = 0 scanf("%s", namefile); ptr = fopen (namefile, "rt"); if (ptr == NULL) { printf("Arquivo não existe"); saída (0); } while(getc (ptr)! = EOF) { total ++; } printf("%d", total); return 0; }
  22. O programa pede que seja contado o número de caracteres do arquivo texto e que imprima essa contagem na tela. Fiz o programa mas ele está dando erro na linha "Arquivo * ptr;". #include <stdio.h> #include <stdlib.h> int main () { Arquivo * ptr; char nomeArquivo [20]; total int = 0; scanf ("% s", nomeArquivo); ptr = fopen (nomeArquivo, "rt"); if (ptr == NULL) { printf ("Arquivo não existe."); saída (1); } while (getc (ptr)! = EOF) { total ++; } printf ("% d", total); return 0; }
  23. Boa noite. Meu notebook esta muito lento. De uns tempos pra cá ao iniciar ele demora uns 10 minutos pra carrega-lo. Ao clicar no navegador da internet demora pra abrí-lo. modelo do notebook: SAMSUNG EXPERT, INTEL CORE i5 7ª GEN, MEMORIA 4GB, HD 1 TB. Qual dica seria melhor pra dar um upgrade nele?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!