Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите пожалуйста 
:(
    Опции темы
volnorez
Дата 13.3.2008, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 22.9.2007

Репутация: нет
Всего: нет



Здравствуйте. Очень нужна помощь в решении задачи на двумерные массивы.
Вот условие:
Заменить элементы матрицы 0 , ели они больше среднего значения по строке.
Заранее спасибо за помощь.
PM MAIL   Вверх
susanin
Дата 13.3.2008, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 7



что значит больше среднего??? больше среднего арифметического строки? или больше элемента который посередине?
PM MAIL   Вверх
Dmi3ev
Дата 13.3.2008, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



вот так можно! по-моему, наглядно
Код

#include <iostream.h>

int main()
{
float a[5][5]={1, 1.25, 1, 50, 6,
      2, 3.45, 45, 1, 7,
      5, 6, 7, 8 ,9,
      0.25, 5, 4, 6, 7,
      2, 3, 6, 7, 8};
float sr;
int k;
for (int i=0; i<=4; i++)
 {
  for (int j=0; j<=4; j++)
    {
     sr+=a[i][j];
     k++;
    }
  sr=sr/k;
  for (j=0; j<=4; j++)
    {
     if (a[i][j]>sr)
      {
        a[i][j]=0;
      }
    }
    sr=k=0;
 }
 for (i=0; i<=4; i++)
  {
    for (int j=0; j<=4; j++)
     cout<<a[i][j]<<",";
    cout<<endl;
  }
}

попробуй, напиши!!!


--------------------

PM MAIL   Вверх
susanin
Дата 13.3.2008, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 7



Dmi3ev, одного взгляда достаточно чтобы понять что она не будет работать..=) а return 0; в конце кто писать будет?и массив как то непонятно объявлен...
вобщем после небольшой корректировки получается полностью работоспособная версия на VS2005
Код

#include <iostream>
using namespace std;

int main()
{
    double a[5][5]={{1, 1.25, 1, 50, 6},{2, 3.45, 45, 1, 7},{5, 6, 7, 8 ,9},{ 0.25, 5, 4, 6, 7},{2, 3, 6, 7, 8}};
double sr=0;
int k;
for (int i=0; i<=4; i++)
 {
  for (int j=0; j<=4; j++)
    {
     sr+=a[i][j];
     k++;
    }
  sr=sr/k;
  for (int j=0; j<=4; j++)
    {
     if (a[i][j]>sr)
      {
        a[i][j]=0;
      }
    }
    sr=k=0;
 }
 for (int i=0; i<=4; i++)
  {
    for (int j=0; j<=4; j++)
     cout<<a[i][j]<<",";
    cout<<endl;
  }
 return 0;
}


Это сообщение отредактировал(а) susanin - 13.3.2008, 21:58
PM MAIL   Вверх
volnorez
Дата 13.3.2008, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 22.9.2007

Репутация: нет
Всего: нет



Да надо обнулить если элементы больше среднего арифметического значения по строке. 

SUSANIN а можешь объяснить что ты там написал и можно ли вводить матрицу непосредственно с клавиатуры в самой проге а не статически в начале?
PM MAIL   Вверх
susanin
Дата 13.3.2008, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 7



volnorez, конечно можно! нет ничего невозможного! а вот объяснять что я там ..вернее господин Dmi3ev написал могу только вобщем... хотите больше-читайте книги... вобщем происходит следующее... пробегаем двумерный массив по каждой строчке.. вычисляем для каждой строчки среднее арифметической... потом опять пробегаем эту строчку и сравниваем элементы со средним арифметическим..если элемент больше среднего арифметического, то мы обнуляем его... вот и все... так для всех строк...
PM MAIL   Вверх
Dmi3ev
Дата 13.3.2008, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



susanin, не обязательно писать return 0! попробуй, получится! у меня работает и у тебя заработает!


--------------------

PM MAIL   Вверх
susanin
Дата 13.3.2008, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 7



Dmi3ev, не знаю что у вас за компилятор, но int main () требует чтобы функция возвращала целочисленное значение!!! поэтому эта ошибка еще на этапе компиляции вылетает! по крайней на VS 2005!! так же VS 2005 в циклах for() не объявлен тип переменной i ... это тоже ошибка... по крайней мере по стандарту с++... ведь до цикла то переменная i не объявлялась....а те переменный которые объявляются внутри цикла for() дейтсвуют только внутри этого цикла..

Это сообщение отредактировал(а) susanin - 13.3.2008, 22:35
PM MAIL   Вверх
volnorez
Дата 13.3.2008, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 22.9.2007

Репутация: нет
Всего: нет



А зачем мы везде вот в этом "for (int i=0; i<=4; i++)" пишем <=4  что это за счетчик такой почему именно 4?
PM MAIL   Вверх
susanin
Дата 13.3.2008, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 7



volnorez , потому что массив наш [5][5] (пять на пять) но так как элементы начинаются с нулевого, то получается чтобы пройти по всем элементам надо с 0 до 4 ключительно...можно было в начале объявить размер массива например как const int size=5 а потом в циклах писать for(int i=0; i<size;i++)
PM MAIL   Вверх
Dmi3ev
Дата 13.3.2008, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



оператор return нужен, если функция (которая по замыслу ничего возвращать не будет) завершается не естественным порядком (до достижения "}")! а так компилятор спокойно понимает что и как! конечно желательно это писать, но совсем не обязательно! а массив можно и так инициализировать!!! твоя запись, конечно, тоже правильная (это бесспорно), но и в моей ничего плохого нет!!! можно даже в строчку объявлять двумерный массив (только это не очень наглядно)!
так что,susanin, не суди меня, сделай скидку на то, что я писал сразу здесь и даже не компилировал! 


--------------------

PM MAIL   Вверх
volnorez
Дата 13.3.2008, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 22.9.2007

Репутация: нет
Всего: нет



А если мне надо задать массив 10 на 10 и я задаю методм случайных чисел тогда что?

#include<iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
int main()
{ clrscr;
  srand(unsigned(time(NULL)));
  const size = 10;
  int A[size][size]={0};
  for(int i=0;i<size;i++){
    for(int j=0;j<size;j++){
        A[i][j] = rand()%100;
    }
  }

  for(i=0;i<size;i++){
    for(int j=0;j<size;j++){
        cout<<setw(8)<<A[i][j];
PM MAIL   Вверх
susanin
Дата 13.3.2008, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 7



Цитата(Dmi3ev @  13.3.2008,  22:47 Найти цитируемый пост)
оператор return нужен, если функция (которая по замыслу ничего возвращать не будет) завершается не естественным порядком (до достижения "}")! 

не совсем правда.... действительно, он может выполнять такую функцию, но если вы объявляете функцию как возвращающую целочисленное значение, то будьте добры и возвратить это значение посредством оператора return... не в обиду вам, 
Dmi3ev , но книги надо читать повнимательней..
PM MAIL   Вверх
Dmi3ev
Дата 13.3.2008, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



кстати на счет переменных в циклах, если я объявляю их каждый раз он выдает "multiple declaration" и я убираю объявления, пока не перестает ругаться)))
я компилировал в BORLAND TURBO C++, все пучком))) ладно, susanin, не буду спорить, твои замечания справедливы. суть проблемы не в этом ведь, в самой задаче разногласий нет, так что не будем рассуждать на тему записи, экзешник один х..))) (извините) и вас и у меня работает))) 


--------------------

PM MAIL   Вверх
susanin
Дата 13.3.2008, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 7



volnorez,
практически правильный код.... немного поправьте скобки и все будет ок!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0827 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.