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

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

Войти
Регистрация
Восстановить пароль
 
Cee K
1 / 1 / 0
Регистрация: 05.04.2012
Сообщений: 46
#1

Модификация программы - C++

06.04.2012, 17:11. Просмотров 410. Ответов 5
Метки нет (Все метки)

Препод задал модифицировать программу.
программа считает есть ли в последовательности цифры, которые больше, чем следующие.
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
36
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include "input.h"
 
int main()
{
 setlocale (LC_ALL, "russian");
 
 const int N=10;         
 int a[N];
 int i,j;
 int count=0;
 
 // Принять от пользователя последовательность
 
 printf("Введите последовательность:\n");
 for (int i=0;i<N;i++)
     
    a[i]=input();
 
 
 // Каждое число сравниваем со всеми за ним стоящими
 // Если есть число меньшее сравниваемого, счетчик увеличивается на единицу
 
 for (i=0; i<N-1; i++)
 {
     
     for (int j=i+1; j<N;  (a[i]>a[j]) ? count++ : count, j++);
 
 }
 
 printf("Количество инверсий в этой последовательности: %d",count);
 _getch();
 return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int input()
{
int a;
while (scanf("%d",&a)!=1)
{
    printf("\nНекорректный ввод. Повторите попытку:\n");
    fflush(stdin);
}
return a;
}
препод просит: Число циклов можно сократить, если объединить алгоритм ввода чисел в матрицу с поиском инверсий ( с точки зрения алгоритмики это неправильно - мешать вместе логику и ввод/вывод, но зато позволяет минимизировать число операторов, что и требуется по заданию)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2012, 17:11     Модификация программы
Посмотрите здесь:

Модификация программы - C++
Модифицируйте программу из данного раздела так, чтобы она подсчитывала не только буквы, но и встретившиеся пробелы, символы табуляции и...

Модификация игр - C++
Всем привет! Суть вопроса: Какую игру выбрать для модификации, что бы понять основы игростроения. Детали ниже! :) Я достаточно...

Модификация перезагрузки - C++
Программа рабочая вот такая #include &lt;iostream&gt; #include &lt;cstring&gt;//для strcpy(),strlen() using namespace std; #include...

WinPcap - модификация пакета - C++
Мне нужно перехватить определенный пакет, изменить его , и отослать уже браузеру. Подскажите, справится ли с этим WinPcap , или она только...

Модификация разработанного класса - C++
Создал класс видеомагнитофон, требуется доработать его вот по этому заданию: Рассмотреть модификацию видеомагнитофона,который...

Модификация объектов класса string - C++
ООП С++ Лафоре есть пример: // sstrchng.cpp // изменение частей строки #include &lt;iostream&gt; #include &lt;string&gt; using...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,454
Записей в блоге: 17
06.04.2012, 17:15     Модификация программы #2
препод просит:
Cee K
1 / 1 / 0
Регистрация: 05.04.2012
Сообщений: 46
06.04.2012, 18:35  [ТС]     Модификация программы #3
Avazart, спасибо,помог
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,454
Записей в блоге: 17
06.04.2012, 19:50     Модификация программы #4
C++
1
2
3
4
5
 for (int i=0;i<N;i++)
    { 
     a[i]=input();
     if( i!=0 &&  a[i]>a[i-1] ) count++;
    }
Добавлено через 5 минут
И я бы сделал наверное так

C++
1
2
3
4
5
6
7
8
9
10
bool input(int &a)
{
 while (scanf("%d",&a)!=1)
  {
    printf("\nНекорректный ввод. Повторите попытку:\n");
    fflush(stdin);
    return false;
  }
return true;
}
Чтобы иметь возможность возвратить программу в начало при неправильном вводе
Cee K
1 / 1 / 0
Регистрация: 05.04.2012
Сообщений: 46
07.04.2012, 06:38  [ТС]     Модификация программы #5
Спасибо, а можно еще вот так делать?
и почему тогда не работает?

C++
1
2
3
4
5
 printf("Введите последовательность:\n");
 for (int i=0;i<N;( i!=0 &&  a[i]>a[i-1] ) ? count++ : count; i++)
 {
    a[i]=input();   
 }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2012, 07:01     Модификация программы
Еще ссылки по теме:

Модификация внутренней переменной лямбды - C++
Добрый вечер, что-то помню, что-то всплывает перед глазами в качестве кода - но не могу подобрать запрос в гугле, чтобы найти то о чём...

Косвенная модификация переменной - разобрать код - C++
Здравствуйте! Я немного запутался в результатах работы программы. Все действия понятны, а почему такой результат нет. Я...

Задача о камнях (почти рюкзак) модификация) - C++
из камней весом p1, p2 ... pn набрать вес W если это возможно вывести yes, если не - no, но есть проблемка: в дополнение к задаче дается...

Модификация объекта string через ссылку и указатель - C++
Создайте две функции: первая должна получать аргумент типа string*, вторая - srting&amp;. Каждая функция должна изменять объект string своим...


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

Или воспользуйтесь поиском по форуму:
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
07.04.2012, 07:01     Модификация программы #6
Зачем вы объявляете переменные счетчики в начале программы, и не используете их, вместо этого объявляя их в операторе for?
По сути задания, вроде должно быть так:
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
int main( ) {
   setlocale( LC_ALL, "russian" );
 
   const int N = 10;
   int a[N];
   int i, j;
   int count = 0;
 
   // Принять от пользователя последовательность
 
   printf( "Введите последовательность:\n" );
   for ( i = 0; i < N; i++ ) {
      for ( j = 0; j < i; ( a[ i ] < a[ j ] ) ? count++ : count, j++ );
 
      a[i] = input( );
 
   }
 
   // Каждое число сравниваем со всеми за ним стоящими
   // Если есть число меньшее сравниваемого, счетчик увеличивается на единицу
 
 
   printf( "Количество инверсий в этой последовательности: %d", count );
   _getch( );
   return 0;
}
Добавлено через 5 минут
Извиняюсь, нужно немного подправить
C
1
for ( j = 0; j < i; ( a[ i - 1 ] < a[ j ] ) ? count++ : count, j++ );
Добавлено через 7 минут
Тьфу, с утра вообще голова не варить, вот конечный и, вроде бы , рабочий вариант цикла:
C
1
2
3
4
5
for ( i = 0; i < N; i++ ) {
      a[i] = input( );
      
      for ( j = 0; j < i; ( a[ i ] < a[ j ] ) ? count++ : count, j++ );
   }
Yandex
Объявления
07.04.2012, 07:01     Модификация программы
Ответ Создать тему
Опции темы

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