Question in C3 (Advanced)
Question:

כתוב תוכנית אשר קולטת מערך דו מימדי דינמי בגודל NXM כאשר N ו- M, חייבים להיות מספרים חיוביים בין 10-13 כולל.

התוכנית תקלוט רק מספרים בעלי 3 או 4 ספרות למטריצה. יש לוודא תקינות.

התוכנית תדפיס את המספר בעל סכום הספרות הגבוה ביותר בכל שורה בנפרד.

 

0 People tried to answer this question


Comments:
1.  Elbaz Naor (05.01.2017 am 01.53.58)
solution

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

void main()
{
    int m, n, **arr, i, j, temp, sum, max=0, index_max=0;
    do{
        printf("Please enter a number between 10-13 (numbers of lines) ");
        scanf("%d", &n);
    } while(n<10 || n>13);
    do{
        printf("Please enter a number between 10-13 (numbers of columns) ");
        scanf("%d", &m);
    } while (m<10 || m>13);
    //geting adress
    arr = (int**)malloc(m*sizeof(int*));
    //checking if malloc found memory
    if (!arr)
        exit(1);
    
    for (i = 0; i < n; i++)
    {
        arr[i] = (int*)malloc(n*sizeof(int));
        if (!arr[i])
        {
            free(arr);
            exit(1);
        }
    }

    for (i = 0; i < n; i++)
        for (j = 0; j < m; j++)
        {
            do{
                scanf("%d", &arr[i][j]);
            } while (arr[i][j]<100 || arr[i][j]>9999);
        }

    printf(" ");

    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
            printf("%5d ", *(*(arr + i) + j));
        printf(" ");
    }

    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            temp = arr[i][j];
            sum = 0;
            while (temp)
            {
                sum += temp % 10;
                temp /= 10;
            }
            if (max < sum)
            {
                max = sum;
                index_max = j;
            }
        }
            printf("in row %d the number %5d is biggest digit sum ", i, *(*(arr + i) + index_max));
            max = 0;
    }


    free(arr);
    
}

2.  ali amir (05.01.2017 pm 08.36.04)
c3

   

 

#include<stdio.h>
#include<stdlib.h>
void main()
{
    int N, M, i, j, y = 0,x=0, max = 0, a;
    int flag1 = 0, **arr;
    do {
        printf("Give me the Rows and Cols: ");
        scanf("%d%d", &N, &M);
    } while ((N > 13 && N < 10) || (M>13 && M < 10));
    arr = (int **)malloc(sizeof(int *)*N);
    if (arr == NULL)
        exit(1);
    for (i = 0; i < N; i++)
    {

 

        arr[i] = (int *)malloc(sizeof(int)*M);
        if (arr[i] == NULL)
        {
            for (int j = 0; j < i; j++)
                free(arr[j]);
            free(arr);
            exit(1);
        }

 

        for (j = 0; j < M; j++)
        {
            do {
                scanf("%d", &arr[i][j]);
            } while (arr[i][j] < 100 || arr[i][j]>9999);
        }

    }

 

 
    for (i = 0; i < N; i++)
    {
        
        for (j = 0; j < M; j++)
        {
            a = arr[i][j];
            x  = 0;
            while (a != 0)
            {
                x += a % 10;
                a = a / 10;

 

            }
            if (y < x)
            {
                y = x;
                max = arr[i][j];
                flag1 = 1;
            }

 

                }
        

 

        }
    if (flag1 == 1) {
        printf("the number is max his = %d ", max);
        
    }
    
    _getch();
}


History of edits
More Interactive Questions that might interest you In Computer