środa, 28 stycznia 2009

Wyniki I etapu III Olimpiady Informatycznej Gimnazjalistów

Są już wyniki pierwszego etapu III Olimpiady Informatycznej Gimnazjalistów. Poniżej załączam dokument z wyróżnionymi uczestnikami moich Warsztatów Informatycznych.

Wszystkim, a zwłaszcza wyróżnionym, serdecznie gratuluję!!!

sobota, 3 stycznia 2009

Wczytywanie całego wiersza c.d.

Ponieważ w DevC++ nie kompiluje się funkcje getline, proponuję użyć funkcji gets. Oto przykład programu, który wczytuje cały wiersz:

#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;

char line[1000005];
int  n; // długość linii

int main()
{
 gets(line);
 n = strlen(line);
 
 printf("n=%d\n", n);
 printf("%s\n", line);
 
 printf("Znak po znaku:\n");
 for (int i=0; i<n; i++)
 {
  printf("line[%2d] = %c (kod ascii=%d)\n", i, line[i], line[i]);
 }
 return 0;
}

piątek, 2 stycznia 2009

Wczytywanie całego wiersza

Pomyślałem, że wielu gimnazjalistom przydałaby się wskazówka, jak wczytywać cały wiersz ze standardowego wejścia. Wiersz może zawierać znaki odstępu (spacje).
Poniższy program wczytuje cały pierwszy wiersz ze standardowego wejścia (aż do napotkania znaku nowej linii). Program zapamiętuję wiersz w tablicy znaków line, a liczbę wczytanych znaków zapamiętuje pod zmienną n (nie wliczając znaku końca wiersza, czyli znaku nowej linii, czyli znaku '\n').

#include<cstdio>
#include<cstdlib>

using namespace std;

char *line;
int n; // długość linii

int main()
{
line=NULL;
size_t mem_size;
n=getline(&line,&mem_size,stdin)-1;

printf("n=%d\n", n);
printf("%s\n", line);

printf("Znak po znaku:\n");
for (int i=0; i<n; i++)
{
printf("line[%2d] = %c (kod ascii=%d)\n", i, line[i], line[i]);
}
return 0;
}