Zadatak u C-u. Pomoc :)

kzzmzz

Početnik
Poruka
8
Zadatak glasi ovako

Write a program that reads input until encountering #. Have the program print
each input character and its ASCII decimal code. Print eight character-code pairs
per line. Suggestion: Use a character count and the modulus operator (%) to print
a newline character for every eight cycles of the loop.

Uradio sam zadatak ali mi nije jasno zasto i drugi primer nece da mi radi, pogledajte if funkciju pa mi recite zasto ne rade isto :) tj 2 resenje nece da radi a ne vidim razlog, Ja sam ovaj zadatak uradio da mi ne racuna space, nov red...

1. Resenje

#include <stdio.h>
#include <ctype.h>
int main (void)
{

char ch;
int count=0;

printf ("Upisite neka slova: ");
while ((ch=getchar())!='#')
{

if (isspace(ch))
continue;
count++;
printf ("%c = %d\t",ch,ch);
if ((count%8)==0)
printf ("\n");
}
return 0;
}



2. Resenje


#include <stdio.h>
#include <ctype.h>
int main (void)
{

char ch;
int count=0;

printf ("Upisite neka slova: ");
while ((ch=getchar())!='#')
{

if (ch=='\n' && ch==' ')
continue;
count++;
printf ("%c = %d\t",ch,ch);
if ((count%8)==0)
printf ("\n");
}
return 0;
}
 
Vidim gresku to je kad brzam :) taj uslov ne moze nikad da bude zadovoljen jer getchar cita karakter po karakter trebao sam da stavim || umesto && . Hvala puno na pomoci!


Jos jedno pitanje samo ako nije problem? :) Da li continue vraca koliko sam razumeo na while (getchar() != 'y')

Princip rada sledeceg:

while (getchar() != 'y') /* get response, compare to y */
{
printf("Well, then, is it %d?\n", ++guess);
while (getchar() != '\n')
continue; /* skip rest of input line */
}


kako ide tok ako kucam slovo n i enter

N slovo

prvo se proverava while uslov
pa se stampa poruka
pa se proverava sledeci while uslov
i preskace ostatak inputa ?

\n

proverava se ponovo while uslov
pa se stampa poruka ??????
pa se proverava sledeci while uslov
?
 
Poslednja izmena:
Da li moze jos jedna pomoc? :)

double prvi;

printf ("Unesite prvi broj: ");
while (scanf("%lf",&prvi)!=1)
{
printf ("%c nije broj\n",prvi);
while (getchar()!='\n');
printf ("Unesite prvi broj: ");
}

Ako korisnik ukuca abc umesto brojeva kako mogu da prikazem poruku "abc nije broj" pomocu printf-a ?
 
Poslednja izmena:
Odgovoricu sam sebi, mozda neko bude imao slicnih problema :)

double prvi;
char test[255];

printf ("Unesite prvi broj: ");
while (scanf("%lf",&prvi)!=1)
{
scanf("%s", test);
printf ("%c nije broj\n",prvi);
while (getchar()!='\n');
printf ("Unesite prvi broj: ");
}

potrebno je dodati jednu varijablu char koja ce nakon prvog neuspesnog citanja double varijable uhvatiti karaktere iz buffer-a koji su ostali tako da je nakon while petlje potrebno dodati jos jedan scanf ("%s",test); koji ce procitati buffer...
 

Back
Top