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

Некорректный вывод - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить f(a) (2) http://www.cyberforum.ru/cpp-beginners/thread896763.html
Здравствуйте, форумчане! Помогите, пожалуйста, написать программы. Дано действительное а. Для функции f(a), график которой представлен на рисунке, вычислить f(a). Заранее спасибо.
C++ Разработать алгоритм и программу для определения процента гласных символов в тексте Разработать алгоритм и программу для определения процента гласных символов в тексте. http://www.cyberforum.ru/cpp-beginners/thread896761.html
Тема старая, но все же C++
Может кто-то рассказать или навести источники( на русском языке) про то, в чем отличие между посимвольным считыванием и поточным, циклами while и for, типами float и double? fopen и ifstream(кажись так чтение из файла, хотя точно не помню...)
Составить программу по вычислению заданного выражения тремя циклами C++
Добрый Вечер. Помогите с решением задачи. 2. Циклические алгоритмы Составить программу по вычислению заданного выражения тремя циклами. Все неизвестные переменные вводятся с клавиатуры. Результаты вычислений выдать на экран и в файл. \sum_{i=1}^{n} \left( \prod_{i=1}^{n-3} {a}_{i} - \prod_{i=3}^{n} {b}_{i} - 5 \right) Версия Visual C++ 6.0
C++ Изучение: C или С++ http://www.cyberforum.ru/cpp-beginners/thread896727.html
Здравствуйте, Прошу аргументировать главные за и против в выборе между изучением C и С++. Цель изучения: в основном допиливание узких мест; частичная замена или взаимодействие с Java-логикой на сервере; обеспечение быстродействия.
C++ написать вычисление на с++ ( создать и заполнить таблицу) Создать и заполнить таблицу "контроль динамики выполнения курсовых работ по информатике в группе" исходные данные: % выполнения работы начиная с 3 по 10 неделю для каждого студента группы(не менее 10 человек) Вычислить: 1) на каждой неделе минимальный и максимальный процент выполнения 2) для каждого студента отклонение от 100% на 10-ой неделе 3) для группы: - среднюю готовность на 10-ой... подробнее

Показать сообщение отдельно
Tripolis
1 / 1 / 1
Регистрация: 21.03.2013
Сообщений: 10
09.06.2013, 23:37     Некорректный вывод
Проблема очень странная, впервые с таким сталкиваюсь. Итак, вводятся сначала 3 числа через пробел (кол-во вводов, ширина открытки и высота) потом n-е кол-во раз вводятся ширина и высота конверта. Вывести нужно сначала кол-во конвертов, в которые влезет открытка, а потом их номера в порядке возрастания размера.
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
 
 
using namespace std;
 
struct convert{
unsigned long long int s, w, h, index;
};
 
 void quickSortR(convert* a, long N) {
  long i = 0, j = N;
  convert temp, p;
  p = a[ N>>1 ];
  do {
    while ( a[i].s < p.s ) i++;
    while ( a[j].s > p.s ) j--;
 
    if (i <= j) {
      temp = a[i]; a[i] = a[j]; a[j] = temp;
      i++; j--;
    }
  } while ( i<=j );
  if ( j > 0 ) quickSortR(a, j);
  if ( N > i ) quickSortR(a+i, N-i);
}
 
int main(){
long long int n, w, h, tr = 0; //n - кол-во вводов. w - ширина  h - высота открытки tr - кол-во конвертов, в которые влезает открытка
cin >> n >> w >> h;
convert Convert[n];
int index[n], del = 0;
for(int i = 0; i < n; i++){
    cin >> Convert[i].w >> Convert[i].h;
    Convert[i].s = Convert[i].w*Convert[i].h;
    if(Convert[i].w > w & Convert[i].h > h) {
            Convert[i].index = i + 1;
            } else {
            Convert[i].index = 0;
            }
}
 
quickSortR(Convert, n);
for(int i = 0; i < n; i++){
    if(Convert[i].index == 0) continue;
    if(Convert[i].w > w & Convert[i].h > h){
       w = Convert[i].w;
       h = Convert[i].h;
       index[tr] = Convert[i].index;
        if(Convert[i+1].w == w & Convert[i+1].h == h) index[tr]--;
       tr++;
       }
}
cout << tr <<endl;
if(tr != 0){
for(int i = 0; i < tr; i++){
cout << index[i] <<" ";
}
}
for(int i = 0; i < n; i++){
        cout << '\0';
}
}
Собственно проблема : если вводить эти числа
2 6134 8495
9045 8632
9000 9000
программа выдаст
1
1
а должна
2
1 2
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru