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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2009, 20:33   #1
БаунтЯ
 
Регистрация: 03.12.2008
Сообщений: 8
По умолчанию Массивы С++

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

Написала программку.. а работает только первая часть.. там где сортировка массива.. не могу понять причину по которой не работает вторая( помогите, пожалуйста..(

#include <stdio.h>
main()
{
int n, i, j, x;
double a[n], b;
while(1)
{printf("\n Введите кол-во элементов массива n=");
scanf("%d", &n);
if (n>=4) break;
printf("\n Ошибка! для данной задачи необходимо n>=4);
}
printf("\n Введите значения элементов массива: \n");
for(j=0; j<n; j++)
{printf("a[%d]=", j+1);
scanf("%f", &a[j]);
}
for(i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
if(a[1]<a[j])
{b=a[i];
a[i]=a[j];
a[j]=b;
}
for(j=0, x=0; j<=4; j++)
if(a[j]<0) x=x+1;
}
printf("\n Количество отрицательных значений среди наибольших четырех: %d", x);
}
БаунтЯ вне форума Ответить с цитированием
Старый 20.02.2009, 20:36   #2
БаунтЯ
 
Регистрация: 03.12.2008
Сообщений: 8
По умолчанию

есть еще вторая задача, в которой меня нужно просто подтолкнуть к решению..)) в переносном смысле естессно..)

Сформировать одномерный массив, состоящий из максимальных значений положительных элементов соответствующих строк произвольно заданной матрицы В размера 5х6.
БаунтЯ вне форума Ответить с цитированием
Старый 20.02.2009, 21:05   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Во-первых:
Код:
double a[n], b
только вот n еще не инициализирована. Надо как-нибудь так:
Код:
double a[100], b;
ну или делать динамический массив.

Во-вторых, раз double, то не %f, а %lf.

И в-третьих, вот здесь:
Код:
for(j=0, x=0; j<=4; j++)
j<4

Исправлено:
Код:
#include <stdio.h>
#include <conio.h>
int main()
{
int n, i, j, x;
double a[100], b;
printf("check\n");
while(1)
 {
 printf("\n Введите кол-во элементов массива n=");
 scanf("%d", &n);
 if (n>=4) break;
 printf("\n Ошибка! для данной задачи необходимо n>=4");
 }
printf("\n Введите значения элементов массива: \n");
for(j=0; j<n; j++)
 {
  printf("a[%d]=", j+1);
  scanf("%lf", &a[j]);
 }
 
for(i=0; i<n-1; i++)
 for(j=i+1; j<n; j++)
  if(a[1]<a[j])
  {
   b=a[i];
   a[i]=a[j];
   a[j]=b;
  }
for(j=0, x=0; j<4; j++)
 if(a[j]<0) x=x+1;

printf("\n Количество отрицательных значений среди наибольших четырех: %d", x);
getch();
return 0;
}
========================
Насчет второй задачки:
одномерный массив, скажем, A, будет размером в 5 элементов.
Нужно пройтись по каждой строке и искать максимум.
Но здесь можно понять и немного по-другому:
неясно, что делать, если в данной строке нет положительных элементов. Либо присваивать соответствующему элементу A 0, либо просто пропускать строку (тогда размер A может быть и меньше 5-ти).
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 20.02.2009, 21:11   #4
БаунтЯ
 
Регистрация: 03.12.2008
Сообщений: 8
По умолчанию

спасибо большое!))))
БаунтЯ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12
C++ и массивы StartMis Помощь студентам 4 19.12.2008 22:45
Массивы на C++ Wia Помощь студентам 6 06.12.2008 16:09