Как в c++ вывести массив строк
Если я правильно понимаю, указатель выходит за границу массива. Как это можно исправить Если я точно указываю кол-во строк, программа работает исправно, но как обойтись без подсчёта строк?
Отслеживать
51.2k 86 86 золотых знаков 266 266 серебряных знаков 505 505 бронзовых знаков
задан 10 мая 2014 в 13:12
Николай135326 Николай135326
1 1 1 золотой знак 1 1 серебряный знак 1 1 бронзовый знак
@Николай135326 а почему вы считаете, что ваш массив должен заканчиваться элементом ‘\0’? Если вам нужна итерация по элементам без учета индексов, то для этого имеет смысл исмользовать контейнеры
10 мая 2014 в 13:21
пользуюсь c++ а как это сделать (если возможно, то не указывать количество строк — чтобы можно было добавить 1-2 строки и не переписывать параметры?)
10 мая 2014 в 13:28
>а как это сделать читайте внимательнее написанное выше: >Если вам нужна итерация по элементам без учета индексов, то для этого имеет смысл исмользовать контейнеры
10 мая 2014 в 13:32
У вас есть два выхода. Простой, нормальный: откажитесь от нативных массивов и строк, перейдите на стандартные контейнеры и std::string , они для новичков попроще будут. Сложный: прочитайте книжку по C и разберитесь с тем, что такое массив и C-style-строка. Я бы советовал начать с первого, и постепенно переходить ко второму.
10 мая 2014 в 14:16
Про пустую строку в качестве ограничителя размера массива Вам уже рассказал @insolor. Еще пара способов. Первый — это граница в виде пустого указателя, я бы сказал, в стиле параметров командной строки (вспомните main(int ac, char *av[]) < . (как раз для Вашего кода)): char *mas[] = ; // запись тривиальна Второй -- вычислить размер массива: int n = sizeof(mas) / sizeof(mas[0]); for (int i = 0; i < n; i++) puts(mas[i]); Понятно, что второй способ применим только в области видимости определения массива (т.е. с параметром не пойдет).
Как вывести массив в строку c
Друзья, подскажите. Нужно занести в массив mas x символов, а потом вывести этот массив.
#include #include int main()
Выводит **********@. то есть массив и за ним еще несколько лишних символов. в чем может быть проблема?
The First Person!
Форумчанин
Регистрация: 07.08.2007
Сообщений: 228
Вот в чем проблема! Поставь mas[x]=’\0′;
К тому же у тебя помимо этого много ошибок.
%s используется для вывода строки! Для вывода символа, ну и для ввода символа используется %c
Ну я так понял тебе весь массив надо заполнить символом ‘*’
И наконец для вывода всего массива используй puts(mas);
#include #include int main() < int i; char mas[10], g='*'; for(i=0;i<10;i=i+1)< mas[i]=g; >mas[10]='\0'; puts(mas); getch(); >
Программа обычно делает то что вы ей сказали сделать, а не то что бы вы хотели, чтобы она сделала.
Последний раз редактировалось MAKEDON; 15.04.2009 в 19:13 .
Вывод массива в одну строку
Описать и сгенерировать целочисленный массив случайным образом из произвольного диапазона. Вывести на экран элементы массива в строку.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Вывод в одну строку
Добрый день! Господа, помогите новичку! Есть вот такой код: #include <iostream> #include.

