Estou fazendo um trabalho para a faculdade criando uma estrutura de cadastro de uma corrida. Já consegui fazer grande parte mas não consigo resolver esses pontos. Alguém saberia resolver?
Olá pessoal, parece que o meu Photoshop atualizou aqui, pois apareceu algumas ferramentas que eu não tinha visto, e também sumiu o ponteiro do seletor , alguém pode me ajudar
#include <iostream>
#include <cstdlib>
using namespace std;
struct Page {
int a;
Page* b;
};
int main(int argc, char *argv[]) {
int size = 5;
Page* p = (Page*) malloc(sizeof(Page));
p->a = 5;
p->b = (Page*) malloc(sizeof(Page) * size);
for (int i = 0; i < size; i++) {
p->b[i] = NULL;
}
cout << p->b[3] << endl;
return 0;
}
A ideia era criar uma página onde dentro teríamos um array de páginas inicialmente nulas. Mas por algum motivo eu não estou conseguindo criar o array interno. Pois quando tento instanciar o valor nulo para as células do array, o compilador informa que não é um array e não pode acessar.
Antes de qualquer coisa, realmente necessito que seja uma alocação dinâmica.
Galera bom dia , estou com uma duvida como acesso a chave dentro dessa estrutura, ao meu ver seria assim ex: (*raiz)->reg.chave = 3 , mais nao estou conseguindo acessar a variavel chave.
Então galera, eu tô numa dúvida extrema com o código abaixo. Eu começei a estudar ponteiros em C faz alguns dias e eu acredito que seja a solução pro meu problema, mas não sei como tratar o código.
O problema é o seguinte. Na função multiplicarMatrizes() eu não consigo acessar a matriz valoresC obviamente pq foi declarada dentro do main. Mas o problema é que eu não posso declara-la 'globalmente' fora do main devido ao fato de que eu preciso ler o numero de linhas/colunas de cada matriz no inicio do programa (não posso declara-las no código com um numero constante de linhas ou colunas).
Código:
#include<stdio.h>
#include<stdlib.h>
#define G 5
void lerMatrizes(int matrizX[][G], int matrizY[][G]);
void multiplicaMatrizes(int A[][G], int B[][G]);
int linhasA, colunasA, linhasB, colunasB;
int main() {
int i, j;
printf("\nInforme a quantidade de linhas da matriz A : ");
scanf("%d",&linhasA);
printf("\nInforme a quantidade de colunas da matriz A : ");
scanf("%d",&colunasA);
printf("\nInforme a quantidade de linhas da matriz B : ");
scanf("%d",&linhasB);
printf("\nInforme a quantidade de colunas da matriz B : ");
scanf("%d",&colunasB);
int valoresA[linhasA][colunasA], valoresB[linhasB][colunasB], valoresC[colunasA][linhasB];
lerMatrizes(valoresA, valoresB);
if (colunasA == linhasB) {
multiplicaMatrizes(valoresA, valoresB);
} else {
printf("\n\nNão é possivel multiplicar matrizes neste formato. O numero de colunasA tem que ser igual linhasB");
}
return 0;
}
void lerMatrizes(int matrizX[][G], int matrizY[][G]) {
int i, j;
// Gera Valores p Matriz1
for(i=0; i<linhasA; i++) {
for(j=0; j<colunasA; j++) {
matrizX[i][j] = i+1 * j+1;
}
}
// Gera Valores p Matriz2
for(i=0; i<linhasB; i++) {
for(j=0; j<colunasB; j++) {
matrizY[i][j] = i+1 * j+1;
}
}
}
void multiplicaMatrizes(int A[][G], int B[][G]) {
int i, j, k, temp=0;
for(i=0; i<colunasA; i++) {
for(j=0; j<linhasB; j++) {
valoresC[i][j]=0;
for(k=0; k<G; k++)
temp += A[i][k] * B[k][j];
valoresC[i][j] = temp;
temp=0;
}
}
}
Eu fiz o código usando um numero constante de linhas/colunas, aí qndo fui altera-lo travei nesta parte aí. Não consegui também passar a matriz por parâmetro, a solução seria um ponteiro?