1
resposta

Sphre Judge -Par ímpar

Peguei os problemas sugeridos para resolver. Tentei fazer tudo em C msm e to enfrento alguns problemas para pegar os Inputs.Me retorna segmentation fault no terminal.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>


int main(int argc, char const *argv[])
{    

    int numPartidas = 1;
    int contaRodada = 1;
    int contaColunas = 0;
    char** nomeJogadores;
    int** numeroDedos; 

    nomeJogadores =(char **) malloc( 2 * sizeof(char *));

    numeroDedos =(int **)malloc(sizeof(int *));
    numeroDedos[contaColunas] = (int*)malloc(3 * sizeof(int));

    while (numPartidas != 0)
    {
        scanf("%d",&numPartidas);
        if(numPartidas == 0) break;



        //coluna da matriz de numeros


        nomeJogadores[contaColunas] = (char *)malloc(10 * sizeof(char));        
        scanf("%s",nomeJogadores[contaColunas]);
        printf("%s\n",nomeJogadores[contaColunas]);
        contaColunas++;

        nomeJogadores[contaColunas] = (char *) malloc(10 * sizeof(char));        
        scanf("%s",nomeJogadores[contaColunas]);
        contaColunas++;

        for (int i = 0; i < numPartidas; i++)
        {
            numeroDedos[contaColunas][0] = numPartidas;
            scanf("%d %d",&numeroDedos[contaColunas][1],&numeroDedos[contaColunas][2]);            
        }




        nomeJogadores = (char **)realloc( nomeJogadores,2 * contaRodada * sizeof(char *));
        numeroDedos =(int **)realloc(numeroDedos, contaRodada *sizeof(int *) );
        contaRodada++;
    }
    for (int i = 0; i < contaRodada - 1 ; i++)
    {

        printf("{ %s }\n",nomeJogadores[i]);
        /* code */
    }
    for (int i = 0; i < contaRodada - 1; i++)
    {

        for(int j =0 ;j<3;j++){
            printf("{%d",numeroDedos[i][j]);
            printf(",%d",numeroDedos[i][j+1]);
            printf("%d,}\n",numeroDedos[i][j+2]);
        }
        /* code */
    }


    /* code */
    return 0;
}

Resolvi guardar todos os valores de nomes do desafio em um array de strings. Como o primeiro sempre é par, todo índice ímpar o valor seria par então ficaria tranquilo de de percorrer a matriz. Como pode ver dentro do while, antes de capturar a string, eu aloco a memória da string para as 2 linhas da matriz alocadas antes do laço. Para a primeira linha da matriz está tudo funcionando perfeitamente.Ja na segunda esta me retornando segmentation fault no terminal. Mesmo tendo alocaodo o ponteiro de ponteiro multiplicando por 2 não consigo acessar o índice 1. O zero vai tranquilamente, mandei printar pra ver se tava indo e ta tudo ok.

nomeJogadores =(char **) malloc( 2 * sizeof(char *));
/////////////////////////////////////////////////////////////
//quando acesso o índice para alocar memória para a string  da ok. 
//Mas quando passo a referência para o scanf do índice 1 da pau.
/////////////////////////////////////////////////////////
nomeJogadores[1] = (char *) malloc(10 * sizeof(char)); /       
 scanf("%s",nomeJogadores[1]);                        /    
                                                    /
////////////////////////////////////////////////////
1 resposta
O post foi fechado por inatividade. Para continuar o assunto, recomendamos criar um novo tópico. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software