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();
}
3.  avital netanel (24.04.2018 pm 04.34.16)
solution

#include<stdio.h>

#define N 3
#define M 3

void main()
{
    int flag = 0;
    int cnt = 0;
    int num;
    int arr[N][M];
    int arrTmp[M];
    int max = 0;
    int sum = 0;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            flag = 0;
            do{
                if (flag > 0)
                {
                    printf("input number greater than 3 or 4 digits to arr[%d][%d]:  ",i,j);
                    scanf("%d", &arr[i][j]);
                    num = arr[i][j];
                    cnt = 0;
                    while (num != 0)
                    {
                        num = num / 10;
                        cnt++;
                    }
                }
                flag++;
            } while (!(cnt > 2 && cnt < 5));
            num = 0;
            cnt = 0;        
        }
        
    }

    /*max in row */
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            num = arr[i][j];
            while (num != 0)
            {
                sum += num % 10;
                num = num / 10;
            }
            if (max < sum)
            {
                max = sum;
                num = arr[i][j];
                arrTmp[i] = num;
            }
            sum = 0;
        }
        
        max = 0;
        
    }

    /*printf max row*/

    for (int i = 0; i < N; i++)
    {
        
            printf("the max number in row[%d] is: %d ", i + 1, arrTmp[i]);
        
    }

    

}



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