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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Poneo
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 5
#1

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

18.03.2012, 10:00. Просмотров 566. Ответов 5
Метки нет (Все метки)

Всем привет! Учусь на 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();
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2012, 10:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача.Массивы.rand. (C++):

Массивы подсчёт max и min от rand - C++
До меня никак не доходит всё что ниже строчки min_value = list(зачем присваем именно первый элемент массива, зачем делаем вот...

Массивы: функция rand() и размер массива. Совместимости - C++
Здравствуйте уважаемые программисты! Всех с праздником!) В общем переписываю одну и ту же программу который раз, ну чуть модифицирую, и...

Задача на массивы - C++
Дана действительная квадратная матрица порядка 12. Заменить нулями все ее элементы, расположенные на главной диагонали и выше нее.

Задача на массивы - C++
Дана матрица размерностью N на M, где большинство элементов равно 0. Нужно все элементы матрицы разделить на самое большое число по модулю.

Задача на массивы c++ - C++
В одномерном массиве, состоящем из n целых элементов, вычислить: 1) номер максимального элемента массива; 2) произведение элементов...

Задача на массивы - C++
Помогите пожалуйста. С задачей на массивы.12 вариант 1 задание

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

Добавлено через 3 минуты
fasked, И ещё вопрос, как реализовать определение особого элемента, не могу понять что то( Я правильный цикл сделал? Теперь в нем сравнивать каждый элемент с суммой??
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
18.03.2012, 11:41 #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;
    }
}
По идее должно быть как-то так.
1
Poneo
0 / 0 / 0
Регистрация: 23.11.2011
Сообщений: 5
18.03.2012, 12:13  [ТС] #5
fasked, Спасибо ещё раз, буду думать.
0
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
18.03.2012, 12:22 #6
Цитата Сообщение от Poneo Посмотреть сообщение
Собственно, в чем проблема: не могу воспользоваться заполнением массива случайными числами.Пользовался поиском,пробовал разные варианты, и "f[i][j]=rand()%10;" , и через time.h.
пропустили
C
1
srand( time(NULL) );
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2012, 12:22
Привет! Вот еще темы с ответами:

задача на массивы - C++
Заданы две матрицы А и В размером N x N. Сформировать из них прямоугольную матрицу Х размером N x 2N, включая в последовательно столбец ихз...

Задача на массивы - C++
Дан массив размером n*n,элементы которого целые числа.Вычислить А^n,где n-натуральное число.

Задача на массивы - C++
Прозрачная пластина состоит из 8 слоев, показатели преломления заданы массивом n=. Луч входит в пластину из ваккума под углом...

Задача на массивы - C++
Просмотрел все по поиску, есть одна похожая тема, но без окончания, решил создать новую из уважения к автору, чтобы не вклиниваться...не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.03.2012, 12:22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru