2014-01-26 2 views
0

Я выполняю задачу 1.14 в книге «Язык программирования C» и не знаю, что происходит в моем коде, особенно при печати диаграммы.1.14 задача в Кернигане, книга Ritchie «Программирование с C»

#include <stdio.h> 

#define MAX 300 

int main(void) { 
    int c,n,k,i,g,p,f; 
    int mas[MAX]; 

    for(i = 0; i < MAX; i++) //array for the string's length 
     mas[i] = 0; 

    i = 0; 
    n = k = f = 0; 

    //getting strings to print 

    while((c = getchar()) != EOF) { 
     n++;  //counter for each string in array 
     if(c == '\n'){ 
      mas[i] = n; 
      i++; 
      if(n > k){ //the highest number to print 
       k = n; 
      } 
      n = 0; 
     } 
    } 

//printing diagrams. I'm trying to do this: 
/* 
    | 
k | 
    | 
    | 
    | 
    |_____________________ 
       i 
*/ 

    for(; k > 0; k--){ //diagram's height 
     for(g = 0; g < i; g++){ //diagram's length 
      if(mas[g] = k){  //if an array have an appropriate height to print 
       printf("%c", "#"); 
      } else 
       putchar(' '); 
     } 
     putchar('\n'); 
    } 
    return 0; 
} 

Вы можете получить его в ideone.com - http://ideone.com/1RZ1zU.

+1

Вы должны объяснить, что задача такова, поэтому другие понимают, что вы tr чтобы сделать. Похож на задачу 1.13 из моей (переведенной) книги; 'Напишите программу, которая печатает гистограмму длин слов на входе' Но вместо этого вы вычисляете длину строки. – wimh

ответ

2
if(mas[g] = k){ 

вы, вероятно, означает

if(mas[g] == k){ 

И это тоже неправильно:

printf("%c", "#"); 

%c ожидает характер, а не строка:

printf("%c", '#');