Помощь с программой

Доброго времени суток!
Помогите пожалуйста с написанием программы
(Разработать программу, которая запоминает в двумерном массиве, имеющем 5 строк и 7 столбцов, числа от 0 до 15, получаемые случайным образом, определяет сумму элементов в каждом столбце и заменяет минимальный элемент в каждом столбце на значение соответствующей суммы.)
Пока создал только рабочий двумерный массив, но он почему то выводит значения за границей массива в некоторых столбцах

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void divariateArray()
{
        srand(time(NULL));
        int table[5][7];
        int i,j;
        for (i=0;i<5;i++)
        {
            for (j=0;j<7;j++)
            {
            table[i][j]=rand()%16;
            printf("%d ", table[i][j]);
            }
            printf("\n");
        }

}
void univariateArray(int table[][7], int b[])
{
    b[7]={0};
    int i,j;
    for (i=0;i<5;i++)
    {
        for (j=0;j<7;j++)
        b[i]=b[i]+table[i][j];
        printf("Min value of table %d is %d", j,b[i]);

    }
    printf("\n");

}
int main()
{
    int table[5][7];
    int b[7]={0};
    divariateArray();
    univariateArray(table,b);
}

Массивы table (1) и (2) — это разные массивы. Массив (1) умирает при выходе из функции divariateArray. Массив (2) остался неинициализированным.

В (3) — выход за границу массива. Это не инициализация семиэлементного массива нулями, а инициализация восьмого элемента нулём.

В (4) — это не минимальное значение по столбцу, а сумма элементов.

В (5) — сейчас это подсчёт сумм по строкам, а тебе нужно по столбцам.

void divariateArray()
{
        srand(time(NULL));
        int table[5][7];       // <-- (1)
// ...
}
void univariateArray(int table[][7], int b[])
{
    b[7]={0};       // <-- (3)
    int i,j;
    for (i=0;i<5;i++)
    {
        for (j=0;j<7;j++)
            b[i]=b[i]+table[i][j];       // <-- (2), (5)
        printf("Min value of table %d is %d", j,b[i]);  // <-- (4)

    }
    printf("\n");

}
int main()
{
    int table[5][7];       // <-- (2)
    int b[7]={0};
    divariateArray();
    univariateArray(table,b);
}

Пока вроде всё. Выкатывай следующую версию.

Вот вроде починил
Помогите с алгоритмом нахождения минимального значения в каждом столбце и заменой его на сумму элементов соотв столбца, пожалуйста. Нужна ли какая то сортировка перед этим?
Вот задание
(Разработать программу, которая запоминает в двумерном массиве, имеющем 5 строк и 7 столбцов, числа от 0 до 15, получаемые случайным образом, определяет сумму элементов в каждом столбце и заменяет минимальный элемент в каждом столбце на значение соответствующей суммы)

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    void divariateArray(int table[][7]) //двумерный массив
    {
        srand(time(NULL));
        int i,j;
        for (i=0;i<5;i++)
        {
            for (j=0;j<7;j++)
            {
        table[i][j]=rand()%16;
        printf("%2d ", table[i][j]);
            }
        printf("\n");
        }

    }
    void univariateArray(int table[][7],int b[]) // одномерный массив и подсчет суммы элементов по столбцам по столбцам
    {
        int i,j;
        for (j=0;j<7;j++)
        {
            for (i=0;i<5;i++)
            b[j]=b[j]+table[i][j];
            printf("Sum of table %d is %d\n", j+1,b[j]);

        }
        printf("\n");
    }
    void minimum(int table[][7],int b[])
{
    int i,j;
    int min=0;
    for (j=0;j<7;j++)
    {
        for(i=0;i<5;i++)
        {
        if (table[i][j]<table[i][j+1])
        min=table[i][j];
        }
        min=b[j];

    }
    for(i=0;i<5;i++)
    {
        for(j=0;j<7;j++)
        {
            printf("%2d ",table[i][j]);
        }
        printf("\n");
    }
}
    int main()
    {
        int table[5][7];
        int b[7]={0,0,0,0,0,0,0};
        divariateArray(table);
        univariateArray(table,b);
    }

