Автор Тема: одномерный массив с++  (Прочитано 5123 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Olchik

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
одномерный массив с++
« : 20 Марта 2010, 13:39:48 »
помогите пожайлуста найти здесь ошибку...программа вроде написана правильно,и ошибки не выдаёт,но она не работает,не пойму что в ней не так
условие задачи:найти среднее арифметическое двух наименьших элементов массива

#include<iostream>
#include<math.h>
#include<conio.h>
using namespace std;
int main()
{
   int a[5]={5,13,9,7,11},i,min_1,min_2,sr_ar,i_min_1,i_min_2;
   int min=a[0];
   for(i=0;i<5;i++)
      if(a<min)
      {
         min_1=a;
         i_min_1=i;
      }
      cout<<"min_1="<<min_1<<endl;
      cout<<"i_min_1="<<i_min_1<<endl;
      min=a[0];
      for(i=0;i<5;i++)
         if(a<min && i!=i_min_1)
         {
            min_2=a;
            i_min_2=i;
         }
         cout<<"min_2="<<min_2<<endl;
         cout<<"i_min_2="<<i_min_2<<endl;
         sr_ar=(min-1+min-2)/2;
         cout<<"sr_ar="<<sr_ar<<endl;
         getch ();
         return 0;
}

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
Re: одномерный массив с++
« Ответ #1 : 20 Марта 2010, 16:50:50 »
Может все таки так:
#include<iostream>
#include<math.h>
#include<conio.h>
using namespace std;
int main()
{
   int a[5]={5,13,9,7,11},i,min_1,min_2,sr_ar,i_min_1,i_min_2;
   int min=a[0];
   for(i=0;i<5;i++)
      if(a<min)
      {
         min_1=a;
         i_min_1=i;
      }
      cout<<"min_1="<<min_1<<endl;
      cout<<"i_min_1="<<i_min_1<<endl;
      min=a[0];
      for(i=0;i<5;i++)
         if(a<min && i!=i_min_1)
         {
            min_2=a;
            i_min_2=i;
         }
         cout<<"min_2="<<min_2<<endl;
         cout<<"i_min_2="<<i_min_2<<endl;
         sr_ar=(min-1+min-2)/2;
         cout<<"sr_ar="<<sr_ar<<endl;
         getch ();
         return 0;
}
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн Olchik

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: одномерный массив с++
« Ответ #2 : 20 Марта 2010, 17:40:27 »
что-то я не пойму что изменилось??
ваша програма так же как и моя комп мусор выдаёт=(
я тут чуть-чуть не правильно написала (квадратные скобки почему-то не ставятся) вот:

#include<iostream>
#include<math.h>
#include<conio.h>
using namespace std;
int main()
{
int a[5]={5,13,9,7,11},i,min_1,min_2,sr_ar,i_min_1,i_min_2;
int min=a[0];
for(i=0;i<5;i++)
if(a[i]<min)
{
min_1=a[i];
i_min_1=i;
}
cout<<"min_1="<<min_1<<endl;
cout<<"i_min_1="<<i_min_1<<endl;
min=a[0];
for(i=0;i<5;i++)
if(a[i]<min && i!=i_min_1)
{
min_2=a[i];
i_min_2=i;
}
cout<<"min_2="<<min_2<<endl;
cout<<"i_min_2="<<i_min_2<<endl;
sr_ar=(min_1+min_2)/2;
cout<<"sr_ar="<<sr_ar<<endl;
getch ();
return 0;
}
[/size]

Оффлайн Данила

  • Глобальный модератор
  • *****
  • Сообщений: 1657
  • Математик-экстрасенс
    • Просмотр профиля
Re: одномерный массив с++
« Ответ #3 : 20 Марта 2010, 21:42:25 »
ну для начала мне не нравится,что sr_ar вы делаете интовой.... не факт же, что сумма 2ух меньших поделится без остатка...
Просьба не кидать мне в ЛС Ваши задания...создаем тему,пишем свое задание,наработки\идеи...полностью и нахаляву ничего не решаю

Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн Данила

  • Глобальный модератор
  • *****
  • Сообщений: 1657
  • Математик-экстрасенс
    • Просмотр профиля
Re: одномерный массив с++
« Ответ #4 : 20 Марта 2010, 21:52:54 »
во вторых вот тут

int min=a[0];
for(i=0;i<5;i++)
if(a[i]<min)
{
min_1=a[i];
i_min_1=i;
}
вы считаете,что полюбому найдется число меньше 1го элемента массива...а если первый наименьший? тогда у вас переменные не инициализированы - отсюда мусор...надо как то так
int min=a[0];
for(i=0;i<5;i++)
if(a[i]<min)
{
min_1=a[i];
i_min_1=i;
}
else
                {
                min_1=a[0];
                i_min_1=0;
}


поиск второго тоже косячен....вы берете за минимум 1ый элемент,который уже является минимумом...и там опять таки получается каша....

я бы на вашем месте отсортировал массив и взял 1ые два члена и все....быстрее,проще и изящнее,чем в лоб
Просьба не кидать мне в ЛС Ваши задания...создаем тему,пишем свое задание,наработки\идеи...полностью и нахаляву ничего не решаю

Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн Данила

  • Глобальный модератор
  • *****
  • Сообщений: 1657
  • Математик-экстрасенс
    • Просмотр профиля
Re: одномерный массив с++
« Ответ #5 : 20 Марта 2010, 22:05:10 »
#include<iostream>
using namespace std;

int main(int argc, char *argv[])
{
  int a[5]={5,13,9,7,11},i,j,tmp;
  float sr_ar;
  for (j=0;j<5;j++)
    for (i=j;i<4;i++) {
        if (a[i]>a[i+1]) {
                tmp=a[i];
                a[i]=a[i+1];
                a[i+1]=tmp;
        }
    }    
  cout<<"first minimal element="<<a[1]<<endl;
  cout<<"second minimal element= "<<a[2]<<endl;
  cout<<"middle ariphmetics= "<<(a[1]+a[2])/2<<endl;
  system("PAUSE");
  return 0;
}

вот вся ваша программа...без кучи переменных, циклов и условий...))