Вывод в одну строку
Возможно ли выводить в ряд сообщение которое в скрине, чтобы не уходил на новую строку, а.
Вывод данных в одну строку
П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.
Вывод текста и указателя в одну строку
char *t = decToBin(i); Memo4->Lines->Add(t); Как мне добавить текст в начале что бы было.
96 / 69 / 27
Регистрация: 26.08.2020
Сообщений: 361
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#include #include #include #include int main(void){ int* arr; srand(time(NULL)); //получаем количество секунд с 1970(начало существования всего живого) int size = 1 + rand() % 60;//случайный размер от 1 до 60 arr=malloc(size*4); for (int i =0;isize;i++){ arr[i]=1+rand()%100;//от 1 до 100 printf("%d ",arr[i]); } getch(); return 0; }
Регистрация: 08.09.2020
Сообщений: 58
а где здесь вывод проходит?
96 / 69 / 27
Регистрация: 26.08.2020
Сообщений: 361
функция printf
Регистрация: 08.09.2020
Сообщений: 58
выдает ошибку на вот эту строку arr=malloc(size*4);
96 / 69 / 27
Регистрация: 26.08.2020
Сообщений: 361
какое описание ошибки?
377 / 228 / 79
Регистрация: 24.11.2009
Сообщений: 695
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#include #include #include using namespace std; int main() { arrayint, 20> a; srand(time(NULL)); for(int& e : a) e = rand()%100; for(int& e: a) cout<" "; cout; }
Регистрация: 08.09.2020
Сообщений: 58
[Error] invalid conversion from ‘void*’ to ‘int*’ [-fpermissive]
Добавлено через 1 минуту
а вы сможете сделать всё задание сразу?)
Добавлено через 2 минуты
Vladimir., #error This file requires compiler and library support for the \
ISO C++ 2011 standard. This support is currently experimental, and must be \
enabled with the -std=c++11 or -std=gnu++11 compiler options. выдает ошибку
96 / 69 / 27
Регистрация: 26.08.2020
Сообщений: 361
9 строчку исправь на
arr=(int*)malloc(size*4);
Добавлено через 1 минуту
теперь нет ошибок
Добавлено через 30 секунд
9 строчку исправь на
arr=(int*)malloc(size*4);
1346 / 847 / 363
Регистрация: 26.02.2015
Сообщений: 3,775
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
#include #include #include #include int main() { std::size_t size; std::cout "Size: "; std::cin >> size; std::vectorint> vec(size); int min; int max; std::cout "Min, max: "; std::cin >> min >> max; std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_distribution<> dist(min, max); auto rand = [&]() { return dist(gen); }; std::generate(vec.begin(), vec.end(), rand); for (const auto& el : vec) std::cout el ' '; std::cout '\n'; return 0; }
96 / 69 / 27
Регистрация: 26.08.2020
Сообщений: 361
этот ужасный си++!си-чудо
Регистрация: 08.09.2020
Сообщений: 58
помогите сделать полное задание: Описать и сгенерировать целочисленный массив случайным образом из произвольного диапазона. Вывести на экран элементы массива в строку. Выполнить задание 1, вывести результат работы.
В задании 2 вывести массив до и после изменения. массив K[10]
задание 1 В отдельной строке вывести на экран четные положительные элементы и определить количество.
зад 2. Заменить все отрицательные элементы на -100, а вместо нулевых элементов записать их индекс.
все это необходимо сделать в одной программе
377 / 228 / 79
Регистрация: 24.11.2009
Сообщений: 695
This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. выдает ошибку
В этой ошибке написано, что вам нужно включить опцию компилятора для поддержки 11-го стандарта (принятого в девять лет назад). Посмотрите в гугле, как это сделать конкретно в вашей ide. А лучше с++14 или даже 17
Добавлено через 10 минут
Сообщение от scanf 
этот ужасный си++!си-чудо
Чаще всего критики не противопоставляют C++ какой-либо другой конкретный язык, а утверждают, что отказ от использования единственного языка, имеющего многочисленные недостатки, в пользу декомпозиции проекта на подзадачи, решаемые на различных, наиболее подходящих для них, языках, делает разработку существенно менее трудоёмкой при одновременном повышении показателей качества программирования. По этой же причине критикуется сохранение совместимости с Си: если часть задачи требует низкоуровневых возможностей, разумнее выделить эту часть в отдельную подсистему и написать её на Си.
В свою очередь, сторонники C++ заявляют, что устранение технических и организационных проблем межъязыкового взаимодействия за счёт использование одного универсального языка вместо нескольких специализированных важнее, чем потери от несовершенства этого универсального языка, то есть сама широта набора возможностей C++ является оправданием недостатков каждой отдельной возможности; в том числе недостатки, унаследованные от Си, оправданы преимуществами совместимости
Как вывести массив строк в Си?
Понимаю, что что — то не правильно делаю, но мне кажется второй кусок кода логичным :
printf(«%s/n», *a) ; //вывести строку.
Предполагаю, что при чтении строки она ни где не заканчивается, по этому ошибка. Хотя терминальный ноль вроде бы не явно должен ставиться в конце строки. Помогите узнать в чем ошибка.
- Вопрос задан более трёх лет назад
- 5265 просмотров
2 комментария
Простой 2 комментария