我有以下代碼完全符合我的要求。問題是我需要樣本陣列來比較字串并保持計數。有沒有辦法在沒有樣本的情況下計算任何陣列上每個字串的出現次數?
對于更多的背景關系,最初的問題是從.txt包含車輛資訊的檔案中讀取資料,例如:
Volkswagen Jetta
Ford Focus
Volkswagen Jetta
并統計每個品牌的車輛數量。請記住,這是來自編程的入門課程,我們不知道如何使用向量或映射。
#include <iostream>
#include <string>
using namespace std;
using std::string;
#define MAX 20
int main(){
int counter[MAX];
string arr[MAX]={"ABC","AOE","ADC","ABC","ADC","ADC"};
string sample[MAX]={"ABC", "AOE", "ADC"};
for(int i=0; i<=MAX; i ){
counter[i]=0;
}
for(int i=0; i<MAX;i ){
for(int j=0; j<MAX; j ){
if (sample[i]==arr[j]){
counter[i] ;
}
}
}
for(int i=0; i<3;i ){
cout<< sample[i] << "=" << counter[i]<<endl;
}
return 0;
}
uj5u.com熱心網友回復:
您需要做的就是保留一個品牌名稱串列(一個陣列即可),以及每個名稱的計數陣列:
std::string brand_names[100];
int counts[100]; // number of times each element of brand_names[] was read from file
int num_items = 0;
每次從檔案中讀取品牌名稱時,請嘗試在字串陣列中找到它。如果找到,只需在相同索引處的計數中加一。如果未找到,則將其brand_names[]添加1到陣列的末尾,添加到陣列的末尾counts[],然后遞增num_items。
您只需要一個簡單的回圈即可:
- 從檔案中讀取下一個品牌名稱的外回圈
- 嘗試在串列中查找品牌名稱的內部回圈
uj5u.com熱心網友回復:
如果你想在不知道sample陣列初始值的情況下解決這個問題:
創建一個空sample陣列。當您看到新元素時,將它們添加到此陣列中。
使用變數sample_size來跟蹤sample已經看到了多少s。下面是一個不使用std::vector或動態分配的簡單示例。
int main()
{
std::string arr[MAX] = { "ABC","AOE","ADC","ABC","ADC","ADC" };
std::string sample[MAX];
int sample_size = 0;
int counter[MAX] = { 0 };
for (int i = 0; i < MAX; i )
{
if (arr[i].empty()) break;
bool sample_found = false;
for (int j = 0; j < sample_size; j )
if (arr[i] == sample[j])
{
sample_found = true;
counter[j] ;
break;
}
if (!sample_found)
{
sample[sample_size] = arr[i];
counter[sample_size] ;
sample_size ;
}
}
for (int i = 0; i < sample_size; i )
cout << sample[i] << "=" << counter[i] << std::endl;
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/350590.html
上一篇:無法比較python中的兩個字串
