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

Вывести слова строки в порядке убывания числа букв в них - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Borland C++ http://www.cyberforum.ru/cpp-beginners/thread987824.html
Форумчане , помогите. Начали изучение С++ в универе. Сделал 2 лбораторки, препод проверил , сказал ошибок нет.НО программа не работает. После run выдает: #include <stdio.h> #include <conio.h> #include <math.h> void main() { float a,k,b,m,x,p,z,y;
C++ Ссылка на экземпляр класса в DLL Написал маленький каркасик для собственново фреймворка, и проблема возникла когда хотель экспортировать его в DLL. Фреймворк предпологает запуск приложения следующим образом: int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE prevInstance,LPSTR cmdLine,int cmdShow) { apl = new Application(hInstance); Window w(NULL,L"Wirst Class",L"Example2",WS_OVERLAPPEDWINDOW|WS_VISIBLE, ... http://www.cyberforum.ru/cpp-beginners/thread987809.html
C++ Структуры и определение операторов для работы с ними
Есть отдельный файл с базовыми структурами, которые используются во всём проекте. Есть файл с классом, в котором используется собственная структура, забивающая часть изначальных данных в остальные структуры. Внутри проекта происходят преобразования из внутренней структуры во внешние с помощью operator=. Однако сам operator= прописать в классе не удаётся. Как и можно ли это реализовать не ломая...
C++ Вычислить сколько товара можно купить без сдачи
Задаётся произвольная цена товара (допустим 11,11) задается произвольное количество монет (10р 5р 2р 1р 50к 10к 5к) допустим каждой по 5 сколько можно купить пива на это количество монет (при данных условиях = 8) сколько можно купить пива без сдачи? По данным условиям мы должны придти к ответу 5 так как самой маленькой монеты (5 копеек) у нас всего 5 штук. Подскажите как можно...
C++ cstdio vs fstream http://www.cyberforum.ru/cpp-beginners/thread987791.html
Есть программа, виводящяя 16-ричный дамп бинарного файла (вместо каждого байта входного файла виводится значение в 16-ричной системе) Для работы с файлами использованы функции cstdio. а нужно использовать функции fstream, как это сделать? #include <stdio.h> #include <stdlib.h> int main () { FILE * pFile; long lSize; char * buffer; size_t result;
C++ Парсер XML файлов Доброго времени. Нужен парсер для такой цели : 1) Хранить/сохранять объекты программы, и загружать обратно. Собственно, есть ли нужные библиотеки, или нужно писать парсер самому ? Если самому, то каким способом, посимвольным чтением ? Важно то, что бы он был кроссплатформенным. P.S. подробнее

Показать сообщение отдельно
Vivo
23 / 23 / 2
Регистрация: 27.09.2009
Сообщений: 101
28.10.2013, 15:25     Вывести слова строки в порядке убывания числа букв в них
Цитата Сообщение от McSimov Посмотреть сообщение
если интересно, то я раскопал, что это можно делать и с помощью scanf в таком виде:
scanf("%359s\n", st);
Я про это знал, просто у меня в VS 2010 это не срабатывает, поэтому и не посоветовал.

Если у вам нужно выполнить это задание на c++,то можно вот так:
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
#include "stdafx.h"
#include <stdlib.h> 
#include <iostream>
#include <algorithm> 
#include <vector>
#include <sstream>
 
using namespace std;
 
bool CompareFunction (string i,string j) 
{ 
    return (i.length()<j.length()); 
}
int main()
{
    char  text[255];
    cin.getline(text,255);
 
    stringstream ss(text);
 
    string s;
    size_t count = 0;
    vector<string> words;
 
    for (; ss >> s; count++)
        words.push_back(s);
 
    sort (words.begin(), words.end(), CompareFunction);
    
    for (int i=0;i<words.size();i++) 
        cout<<words[i]<<"\n";
 
    system("pause");
    return 0;
}
Добавлено через 21 минуту
Ну а по поводу вашего кода:
Посмотрев в отладчике ваш новый код, я не понял как вы не нашли проблемы с вашим алгоритмом, попробуйте поставить много точек останова и посмотреть значения массивов. Приведу часть проблем:
Пример:
Берем строку: 333 1 22. k у нас будет равна 3-м и мы выделяем память под 3-и элемента. Далее вы ищите координаты пробелов и записываете в массив, НО вы не учли тот факт, что пробелов в данной строке 2, а k равна 3-м т.к. вы инициализировали его единицей. В результате этого упущения у вас в массиве wrds адекватные значения только у нулевого и первого элементов. После этого вы создаете массив структур и заполняете первый и последний элементы значениями, НО из-за некорректности последнего элемента в массиве wrds получается, что в этом месте будут не те значения(строки 89-92):
C++
1
2
3
arw[k-1].b=wrds[k-1];
arw[k-1].e=strlen(st);
arw[k-1].l=strlen(st)-wrds[k-1];
Получается в значениях b и l некорректные значения, что в дальнейшем приведет к выходу за диапазон.
 
Текущее время: 14:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru