| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > структуры |
| Автор: Веталька 9.3.2009, 12:58 | ||
елементарный и смешной вопрос: почему вместо букв выводит символы? и как ето исправить?
извинити за невыровняный код |
| Автор: mes 9.3.2009, 13:39 |
| нельзя ли точней указать какой именно вывод Вам не нравится ? судя по коду буквами должны выводится только name и grup. Это они у Вас цифрами выводятся или Вы в другом месте букв ожидали ? |
| Автор: azesmcar 9.3.2009, 13:41 | ||||
позвольте немного его подправить..
несколько замечаний 1. iostream.h, conio.h и подобные заголовочные файлы давно устарели, если используете cin, cout - включате iostream. И далее using namespace std или как у меня написано. 2. Сохраняйте стиль, если вы написали cin>>starr[k].name, то не надо далее писать gets ( (starr+k) -> grup). 3. clrscr - немного нестандартная функция. Во многих компиляторах ее нет. 4. Зачем создавать массив с запасом на 25 штук, если можно создавать динамически. 5. У вас если в имени есть пробел, код будет работать неверно, используйте getline P.S. По моему ерунда тут выводится, я не пробовал но тут явно ошибка cout<<starr[k].name<<"\n"<<starr+k<<"\n"<<starr[k].number; starr+k - указатель на структуру который вы пытаетесь вывести. Добавлено через 5 минут и 35 секунд да, и главная ошибка тут
точку с запятой уберите... |
| Автор: Albor 9.3.2009, 13:52 |
Цикл-то работает так как его написали, только следующий вывод из-за пределов массива, потому и печатается ерунда. |
| Автор: azesmcar 9.3.2009, 13:53 | ||
ладно, выражусь иначе - работает впустую. |
| Автор: Веталька 9.3.2009, 13:57 | ||||||||
Выводятся эроглифы Добавлено через 1 минуту и 3 секунды
а можно поинтирисоватся ? под какой компилятор етот код? |
| Автор: azesmcar 9.3.2009, 14:03 | ||
под любой нормальный Добавлено через 3 минуты и 32 секунды примечание: код может не компилироватся под Visual Studio 6. В этом случае выведите декларацию int i = 0 в main. |
| Автор: Веталька 9.3.2009, 14:14 | ||||
а как ето дело в ВС3.1 запустить? |
| Автор: azesmcar 9.3.2009, 14:23 | ||
боже мой, где вы такую древность откопали я бы посоветовал скачать нормальный компилятор вот парочка http://www.mingw.org/ http://www.microsoft.com/express/vc/ |
| Автор: Веталька 9.3.2009, 14:30 |
| то что ето древность я прекрано понимаю, но заставляют пока работать только с ним, нормальные компиляторы у меня есть, ошибки он выдает неачиная с подключения библиотек и до самого конца кода, думаю буду со своим неправильным долбатца, там действително если точку с запятой убрать все нормально выводит |
| Автор: azesmcar 9.3.2009, 14:40 | ||
ну желаю успехов..нас тоже в институе заставляли на борланде писать если вопрос решен пометьте как решенный пожалуйста. |
| Автор: zim22 9.3.2009, 14:53 |
если закомментировать эту строчку, то первый getline не отработает. вместо этого выведется два cout в одной строке. azesmcar, объясните пожалуйста, какую сакральную функцию играет эта строка в программе? |
| Автор: Веталька 9.3.2009, 15:10 | ||
пасибо, нас на борланде не заставляют писать, нам запрещают писать на чем либо другом |
| Автор: azesmcar 9.3.2009, 15:16 | ||||
| функция ignore убирает из потока переданный вторым параметром символ n-ое количество раз. код
уберет 1 char_traits<char>::eof() из потока, что позволит getline прочитать из cin новую строку. Надеюсь нормально обяснил? Добавлено @ 15:19 если не игнорировать, выходит как будто вы ввели пустую строку. следовательно программа продолжает работать дальше (если можно так выразится
гуманно Оффтоп: Бог создал Еву, подвел ее к Адаму и сказал - выбирай...вот так появилась демократия |
| Автор: Dem_max 9.3.2009, 15:20 |
| Оригинальное решение starr+k |
| Автор: zim22 9.3.2009, 15:48 |
вполне. |
| Автор: Веталька 9.3.2009, 16:56 | ||
|