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

Чтение строки неизвестной длины - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Обработка изображений http://www.cyberforum.ru/cpp-beginners/thread389903.html
Здравствуйте, помогите пожалуйста с алгоритмом или написанием программы на с++. Задача такая: нужно на jpeg/bmp фотографии определить тень.
C++ Проверить, превосходят ли элементы строк матрицы заданное число ребят выручайте нужен код по этой проге срочно в универе уже ругаются((( Дано натуральное число N, вещественная матрица N x N , вещественное число x. Получить последовательность из 0 и 1 (b1,b2,...bn), где bi=1, если элементы i-той строки не превосходят x1 и b1=1,в противном случае. http://www.cyberforum.ru/cpp-beginners/thread389895.html
C++ Call of nonfunction
#include <stdio.h> #include <conio.h> #include <math.h> double eps = 1e-9; int k; //------------epsilon double ep (double x) { int i; double q,a,s; i = 0; s = a = 1;
Выведите числа в порядке возрастания C++
Отсортируйте заданный массив. Первая строка входных данных содержит количество элементов в массиве N, N ≤ 105. Далее идет N целых чисел, не превосходящих по абсолютной величине 10^9. Выведите эти числа в порядке возрастания. Пример: Входные данные: 3 2 3 1 Выходные данные: 1 2 3
C++ оператор this http://www.cyberforum.ru/cpp-beginners/thread389883.html
Прочитал раздел и с книги Стратуструпа о операторе this. но не фига не понял где его использовать его применение
C++ системы счисления!!! напишите программу пожалуйста!!! Даны действительное число x, натуральное число q (0 =< x < 1, q => 2). Получить пять цифр q-ичного представления числа x, т.е. получить последовательность целых неотрицательных a_1, ..., a_5 такую, что x = a_1*q^-1 + ...a_5*q^-5 + r, 0 =< a_i =< q-1, r < q^-5. подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
23.11.2011, 18:43     Чтение строки неизвестной длины
Цитата Сообщение от voral Посмотреть сообщение
Может так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main()
{
        const int bufSize = 10;
        long sLen = 0;//Будет содержать в себе длинну строки
        //Начальное выделение памяти всего под 1 символ
        char ch, * str = (char *)malloc(bufSize*sizeof(char));
        printf("Enter string :\n");
        while((ch = getchar()) != '\n')
        {
                str[sLen] = ch;
                                ++sLen;
                if ((sLen / bufSize)==1)
                {
                        str = (char *)realloc(str,(sLen + bufSize)*sizeof(char));
                }
        }
        str[sLen] = '\0';
        printf("Your input : \n");
        printf("%s\n",str);
        system("pause");//Стоп-точка иначе приложение отработав сразу закроется
        return 0;
}
Добавлено через 2 минуты
Упс точно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main()
{
        const int bufSize = 10;
        long sLen = -1;//Будет содержать в себе длинну строки
        //Начальное выделение памяти всего под 1 символ
        char ch, * str = (char *)malloc(bufSize*sizeof(char));
        printf("Enter string :\n");
        while((ch = getchar()) != '\n')
        {
                ++sLen;
                if ((sLen / bufSize)==1)
                {
                        str = (char *)realloc(str,(sLen + bufSize)*sizeof(char));
                }
                str[sLen] = ch;
        }
        str[sLen] = '\0';
        printf("Your input : \n");
        printf("%s\n",str);
        system("pause");//Стоп-точка иначе приложение отработав сразу закроется
        return 0;
}
Добавлено через 1 минуту
bufSize конечно же лучше поставить больше 10
У вас как раз первый вариант был лучше, так как не нужно было присваивать -1 sLen.

Вам просто нужно было (как, впрочем, и в вашем втором варианте) исправить код

C++
1
2
3
4
                if ((sLen / bufSize)==1)
                {
                        str = (char *)realloc(str,(sLen + bufSize)*sizeof(char));
                }
На

C++
1
2
3
4
                if ((sLen % bufSize) == 0 )
                {
                        str = (char *)realloc(str,(sLen + bufSize)*sizeof(char));
                }
 
Текущее время: 04:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru