Объясните почему программа пропускает 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;
}
программа просто после задания данных для первой матрицы, не дает ввести значение для P просто пропускает и выводит "Введите действие" и переходит сразу ко второй матрице... Объясните где ошибка,спасибо!

Решение задачи: «Объясните почему программа пропускает 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);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.429 из 5
Похожие ответы