Объясните почему программа пропускает scanf, после задания первой матрицы - C (СИ)
Формулировка задачи:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main()
{
int N,M,F,D,i,j,k;
char p;
N = 10;
int **A = (int**)malloc(N * sizeof(int*));
int **B = (int**)malloc(N * sizeof(int*));
int **C = (int**)malloc(N * sizeof(int*));
for (i = 0; i < N; i++)
{
A[i] = (int*)malloc(N * sizeof(int));
B[i] = (int*)malloc(N * sizeof(int));
C[i] = (int*)malloc(N * sizeof(int));
}
printf("vvedite 4islo strok i stolbcov m1 : \n");
scanf("%d %d", &N,&M);
printf("zaplnite m1 : \n");
for (i = 0; i < N; i++)
for(j = 0; j < M; j++)
scanf("%d", &A[i][j]);
/* вот тут вся проблема!!! программа просто после задания данных для первой матрицы, не дает ввести значение для P
просто пропускает и выводит "Введите действие" и переходит сразу ко второй матрице... Объясните где ошибка
printf("vvedite deistvie \n");
scanf("%c",&p);
*/
printf("Vvedite 4islo strok i stolbcov m2:\n");
scanf("%d %d", &F, &D);
printf(" zapolnite m2 :\n");
for(i = 0; i < F; i++)
for(j = 0; j < D; j++)
scanf("%d", &B[i][j]);
/* если знак между двумя матрицами будет + то по моей логике должен выполнить сумму матриц
if ( p=='+')
{
for(i=0; i<N; i++)
{
for(j=0;j<M;j++)
C[i][j] += A[i][j]+B[i][j];
}
for (i=0;i<N;i++)
{
for (j=0;j<M;j++)
printf("%d ", C[i][j]);
printf("\n");
}
}
else
{
printf("dfgjdfjgdg");
}
*/
/* вид первой матрицы
printf("\n m1 \n");
for(i = 0; i < N; i++){
for(j = 0; j < M; j++)
printf("%d ", A[i][j]);
printf("\n");
}
*/
getchar();
return 0;
}Решение задачи: «Объясните почему программа пропускает scanf, после задания первой матрицы»
textual
Листинг программы
printf("vvedite 4islo strok i stolbcov m1 : \n");
scanf("%d %d", &N, &M);
printf("zaplnite m1 : \n");
for (i = 0; i < N; i++)
for (j = 0; j < M; j++)
scanf("%d", &A[i][j]);
/* вот тут вся проблема!!! программа просто после задания данных для первой матрицы, не дает ввести значение для P
просто пропускает и выводит "Введите действие" и переходит сразу ко второй матрице... Объясните где ошибка*/
getchar();
printf("vvedite deistvie \n");
scanf("%c",&p);