Ну, ты почти осилил свою программу ;) Для прокачки скиллов советую почитать статьи по массивам: раз и два.

С «алгоритмом нахождения минимального значения в каждом столбце и заменой его на сумму элементов соотв столбца» всё сложно. Поскольку и алгоритма-то какого-то особого нет. Я кой-чего по тексту программы поправил. Вроде работает.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void divariateArray(int table[][7])
{
    srand((unsigned int)time(NULL));
    int i, j;
    for (i = 0; i < 5; i++) {
        for (j = 0; j < 7; j++) {
            table[i][j] = rand() % 16;
            printf("%2d ", table[i][j]);
        }
        printf("\n");
    }

}
void univariateArray(int table[][7], int b[])
{
    int i, j;
    int min;
    for (j = 0; j < 7; j++) {
        min = 0;
        for (i = 0; i < 5; i++) {
            b[j] += table[i][j];
            if (table[i][j] < table[min][j])
                min = i;
        }
        printf("Sum of table %d is %d, min element index %d\n", j + 1, b[j], min);
        table[min][j] = b[j];

    }
    printf("\n");
}
void print(int table[][7]) {
    int i, j;
    for (i = 0; i < 5; i++) {
        for (j = 0; j < 7; j++) {
            printf("%2d ", table[i][j]);
        }
        printf("\n");
    }
}
int main() {
    int table[5][7];
    int b[7] = { 0,0,0,0,0,0,0 };
    divariateArray(table);
    univariateArray(table, b);
    print(table);
}

Индекс минимального элемента в столбце высчитывается в том же цикле, что и сумма по столбцу. Сразу после этих вычислений идёт замена минимального элемента столбца на сумму.

Кстати, для вычисления суммы по каждому столбцу массив не обязателен. Можно обойтись одной переменной типа int. Править не стал.

Распечатку массива вынес в отдельную функцию. Для порядка, из функции divariateArray лучше убрать собственную распечатку, а пользоваться функцией print — оно и единообразнее будет, и если править, то в одном месте.

Ещё осталось комментарии написать.

Задали написать программу, но я не могу врубиться, что от меня требуют. Помогите написать программу.
Задача.
Дана функций y=(f,a), x1<=x<=x2,x3 (a1<=a<=a2,a3) x- do while, a- for

Для каждого X определить каких значений больше: целых или положительных.

Буду благодарен, если вы мне поможете.
Спасибо

Помогите разобраться с программой калькулятор в 2 уроке С++. После написания кода как во 2 уроке на вс2013 компиляция программы проходит успешно без ошибок, но после введения 2 переменной программа закрывается сама по себе без ошибок в чем может быть причина? Вот собственно код программы:

#include <iostream>
using namespace std;

int main()
{
    setlocale(0, "");
        int a, b;
        cout <<"Введите первое число : ";
    cin >> a;
    cout << "Введите второе число: ";
    cin >> b;
    int c = a + b;
        cout << "Сумма чисел =" << c << endl;
    return 0;

}

МихаилНовичек, перед return 0; вставь system("pause"); для задержки закрытия окна консоли.
Или запускай без отладки по Ctrl-F5 (в стандартной раскладке горячих клавиш).

PS. И, пожалуйста, при постинге оформляй код программы в соответствии с правилами разметки.

Спасибо теперь всё работает!

Задали написать программу, не могу разобраться. Помогите написать программу.
ПРОГРАММИРОВАНИЕ ЦИКЛОВ И ВЕТВЛЕНИЙ
Дано натуральное число n. Получить сумму тех чисел вида i2-3in2 +n (i=1,2,...n), которые делятся на 5 и не делятся на 3.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.