Đây là một K & R tập thể dục (1-13) ...In một Histogram dựa trên độ dài từ (C)
"Viết một chương trình để in một histogram chiều dài của các từ trong nó Thật dễ dàng để vẽ biểu đồ với các thanh ngang ngang; hướng dọc là khó khăn hơn. "
Phần này nói về mảng và thành thật mà nói, tôi không chắc là tôi đã hiểu hết. Tất cả mọi thứ cho đến thời điểm này là khá dễ nắm bắt, điều này là không.
Dù sao, tôi đang cố gắng tạo biểu đồ với thanh ngang trước tiên. Một khi tôi nhận được rằng tôi sẽ cố gắng theo chiều dọc, nhưng ngay bây giờ tôi thậm chí không chắc chắn nơi để bắt đầu với phiên bản dễ dàng. (. Tôi đã ngủ trên đó, tỉnh dậy, và vẫn không thể có được nó)
tôi vẽ một ví dụ về những gì chương trình sẽ ra:
----------------------------------------------------------------
001|XX
002|XXXX
003|X
004|XXXXXXXXXX
005|XXXXXXXXXXXXXXXXXXXXXXXXX
006|XXXX
007|X
008|
009|XXXXXXXXX
010|XXX
>10|XXXX
----------------------------------------------------------------
Và cố gắng để phá vỡ nó (chương trình) xuống trong các phần. Đây là những gì tôi đã đưa ra:
- PRINT TOP BIÊN GIỚI
- IN LOẠI, IN X mỗi lần điều kiện là đúng, IN NEWLINE, REPEAT.
- PRINT BOTTOM BIÊN GIỚI
Nhưng tôi càng nghĩ về nó càng ít Tôi nghĩ rằng đó là cách nó sẽ làm việc (vì getchar()
đi qua một ký tự cùng một lúc, và nó sẽ không có khả năng đi sao lưu để đặt X vào đúng danh mục.) Hoặc ...
... Tôi thực sự bối rối về cách giải quyết vấn đề này. Dưới đây là như tôi đã có thể nhận được mã khôn ngoan:
#include <stdio.h>
#define MAXWORDLENGTH 10
// print a histogram of the length of words in input. horizontal bar version
int main(void)
{
int c;
while ((c = getchar()) != EOF) {
}
return 0;
}
Ai đó có thể giúp khai sáng cho tôi? Không nhất thiết với mã, có thể chỉ là mã giả, hoặc với một số từ "từ khôn ngoan" như những gì tôi cần làm, hoặc suy nghĩ, hoặc một cái gì đó. Đây chỉ là một hòn đá thực sự lớn trên đường và tôi muốn vượt qua nó: /.
(Tôi sẽ kiểm tra lại sau 30 phút)
Không hẳn là một bản sao, nhưng bạn có thể tìm thấy sự giúp đỡ trong [làm thế nào để vẽ một biểu đồ trong c] (http://stackoverflow.com/questions/3836987/) và [Tần số Histogram trong C] (http://stackoverflow.com/questions/1413644/). – dmckee
Tôi thích cách bạn nghĩ! Bạn đang thiếu một cái gì đó, tuy nhiên. Xem câu trả lời của tôi dưới đây. – slezica
Loại vấn đề này khiến tôi phát điên khi lần đầu tiên tôi học chương trình (mà tôi đã làm trong C). Bài học, mà Kernighan thường lặp lại trong các cuốn sách khác của ông, là: suy nghĩ về dữ liệu, chứ không phải mã. –