Итак, у меня есть проблема hw для моего класса, где я должен хранить десять имен, использовать их взаймы, а затем сортировать их по алфавиту. Мы только начали использовать строки, и есть некоторые вещи, которые все еще немного запутывают меня. Этот код может хранить все имена в массиве строк, но UpperCase, похоже, не работает. Я не знаю наверняка, но я думаю, что это потому, что у меня есть секунда для колпачка с циклом, равная 10. И так как не каждая строка будет содержать 10 элементов, у меня возникают проблемы? .. Это или она или это что-то еще? Ну, я попытался исправить это, используя .length (function?), Чтобы найти длину каждого имени в массиве, но всегда получаю ошибки. Любая помощь приветствуется, спасибо!String array homework
#include<iostream>
#include<string>
using namespace std;
void UpperCase(string names[],int cap);
void print(string names[],int cap);
void swap(string names[],int &x,int &y);
string names[10];
int main(){
char a;
cout<<sizeof(a);
for(int i=0;i<10;i++){
cout<<"Enter a name for student "<<i+1<<" : ";
cin>>names[i];
cout<<endl;
}
UpperCase(names,10);
cout<<endl;
print(names,10);
cout<<endl;
print(names,10);
return 0;
}
void print(string names[],int cap){
for(int i=0;i<cap;i++)
cout<<names[i]<<endl;
}
void UpperCase(string names[],int cap){
for(int student=0;student<cap;student++){
for(int letter=0;letter<names[student].length();letter++){
if(names[student][letter]>='a')
names[student][letter]-=('a'-'A');
}
}
}
Является ли вопрос STL из вопросов? –
Вы правы в том, что 'cap' является неправильным условием завершения внутреннего цикла в' UpperCase() 'и' .length() 'является правильным, поэтому, пожалуйста, покажите свой код для последнего. Отдельно: что произойдет, если имя содержит символ 'a'? –
Забавно, что вы будете использовать 'std :: string', а затем использовать массивы вместо значительно превосходящих классов контейнеров. –