кстати,у вас же не сказанно в задание,что массив известной размерности,может стоит делать для общего случая?
« Последнее редактирование: 20 Марта 2010, 22:09:27 от Данила »
Просьба не кидать мне в ЛС Ваши задания...создаем тему,пишем свое задание,наработки\идеи...полностью и нахаляву ничего не решаю

Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн Olchik

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: одномерный массив с++
« Ответ #6 : 21 Марта 2010, 13:33:40 »
ну,sr_ar там в принципе значения не имеет,у меня главная проблема с минимумами

в вашей программе я половину не поняла,к сожалению...и что такое tmp?
в вашей выходит 1мин=7,а 2мин= 9.....а 5 вроде меньше 7 и 9...всё-равно что то не то:)

Оффлайн Olchik

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: одномерный массив с++
« Ответ #7 : 21 Марта 2010, 13:44:13 »
для общего случая конечно можно,но мне просто так более понятно

Оффлайн Данила

  • Глобальный модератор
  • *****
  • Сообщений: 1657
  • Математик-экстрасенс
    • Просмотр профиля
Re: одномерный массив с++
« Ответ #8 : 21 Марта 2010, 17:27:58 »
да,пардон,при выводе не те индексы указал

#include<iostream>
using namespace std;

int main(int argc, char *argv[])
{
  int a[5]={5,13,9,7,11},i,j,tmp;
  float sr_ar;
  for (j=0;j<5;j++)
    for (i=j;i<4;i++) {
        if (a[i]>a[i+1]) {
                tmp=a[i];
                a[i]=a[i+1];
                a[i+1]=tmp;
        }
    }   
  cout<<"first minimal element="<<a[0]<<endl;
  cout<<"second minimal element= "<<a[1]<<endl;
  cout<<"middle ariphmetics= "<<(a[1]+a[0])/2<<endl;
  system("PAUSE");
  return 0;
}

а что именно не понятно? сортировка пузырьком по-моему основа основ программирования...tmp - просто временная переменная,которую используем ,когда меняем 2 соседних элемента,что бы не потерять одно из них
Просьба не кидать мне в ЛС Ваши задания...создаем тему,пишем свое задание,наработки\идеи...полностью и нахаляву ничего не решаю

Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
Re: одномерный массив с++
« Ответ #9 : 21 Марта 2010, 22:32:45 »
А что именно Вам не понятно с пузырком:
Для массива размером 15
for (i=0;i<=14;i++)
 if (A>A[i+1])
   {
A=t
A=A[i+1]
A[i+1]=t
   }
    
