Форум программистов, компьютерный форум CyberForum.ru

Задача.Массивы.rand. - C++

Восстановить пароль Регистрация
 
Poneo
 Аватар для Poneo
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 5
18.03.2012, 10:00     Задача.Массивы.rand. #1
Всем привет! Учусь на 1 курсе, делаю лабараторные работы.с++
Задача: Дана матрица f[n][m] из целых малых величин,определить количество особых элементов в нем.Элемент считается "особым",если он больше суммы остальных элементов столбца.
Собственно, в чем проблема: не могу воспользоваться заполнением массива случайными числами.Пользовался поиском,пробовал разные варианты, и "f[i][j]=rand()%10;" , и через time.h.Но не получается.Выскакивает окошко "Закрыть программу" "отладить программу".Пользуюсь Dev C++.
Вот то, на что хватило мозгов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <iostream>
#include <iomanip>
#include <time.h>
#include <stdio.h>
 
using namespace std;
int main()
{
    int m,n,i,j,osob,sum;
    int f[n][m];
    setlocale(LC_ALL,"Russian");
    cout<<"Выберите размерность матрицы,введите количество строк и столбцов";
    cin>>n>>m;
    for (i=0;i<n;i++)
    {
        for (j=0;j<m;j++)
        {
        f[i][j]=rand()%10;
        cout<<" "<<f[i][j];
        }
        cout<<""<<endl;
    }
    for(i=0;j<m;j++)
    {
    for (j=0;j<n;j++);
    {
        f[i][j]=f[i][j]+sum;
    }
    }
    
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2012, 10:00     Задача.Массивы.rand.
Посмотрите здесь:

C++ Задача на массивы
Задача на массивы C++
задача на массивы. C++
задача на массивы C++
Задача на массивы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
18.03.2012, 10:18     Задача.Массивы.rand. #2
Цитата Сообщение от Poneo Посмотреть сообщение
int m,n,i,j,osob,sum;
* * int f[n][m];
Дело то и не в rand() вовсе. Чему равны переменные n и m на момент инициализации массива? Странно, что компилятор вообще такое пропускает.
Poneo
 Аватар для Poneo
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 5
18.03.2012, 10:40  [ТС]     Задача.Массивы.rand. #3
fasked, Спасибо больщущее!) Что сказать, неопытный я ещё)

Добавлено через 3 минуты
fasked, И ещё вопрос, как реализовать определение особого элемента, не могу понять что то( Я правильный цикл сделал? Теперь в нем сравнивать каждый элемент с суммой??
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
18.03.2012, 11:41     Задача.Массивы.rand. #4
C++
1
2
3
4
5
6
7
    for(i=0;j<m;j++)
    {
    for (j=0;j<n;j++);
    {
        f[i][j]=f[i][j]+sum;
    }
    }
Во-первых разберись с индексами i и j. Они как-то не на своих местах сейчас. Конкретно в объявлении первого цикла, там почему-то используется и j и i одновременно.

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

Вместо:
C++
1
int m,n,i,j,osob,sum;
Должно быть что-то такое:
C++
1
2
3
4
5
6
int m = 0;
int n = 0;
int i = 0;
int j = 0;
int osob = 0;
int sum = 0;
Сначала пишем цикл для обхода каждого столбца матрицы:
C++
1
2
3
for (i = 0; i < m; ++i)
{
}
В этом цикле нам надо найти сумму элементов каждого столбца:
C++
1
2
3
4
5
6
7
8
for (i = 0; i < m; ++i)
{
    sum = 0;
    for (j = 0; j < n; ++j)
    {
        sum += f[i][j];
    }
}
А теперь надо определить особый элемент или нет. То есть надо сделать еще один цикл, в котором сравнить каждый элемент с суммой.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for (j = 0; j < m; ++j)
{
    sum = 0;
    for (i = 0; i < n; ++i)
    {
        sum += f[i][j];
    }
 
    for (j = 0; j < n; ++j)
    {
        if (f[i][j] > sum - f[i][j])
            ++osob;
    }
}
По идее должно быть как-то так.
Poneo
 Аватар для Poneo
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 5
18.03.2012, 12:13  [ТС]     Задача.Массивы.rand. #5
fasked, Спасибо ещё раз, буду думать.
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
18.03.2012, 12:22     Задача.Массивы.rand. #6
Цитата Сообщение от Poneo Посмотреть сообщение
Собственно, в чем проблема: не могу воспользоваться заполнением массива случайными числами.Пользовался поиском,пробовал разные варианты, и "f[i][j]=rand()%10;" , и через time.h.
пропустили
C
1
srand( time(NULL) );
Yandex
Объявления
18.03.2012, 12:22     Задача.Массивы.rand.
Ответ Создать тему
Опции темы

Текущее время: 21:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru