Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2012, 21:40   #1
An90
Пользователь
 
Регистрация: 29.09.2012
Сообщений: 10
По умолчанию Дана матрица размера M на N

Дана матрица размера M на N и целое число К(1<=K<=N). Найти сумму и произведение элементов К-го столбца данной матрицы.
Без использования динамической памяти!!!!
Нельзя ли написать эту программу проще, без использования функции define и void?????
Текст программы:
Код:
#include <stdio.h>
#include <stdlib.h>
#define SIZE_MAX 1000
 
int v[SIZE_MAX][SIZE_MAX];
int main(void)
{
    int m, n, i, j, s = 0, p = 1, k;
    printf("enter m n: ");
    scanf("%d %d", &m, &n);
    if (n <= 0 || m <= 0 || n > SIZE_MAX || m > SIZE_MAX)
    {
        printf("error, invalid input data");
        return -1;
    }
    for (i = 0; i < m; ++i)
    {
        for (j = 0; j < n; ++j)
        {
            printf("enter v[%d][%d]: ", i+1, j+1);
            scanf("%d", &v[i][j]);
        }
    }
 
    for (i = 0; i < m; ++i)
    {
        for (j = 0; j < n; ++j)
            printf("%3d ", v[i][j]);
        printf("\n");
    }
 
    printf("enter k: ");
    scanf("%d", &k);
    if (k < 1 || k > n)
    {
        printf("error, invalid input data"); 
        return -2;
    }
    for (i = 0; i < m; ++i)
    {
        s += v[i][k-1];
        p *= v[i][k-1];
    }
    printf("sum = %d\nproduct = %d\n", s, p);
    return 0;
}

Последний раз редактировалось Stilet; 14.10.2012 в 12:37.
An90 вне форума Ответить с цитированием
Старый 13.10.2012, 21:42   #2
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

define просто задает константу, а void означает что у функции нет возвращаемого значения, зачем же без них?
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 13.10.2012, 21:47   #3
An90
Пользователь
 
Регистрация: 29.09.2012
Сообщений: 10
По умолчанию

Ну, чтобы программа была проще.
An90 вне форума Ответить с цитированием
Старый 14.10.2012, 12:36   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
#include <stdio.h>
#include <stdlib.h>
int v[10][10];
int main(){
int m, n, s=0,p=1;
printf("enter m n: ");scanf("%d %d", &m, &n);
printf("enter k: ");scanf("%d", &k);
if(m>9 || n>9){printf("verboten!"); return -1;}
for (i = 0; i < m; ++i) {
for (j = 0; j < n; ++j) {
  printf("enter v[%d][%d]: ", i+1, j+1);
  scanf("%d", &v[i][j]);
  s+=(j==k)?v[i][j]:0;
  p*=(j==k)?v[i][j]:1;
 }
}

printf("sum = %d\nproduct = %d\n", s, p);
return 0;
}
Так достаточно просто?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.10.2012, 20:00   #5
D1894
Пользователь
 
Регистрация: 09.05.2012
Сообщений: 12
По умолчанию

if(m>9 || n>9)-что значит это условие?)

Последний раз редактировалось D1894; 15.10.2012 в 20:36.
D1894 вне форума Ответить с цитированием
Старый 15.10.2012, 20:39   #6
An90
Пользователь
 
Регистрация: 29.09.2012
Сообщений: 10
По умолчанию

Спасибо!!!

Посмотрите пожалуйста, где ошибка, программа почему-то не работает!!!!
Код:
#include <stdio.h>
#include <stdlib.h>

const int v[10][10];
int main()
{
    int m, n, s = 0, p = 1, k;
    printf("enter m n: ");
    scanf("%d %d", &m, &n);
    if (n <= 0 || m <= 0)
    {
        printf("Oschibka");
	}
	else
		for (int i = 0; i < m; ++i)
    {
        for (int j = 0; j < n; ++j)
        {
            printf("enter v[%d][%d]: ", i+1, j+1);
            scanf("%d", &v[i][j]);
        }
    }
 
    for (int i = 0; i < m; ++i)
    {
        for (int j = 0; j < n; ++j)
            printf("%3d ", v[i][j]);
        printf("\n");
    }
 
    printf("enter k: ");
    scanf("%d", &k);
    if (k < 1 || k > n)
    {
        printf("Oschibka"); 
	}
	else 
    for (i = 0; i < m; ++i)
    {
        s += v[i][k-1];
        p *= v[i][k-1];
    }
    printf("sum = %d\nproduct = %d\n", s, p);
}
	}
    return 0;
}

Последний раз редактировалось Stilet; 15.10.2012 в 21:50.
An90 вне форума Ответить с цитированием
Старый 15.10.2012, 21:51   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А как не работает? Выдает что?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана матрица размера M на N D92 Помощь студентам 3 12.10.2012 23:18
дана матрица размера NxM Глебыч Паскаль, Turbo Pascal, PascalABC.NET 4 25.10.2011 11:11
Дана действительная матрица А размера m x n. dizel9876 Помощь студентам 3 09.09.2011 12:36
Дана матрица размера 5 x 10. В каждой строке найти количество элементов Executioner3 Помощь студентам 12 11.05.2010 16:27
Дана матрица размера M*N.Зеркально отразить ее элементы Ильдар ХАЛИКОВ Паскаль, Turbo Pascal, PascalABC.NET 6 09.04.2008 22:22