« Последнее редактирование: 21 Марта 2010, 22:38:57 от InfStudent »
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн Данила

  • Глобальный модератор
  • *****
  • Сообщений: 1657
  • Математик-экстрасенс
    • Просмотр профиля
Re: одномерный массив с++
« Ответ #10 : 21 Марта 2010, 23:43:16 »
эм....пузырек с 1им циклом это что то новое) так он пройдет массив 1ин раз,поменяет местами пару элементов  и все)
Просьба не кидать мне в ЛС Ваши задания...создаем тему,пишем свое задание,наработки\идеи...полностью и нахаляву ничего не решаю

Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн Olchik

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Re: одномерный массив с++
« Ответ #11 : 21 Марта 2010, 23:59:45 »
капец,пузырьки какие-то,как это всё сложно :)
я только с циклами разобралась,а тут опять что-то новое
не понятно,потому,что я в програмировании особо не шарю

Данила,конкретно для этих чисел ваша программа работает правильно,но если поменять например первый элемент массива 5 на 50,то снова фигня....мин_1=13,мин_2=7

Оффлайн Данила

  • Глобальный модератор
  • *****
  • Сообщений: 1657
  • Математик-экстрасенс
    • Просмотр профиля
Re: одномерный массив с++
« Ответ #12 : 22 Марта 2010, 00:35:38 »
fixed
  #include<iostream>

using namespace std;

int main(int argc, char *argv[])



{
  int a[5]={5,13,9,7,11},i,j,tmp;
  float sr_ar;
  for (j=0;j<4;j++)
    for (i=0;i<5-j;i++) {
        if (a[i]>a[i+1]) {
                tmp=a[i];
                a[i]=a[i+1];
                a[i+1]=tmp;
        }
    }   
  cout<<"first minimal element="<<a[0]<<endl;
  cout<<"second minimal element= "<<a[1]<<endl;
  cout<<"middle ariphmetics= "<<(a[0]+a[1])/2<<endl;
  system("PAUSE");
  return 0;
}
Просьба не кидать мне в ЛС Ваши задания...создаем тему,пишем свое задание,наработки\идеи...полностью и нахаляву ничего не решаю

Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн InfStudent

  • Модератор
  • *****
  • Сообщений: 1356
  • Куба любовь моя))
    • Просмотр профиля
Re: одномерный массив с++
« Ответ #13 : 22 Марта 2010, 14:40:10 »
А да там вложенный цикл нужен))
Прежде чем задавать вопрос в раздел по программированию повтори теорию и посмотри FAQ! Просьба не кидайте задания в ЛС и не надо мне писать: "посмотри мою задачу!!!" Я смотрю все задачи в разделе когда на форуме
Учтите что подобные ЛС будут оставлены без внимания!
УКАЗЫВАЙТЕ ЯЗЫК ПРОГРАММИРОВАНИЯ НА КОТОРОМ ДОЛЖНА БЫТЬ РЕШЕНА ЗАДАЧА
Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

 

Двумерный массив в С. Как меня организовать вывод массива в таком виде?

Автор bifshtex

Ответов: 2
Просмотров: 4562
Последний ответ 30 Марта 2010, 23:41:13
от bifshtex
Помогите решить (Создать двумерный массив вещественных чисел ...)

Автор Rydon

Ответов: 7
Просмотров: 7768
Последний ответ 29 Ноября 2009, 17:36:15
от Rydon
Помогите решить задачу на С++ с матрицей. Сформировать массив В(7)

Автор muse

Ответов: 8
Просмотров: 5779
Последний ответ 08 Марта 2011, 17:50:09
от muse
Задача на двумерный массив!Помогите пожалуйста!

Автор katie

Ответов: 2
Просмотров: 4520
Последний ответ 12 Января 2010, 22:45:56
от katie
Описать и вывести массив с переменой, Pascal

Автор marinashizya

Ответов: 7
Просмотров: 3198
Последний ответ 07 Декабря 2011, 23:32:42
от wital1984