Итак, мне нужно создать программу, которая, когда пользователь вставляет таблицу, должна отправлять в вывод только границу таблицы.Я использовал матрицу для ввода, но когда пользователь заканчивает ввод, программа останавливается, и я получаю ошибку сегментации.
#include <stdio.h>
#define VAL 50
void inputMatrice(int m[VAL][VAL], int *ncol, int *nrig);
void bordi(int m[][VAL], int ncol, int nrig, int v[], int *nv);
void outputVettore(int v[], int nv);
int main(){
int m[VAL][VAL], v[VAL], *ncol, *nrig, nc, nr, nv;
ncol = &nc;
nrig = &nr;
inputMatrice(m, ncol, nrig);
nv=0;
printf("ciao");
bordi(m, nc, nr, v, &nv);
outputVettore(v, nv);
}
/*Funzione per input matrici*/
void inputMatrice(int m[VAL][VAL], int *ncol, int *nrig){
int i=0, j=0;
printf("Inserisci il numero di righe: ");
scanf("%d", nrig);
printf("Inserisci il numero di colonne: ");
scanf("%d", ncol);
for(i=0;i<*nrig;i++){
for(j=0;j<*ncol;j++){
printf("Inserisci i valori della tabella nella posizione %d,%d: ", i+1, j+1);
scanf("%d", &m[i][j]);
}
}
}
void bordi(int m[][VAL], int ncol, int nrig, int v[], int *nv){
int i=0, j=0, k=0;
for(j=1; j<ncol; j++){
v[k]=m[i][j];
*nv++;
}
for(i=1;i<nrig;i++){
v[k] = m[i][j];
*nv++;
}
for(j=(ncol-1); j>0; j++){
v[k]=m[i][j];
*nv++;
}
for(i=(nrig-1); j>0; i++){
v[k]=m[i][j];
*nv++;
}
}
void outputVettore(int v[], int nv){
int i=0;
for(i=0;i<nv;i++){
printf("|%d|", v[i]);
}
}
Извините за итальянский вывод и за плохой английский.