Ir ao conteúdo
  • Cadastre-se

Estudante0123

Membro Pleno
  • Posts

    44
  • Cadastrado em

  • Última visita

posts postados por Estudante0123

  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. 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);}

     

  4. 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;
    }

     

  5. 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?

  6. 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++;
            }
        }

     

  7. 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.

  8. #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

  9. 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

  10. 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.

  11. 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)

    • Obrigado 1
  12. 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

     

     

     

  13. 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;
    }

     

    • Obrigado 1
  14. 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

     

    • Curtir 1
  15. @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 :)

    • Curtir 2
  16. 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);
        }
    
    }

     

  17. 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;
    }

     

    • Amei 1
  18. 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!