Рейтинг:
2
CPallini
Эй, парень, это так C++
, отличающ мощной стандартной библиотекой, с строкой и контейнерами. Используя set
контейнер вам не нужно эксплицитно писать "проверьте наличие дубликатов" код.
#include <iostream>
#include <set>
using namespace std;
void car_enter(set < string > & cnset)
{
string brand;
cout << "please enter the car brand" << endl;
cin >> brand;
cnset.insert( brand);
}
int main()
{
set < string > carnameset {"Toyota","Mazda","Acura","Audi","Nissan"};
car_enter( carnameset );
for ( const auto & carname : carnameset)
cout << carname << endl;
}
jeron1
:большой палец вверх:
Рейтинг:
2
OriginalGriff
В принципе, Ваш массив недостаточно велик.
char carname[][10]={"Toyota","Mazda","Acura","Audi","Nissan"};
Выделяет 5 элементов, поэтому при попытке добавить шестой ему некуда деваться, и все это начинает заваливаться.
Чтобы добавить к этому, размер начинается с нуля, z начинается с нуля, поэтому он всегда не найдет имя и попытается добавить его.
Ну же - вы работаете над этим кодом уже несколько дней, и вы еще не показали никаких признаков использования отладчика. Разбейте отладчик, поставьте точку останова в начале метода и начните смотреть на то, что именно делает ваш код! Это будет намного быстрее в долгосрочной перспективе, и он начнет учить вас, как использовать отладчик на тривиальном коде, как это, а не ждать, пока у вас есть 20 000 строк кода и ошибка, которую вы не можете найти...
Поверь мне, это совсем не сложно!
Krithikzz2002
но объявление без первого измерения означает, что мы сохраняем эту переменную размера и можем добавлять к ней элементы, верно? более того я получаю 6 ю строку вывода
OriginalGriff
Нет, вы объявляете размер массива, когда предоставляете инициализатор. Вы задаете пять имен, поэтому система выделяет пять ячеек памяти. Массивы не "растягиваются" автоматически, чтобы соответствовать тому, что вы добавляете!
Кажется, это работает - немного - потому что он еще не "пробегает" ничего важного. В конце концов, так и будет ... и они ваше приложение рухнет вместо того, чтобы просто показывать глупые результаты.
Серьезно, начните работать с отладчиком - это намного быстрее, чем просить других исправить каждую обнаруженную проблему...
Krithikzz2002
Ок понял.
спасибо
Ах, на самом деле я не знаю, как использовать отладчик. я попробовал посмотреть несколько видео, но не совсем понял.
OriginalGriff
Я не могу вам помочь - они все разные, и я понятия не имею, какую систему вы используете, - поэтому google для названия вашей IDE и "отладчика", и вы должны найти много информации.
Лично я считаю, что большинство "видеоуроков" хуже, чем бесполезны: сделаны людьми, у которых нет видео-талантов, и если Вам повезет, немного больше информации, чем у вас ... Я бы поискал текстовое описание.
Точка останова - это место, где вы хотите, чтобы отладчик остановился и предоставил вам контроль.
Step / Single Step / Step into / Step over - выполнение кода по одной строке за раз, чтобы точно узнать, куда он идет.
Все они позволяют вам также смотреть на содержимое переменной / памяти, так что вы можете сказать, что он будет делать, когда вы выполните следующую инструкцию.
Попробуйте - это действительно удобно!
Krithikzz2002
хорошо большое вам спасибо
OriginalGriff
Всегда пожалуйста!