Ir ao conteúdo
  • Cadastre-se

Estudante0123

Membro Pleno
  • Posts

    44
  • Cadastrado em

  • Última visita

Tudo que Estudante0123 postou

  1. Pensei em fazer uma busca pela matriz, quando encontrar um 0 ir verificando aos lados ate quando tem o 0. Depois voltar e ao primeiro zero encontrado e ir verificando em baixo. if (m[i][j] == 0){ //encontrou um 0 achou++; while ((j+1 < n_cols && m[i][j+1] == 0) || (i+1 < n_rows && m[i+1][j] == 0)){ //se houver 0 adjacente while (m[i][j+1] == 0 && j+1 < n_rows){ //verificando 0 ao lado achou ++; printf ("Primerio while m[%d] [%d]\n", i, j); i++; int aux_j = j; while (aux_j < n_cols && m[i][aux_j ] == 0) { achou ++; printf ("Segundo while m[%d] [%d]\n", i, aux_j); aux_j++; } //while } //while } // while 1 adjacente } //if encontrou 1 Mas essa linha ainda tem muitos furos. Um esboço do que consegui, onde os printfs são apenas para me localizar. Nesse caso, estou tentando primeiro fazer a logica de reconhecer os conjuntos
  2. Ola, tenho uma matriz bidemensional, e quero saber quantos conjuntos de elementos adjacentes (em cima, baixo e lados) iguais a zero eu tenho nela. Exe 1 2 3 0 0 0 4 5 6 0 1 1 1 3 4 5 6 7 0 0 1 1 2 3 Nesse caso tenho dois conjuntos. Estou com dificuldades em pensar na funcao para fazer isso, pensei em faze la ler a matriz e quando encontrar um 0 entrar em uma condicao, mas não tenho muita mais nocao de como prosseguir
  3. @MB_ ah, sim, perdão. É de n até 0 e depois de 0 até n, sendo a saída da seguinte forma: n(n − 1). . . 00 . . .(n − 2)(n − 1)n Infelizmente não tenho mais o enunciado, mas acho que agora está tudo certo
  4. Tenho uma duvida em um exercicio de recursividade. Ele pede para dado um numero n>0, imprimir n-1 ate 0 e depois ir de 0 ate n. Por exemplo n=5 deve retornar 543210012345. Consegui fazer com que imprima ate 543210, mas não sei mais como prosseguir. A baixo parte da funcao que eu consegui ate agora if (n > 0){ printf ("%d", n); return recurssiva(n-1); } else if (n == 0){ printf ("%d", n);}
  5. Ola, gostaria de saber como faco para a partir de double a e double b, tranforma- los em uma string ( a, b) em c++, por favor
  6. Estou iniciando os estudos com funções que modificam matrizes. Construí o seguinte código, mas ao compilar, ele trava, e não estou conseguindo identificar o problema, e nem se teria outra forma mais fácil de faze-lo #include <stdio.h> int obter_valor (int valor) { scanf ("%d", &valor); return valor; } void criar_matriz (int linha, int coluna, int **pont){ for (int i = 0; i < linha; i++){ for (int j = 0; j < coluna; j++){ scanf("%d", &pont[i][j]); } } } void escrever_matriz (int linha, int coluna, int **p) { for (int i = 0; i < linha; i++) { for (int j = 0; j < coluna; j++) { printf ("[%d] [%d] = [%d]\n",i,j, p[i][j]); } } } int main () { int linha = obter_valor (linha); int coluna = obter_valor (coluna); int matriz [linha] [coluna]; int **ponteiro = matriz; criar_matriz (linha, coluna, ponteiro); escrever_matriz (linha, coluna, ponteiro); return 0; }
  7. Tenho um programa que, dado um vetor no main, ele precisa ter uma funcao para criar esse vetor. Posteriormente esse vetor vai ser utilizado e o seu tamanho tambem, por isso é importante guarda-los. Pensei no seguinte esquema void vetor (int *ponteiro, int *pont){ int tamanho; scanf ("%d", &tamanho); *pont = tamanho; for (int i =0; i < tamanho; i++){ scanf ("%d", &ponteiro[i]); } } int main (){ int vet_1[50]; int tamanho_1; int *pont_tamanho_1; int *pont_1 = vet_1; funcao_criar_vetor(pont_1, pont_tamanho_1); Mas ao receber o primeiro numero, que seria o tamanho, ele trava. Algum palpite de qual a solucao?
  8. Tenho dois vetores, em ordem crescente cada um, e preciso coloca-los em um terceiro vetor, que ao final esteja tambem em ordenado em ordem crescente. Fiz essa solucao abaixo, mas em alguns casos ela falha, e em outros funciona. A falha vem quando sao dois vetores de iguais tamanho, mas o primeiro e todo composto de um numero e o segundo de outros numeros. Ex vet_1 [2,2,2] e vet_2 [1,4,5] da erro for (int i =0; i < tamanho_3; i++){ if (vet_1 [j] < vet_2 [k]){ vet_3[i] = vet_1 [j]; j++; } else { vet_3[i]= vet_2[k]; k++; } }
  9. Ola, tenho uma lista para calculo. Toda vez que aparece um numero Z inteiro, ele é seguido por Z (x,y) reais. Para cada Z ha um jeito de manipular os pares (x,y), mas não vem ao caso. Pensei em fazer um laço de repeticão para entrar em cada possibilidade de Z, mas não sei ao certo como fazer isso. Posso fazer if ( z == int) ? Um exemplo de entrada seria 4 3 5 4.5 7 5 6 9.1 2.3 2 2.4 6 4 7.2 No caso, ele teria que identificar que os quatro pares depois do 4 seriam um caso, e os dois apos o 2 outro caso.
  10. Gostaria de saber como eu faço para receber e guardar uma sequencia que eu não sei o comprimento. O exercicio pede o seguinte: "Calcular a apresentar quantos numeros existem em uma sequencia. A priori não se sabe o comprimento nem existe um valor sentinela"
  11. #include <stdio.h> int main (){ // Receber texto char texto , caractere; int i = 0; do { caractere = getchar (); texto = caractere; i++; } while ( caractere != "13") //imprimir texto printf ("%s", texto); retur 0; } O exercicio pede para que o programa suporte diferentes tipos de strings, com tamanhos diferentes. Modifiquei a principio e consegui chegar até ai. Contudo os casos de testes utilizam textos com varias linhas ( os testes são inseridos utilizando ctrl v), então não posso colocar um while ( caractere != '\n') ; como limitador, mas também não sei como prosseguir
  12. Ainda sim não vai. Pensei em fazer da seguinte forma char texto , caractere; int i = 0; do { caractere = getchar (); texto[i] = caractere; i++; } while ( caractere != 13) ; Mas preciso fazer diferentes tipos de teste, com vetores de tamanhos diferentes, então não posso limitar ele. O que quero dizer é que tenho teste de texto [10], assim como text [100], e o programa deveria lidar bem com todos os teste
  13. @Leonardo0308 Fiz a modificação, mas ainda sim não deu certo
  14. Olá, estou fazendo em partes um codigo. A primeira parte deverá receber, pelo teclado, um texto. Pensei em fazer dessa forma mais simples: char texto; printf ("Insira seu texto: "); scanf ("%s", &texto); printf ("%s", texto); Mas só captura a primeira linha do texto, onde posso estar errando? Obrigado.
  15. Olá, quero saber como eu posso justificar uma linha em C, da seguinte forma: para cada linha, eu quero determinar uma justificativa, e se essa linha não tem o numero de caracteres suficiente para essa justificativa, o programa insere espaços entre as palavras. Exemplo: Justificativa=20 Hello World (antes, apenas 11 caracteres) Hello World (depois, contando com os espaçamentos, 20 caracteres)
  16. Estou treinando arquivos. Para ler um arquivo fiz o seguinte código: i = 1; while (!feof(arq)) { // Lê uma linha (inclusive com o '\n') fgets(Linha, 100, arq); // o 'fgets' lê até 99 caracteres ou até o '\n' printf("Linha %d : %s",i,Linha); i++; } Gostaria de saber como faço para contar quantas linhas tem esse arquivo e como dar printf em uma linha especifica, alguém poderia me explicar? Obrigado
  17. Olá, tenho uma atividade para fazer que pede o seguinte: criar um código que abra um arquivo fornecido pelo usuário, e que o usuário defina uma linha inicial e outra final para ser lida nesse arquivo. Ao final, devera ser apresentada essas linhas. Não sei como fazer tal coisa, o mais longe que cheguei foi esse esqueleto. Gostaria de uma ajuda no que estou errando. #include <stdio.h> #include <string.h> int main (){ FILE *arquivo; char nome[100]; int inicial = 0, fim = 0; fgets (nome, sizeof nome, stdin); arquivo = fopen (nome, "r"); printf ("linha inicial: "); scanf ("%i", &inicial); printf ("linha final: "); scanf ("%i", &fim); while (fgets(nome, sizeof nome, arquivo) != EOF ){ if (fgets (nome, sizeof nome, arquivo) == '\n'){ for (int i= inicial; i < fim; i++){ printf ("%s", nome); } } } return 0; }
  18. Estou querendo fazer um código que peça ao usuario um arquivo e uma palavra. A partir disso ele vai verificar e apresentar quantas vezes essa palavra foi apresentada. Mas estou travando na hora de ler o arquivo por palavras. A principio pensei em usar a função fgetc, mas ler caractere por #include <stdio.h> #include <string.h> int main (){ FILE *arquivo; char nome [100], palavra [100], aux; int cont = 0; printf("Digite o nome do arquivo: "); scanf ("%s", nome); arquivo = fopen (nome, "r"); printf ("Digite a palavra a ser pesquisada: "); scanf("%s", palavra); while ( (fgets (nome, sizeof nome, arquivo)) != NULL ) if (strcmp (palavra, nome) == 0) cont ++; printf ("A palavra apareceu %i vezes", palavra); return 0; } e não iria achar a palavra. Usei uma função fgets, mas acho que ela para na quebra de linha, e não estou sabendo o porque. Alguém poderia me ajudar? Obrigado
  19. @giu_d Estava esquecendo de especificar o tipo do arquivo. Funcionou, e corri os outros ponto levantados. Obrigado
  20. @giu_d Adorei sua explicação, mas mesmo assim o erro persiste: ao final cria um arquivo vazio
  21. @devair1010 Tentei fazer um laço de repetição mas ainda sim não funcionou. Estou errando no laço? // inserindo string no arquivo e fechando arquivo while (fgets (txt, sizeof txt, pont_arquivo) != NULL){ fprintf (pont_arquivo, "%s", txt); } fclose(pont_arquivo); adicionado 0 minutos depois @isrnick Entendi, super funcionou desse jeito, Obrigado
  22. OLá, estou tentando concatenar dois arquivos, arquivo1 e arquivo2, fornecidos pelo usuario, em um terceiro, arquivo3, criado automaticamente. Quando compila, chega a criar um novo arquivo3 mas não ha nada escrito nele. Onde posso estar errando? #include <stdio.h> #include <string.h> int main () { FILE *arquivo1; FILE *arquivo2; FILE *arquivo3; char nome1 [300], nome2 [300]; // abrindo arquivos printf ("Digite o nome do arquivo 1: "); scanf ("%s", &nome1); printf ("Digite nome do arquivo 2: "); scanf ("%s", &nome2); arquivo1 = fopen ("nome1", "r"); arquivo2 = fopen ("nome2", "r"); arquivo3 = fopen ("concatenado", "w"); // função para concatenar void concatenar ( FILE *base, FILE *copiado); //concatenado arquivo 1 e 3 concatenar (arquivo3, arquivo1); //concatenando 2 e 3 concatenar (arquivo3, arquivo2); //Fechando arquivos fclose (arquivo1); fclose (arquivo2); fclose (arquivo3); return 0; } void concatenar ( FILE *base, FILE *copiado) { char leitor [1000]; while (fgets (leitor, sizeof leitor, copiado) != NULL) { fputs (leitor, base); } }
  23. Fiz um codigo para criar um arquivo, logo apos abrir espaço para que o usuario escreva nele. Roda tudo certinho, mas quando abro o arquivo, só fica gravado a primeira palavra até o primeiro espaço, depois não há mais nada. Alguem pode me ajudar? Obrigado #include <stdio.h> #include <string.h> int main (){ // criando arquivo FILE *pont_arquivo; pont_arquivo = fopen ("arquivo.txt", "w"); //usuario cria o que vai escrever char txt [500]; printf ("Escreva no arquivo: "); scanf ("%s", &txt); // inserindo string no arquivo e fechando arquivo if (strcmp ("0", txt)) fprintf (pont_arquivo, "%s", txt); else printf ("Não funcionou"); fclose(pont_arquivo); return 0; }
  24. Estou treinando sobre arquivos, e queria um código que abrisse determinado arquivo de nome fornecido pelo usuário. Cheguei ao resultado abaixo, mas não esta funcionando apos pedir o nome do arquivo, ele fecha. Alguém poderia me ajudar, por favor? #include <stdio.h> #include <string.h> int main (){ FILE *arquivo; char nome_arquivo [200]; printf ("Digite o nome do arquivo:"); fgets (nome_arquivo, sizeof nome_arquivo, stdin); nome_arquivo [strlen (nome_arquivo) - 1] = 0; arquivo = fopen ("nome_arquivo","r"); while (fgets(nome_arquivo, sizeof nome_arquivo, arquivo) != NULL) printf ("%s", nome_arquivo); fclose(arquivo); return 0; }

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!