Автор Тема: Массивы С++  (Прочитано 2277 раз)

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

Оффлайн ZeX

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Массивы С++
« : 06 Декабря 2011, 00:56:02 »
Помогите пожалуйста дописать программу. Вот условие: Определить, содержит ли заданный массив группы элементов, расположенные в порядке возрастания их значений. Если да, то определить количество таких групп. Удалить из массива первую такую группу.
Вот что у меня получилось:
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <string.h>
#include <stdio.h>
void main()
{
clrscr();
int mas[100];
int n=0;
int i=0,k=0;
cout<<"Enter n= ";
cin>>n;
if (n>100||n<1)
   {cout<<"Error. Enter any key to exit...";
   getch();
   }
else
   {for (i=0;i<n;++i)
  {cout<<"\nx["<<i<<"]= ";
   cin>>mas[i];
  }
   }
for (i=0;i<n-1;++i)
 {
 if (mas[i]<mas[i+1])
   mas[i]=mas[i+1];
    //k=k+1;

 else
   {
   if (k>0);
   break;
   }
 }
   /*malloc*/
for (i=0;i<n;++i)
 {cout<<"\nmas["<<i<<"]= "<<mas[i];
 }

getch();
}

Оффлайн wital1984

  • Постоялец
  • ***
  • Сообщений: 189
    • Просмотр профиля
Re: Массивы С++
« Ответ #1 : 06 Декабря 2011, 22:32:49 »
1) почему у вас k=k+1 задокументировано? а так понял, это счетчик групп? тогда не должно быть break, ведь нам нужно посчитать все группы, а для этого пройти весь массив.
2) в условии сказано:"Удалить из массива первую такую группу", а вы почему-то удаляете только первый элемент группы (причем, каждой). Группа ведь может быть и из 3-х, 4-х, и т.д. элементов. Я бы порекомендовал в if (mas<mas[i+1]) вставить цикл while для такого случая. И проверку на то, что это первая группа (k==1)

Оффлайн ZeX

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Массивы С++
« Ответ #2 : 06 Декабря 2011, 23:32:00 »
Да, k - это счетчик групп. Вот подправил код:
void main()
{
clrscr();
int mas[100];
int n=0;
int i=0,k=0;
cout<<"Enter n= ";
cin>>n;
if (n>100||n<1)
   {cout<<"Error. Enter any key to exit...";
   getch();
   }
else                             /* vvod masiva */
   {for (i=0;i<n;++i)
  {cout<<"\nx["<<i<<"]= ";
   cin>>mas[i];
  }
   }
for (i=0;i<n-1;++i)
 {
 if (mas[i]<mas[i+1])
   //mas[i]=mas[i+1];  <---нужно ли это убрать?
   while (k=k+1)
   {
                                <---какой оператор здесь поставить?
   }
 else
   {
   if (k>0);
   //cout<<"k= "<<k;              <---нужно ли это убрать?
   }
 }
for (i=0;i<n;++i)
 {cout<<"\nmas["<<i<<"]= "<<mas[i];
 //cout<<"k= "<<k;                     <---нужно ли это убрать?
 }
 cout<<"\nk= "<<k;
getch();
}

Оффлайн wital1984

  • Постоялец
  • ***
  • Сообщений: 189
    • Просмотр профиля
Re: Массивы С++
« Ответ #3 : 07 Декабря 2011, 01:25:21 »
Вы пробовали компилировать свой код? while (k=k+1) ошибок не выдает?
для чего вы используете mas=mas[i+1]; ?
если к - счетчик групп, то сколько раз его нужно выводить?

Оффлайн ZeX

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Массивы С++
« Ответ #4 : 07 Декабря 2011, 02:47:46 »
нет, while то не выдает ошибок, но я непойму какую операцию после него писать. А счетчик групп (к) я вывожу только один раз, почти в самом конце кода. Остальные к  написаны как комментарий, тоесть не компилируется.

Оффлайн wital1984

  • Постоялец
  • ***
  • Сообщений: 189
    • Просмотр профиля
Re: Массивы С++
« Ответ #5 : 07 Декабря 2011, 11:10:25 »
нет, while то не выдает ошибок, но я непойму какую операцию после него писать. А счетчик групп (к) я вывожу только один раз, почти в самом конце кода. Остальные к  написаны как комментарий, тоесть не компилируется.
насчет while: очень странно, я думал, в си "=" это операция присвоения, а не сравнения. k=k+1 в условии while вообще смысла не имеет. while нужен для определения группы элементов в порядке возрастания. Т.е. (пока i-ый элемент меньше i+1-го, т.е. пока мы в группе двигаемся к следующему ) while (mas[ i ]<mas[i+1]) {i=i+1;}. А счетчик величиваить на 1 нужно как тоьлко мы нашли группу, перед while

 

Помогите организовать файл в котором содержуться разные массивы

Автор sheo92

Ответов: 1
Просмотров: 4641
Последний ответ 09 Декабря 2009, 18:24:25
от InfStudent
Массивы. Напечатать таблицу перевода

Автор poiuyt

Ответов: 6
Просмотров: 7926
Последний ответ 31 Марта 2010, 23:25:44
от poiuyt
Задачка на двумерные массивы в паскале

Автор Venesia

Ответов: 1
Просмотров: 5261
Последний ответ 24 Декабря 2010, 09:40:41
от @len@_k
Массивы (простая задачка) Фортран

Автор Fencer

Ответов: 3
Просмотров: 2372
Последний ответ 24 Апреля 2012, 20:04:26
от wital1984
Помогите решить задачку в VB на массивы

Автор SvetlanaG

Ответов: 8
Просмотров: 2699
Последний ответ 18 Мая 2012, 09:29:59
от Selyd