2015-06-25 4 views
0
#include <iostream> 

using std::cout; 
using std::endl; 

int main() 
{ 
    int i, a = 0, j; 
    int num[26]={}; 
    char alp[26], ch[100]={'s', 'd', 'd', 'e', 'f', 'g' }; 

    //Initialize array alp[] with alphabets a to z. 
    for(int i=97; i <(97+26) ; i++) 
     alp[i-97]=i; 

    for (i = 0; i < 26; i++) 
    { 

     for (j = 0; ch[j] != '\0'; j++) 
     { 
      if (alp[i] == ch[j]) 
       num[i] = a++; 
     } 

     cout << endl << string(5, ' ') << alp[i] << string(5, ' '); 

     if (num[i]) 
      cout << num[i] << endl; 
     else cout << endl; 
    } 
    return 0; 
} 

Ошибка компиляции. Однако, когда я печатаю, я получаю значения мусора (num [i]). В основном я сравниваю массив символов с массивом алфавитов, а затем печатаю таблицу с количеством алфавитов (массив alp, уже инициализированный всеми алфавитами от a до z), содержащий ch-массив.Сравнить массивы символов для печати

+0

Где вы инициализируете (даете ему начальное значение)? –

+0

Пожалуйста, напишите [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). –

+0

Если вы действительно хотите помочь создать mcve – Slava

ответ

3

Ваш массив num не инициализирован, поэтому он получает значения мусора. Если вы хотите, чтобы инициализировать его с 0 изменением кода:

int num[26] = {}; 

Для целей данного вопроса, то проблема становится яснее, хотя и менее эффективно, при инициализации каждого значения используется в цикле

int i, a = 0, j; 
int num[26]; 
for (i = 0; i < 26; i++) 
{ 
    num[i]=0; 
... 

Конечно, инициализация - это более короткое и более чистое решение.

+0

_ «Если вы действительно хотите помочь создать mcve» _ \ * предоставляет помощь в любом случае \ * oO –

+0

@LightnessRacesinOrbit Возможно, они выяснили решение после публикации комментария – KABoissonneault

+0

@KABoissonneault: Дело в том, что OP должен опубликовать MCVE перед тем, как заслуживающий помощи. Слава предположил, что ОП может иметь это в обоих направлениях! Самое своеобразное. –