Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: DFS Newsgroups: comp.lang.c Subject: Re: Suggested method for returning a string from a C program? Date: Wed, 19 Mar 2025 00:42:57 -0400 Organization: A noiseless patient Spider Lines: 77 Message-ID: References: <87a59hvgyk.fsf@nosuchdomain.example.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Wed, 19 Mar 2025 05:42:57 +0100 (CET) Injection-Info: dont-email.me; posting-host="92f16538b7b31d02767c6fdbe2b76261"; logging-data="138635"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18Z7PV2zZNBOWxV66v7u4w1" User-Agent: Betterbird (Windows) Cancel-Lock: sha1:qmeR15On45AlJ/Fi3Hy8VRTM+1o= In-Reply-To: <87a59hvgyk.fsf@nosuchdomain.example.com> Content-Language: en-US Bytes: 2851 On 3/18/2025 11:26 PM, Keith Thompson wrote: > DFS writes: > There's your problem. > > https://cses.fi/problemset/text/2433 > > "In all problems you should read input from standard input and write > output to standard output." ha! It usually helps to read the instructions first. > The autotester expects your program to read arguments from stdin, not > from command line arguments. > > It probably passes no arguments to your program, so argv[1] is a null > pointer. It's likely your program compiles (assuming the NBSP > characters were added during posting) and crashes at runtime, producing > no output. I KNEW clc would come through! Pretty easy fixes: 1 use scanf() 2 update int to long 3 handle special case of n = 1 4 instead of collecting the results in a char variable, I print them as they're calculated The algorithm part was very simple and correct. Later ones won't be so easy. I coded 4 so far (but just submitted this one here), and plan on doing all 300. https://imgur.com/bq0pKIw Did you hear a boom? Thanks again! updated code that passes: =============================================================== // If n is even, divide it by two. // If n is odd, multiply it by three and add one. // Repeat until n is one. // example: the sequence for n=3 is 3 10 5 16 8 4 2 1 #include #include int main(int argc, char *argv[]) { long n = 0; scanf("%ld", &n); printf("%ld ",n); while(1) { if(n==1) {exit(0);} if((n % 2) == 0) {n /= 2;} else {n = (n * 3) + 1;} if(n != 1) {printf("%ld ",n);} else break; } printf("1\n"); return 0; } ===============================================================