Date: Wed, 22 Mar 2000 08:59:57 CET
///////////////////////////////////////////////////////////////////////////
Zadanie 1 (wersja a/b)
1. czy poprawnie obliczane sa odleglosci , funkcje sqrt,
2. czy poprawnie sa posortowane,
3. czy przy dzieleniu sprawdzony zostal warunek - mianownik!=0
///////////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <math.h>
main()
{
float ax,ay,bx,by,cx,cy,ab,ac,bc,temp;
// wejscie
printf("\npodaj wspolrzedne ");
scanf("%f %f %f %f %f %f",&ax,&ay,&bx,&by,&cx,&cy);
// obliczamy dlugosci
ab=sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by));
ac=sqrt((ax-cx)*(ax-cx)+(ay-cy)*(ay-cy));
bc=sqrt((bx-cx)*(bx-cx)+(by-cy)*(by-cy));
// sortujemy
if (ab>ac)
{
temp=ab;
ab=ac;
ac=temp;
}
if (ab>bc)
{
temp=ab;
ab=bc;
bc=temp;
}
if (ac>bc)
{
temp=ac;
ac=bc;
bc=temp;
}
// wynik koncowy
// badamy dzielenie przez zero
if (bc!=0)
printf("\nproporcja ta wynosi %f",ab/bc);
else
printf("\nTrojkat jest zdegenerowany");
return 0;
}
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
Zadanie 2 (wersja a/b)
1. bledy zakresów - sieganie poza tablice,
2. warunki stopu w while(),
3. test czy suma byla parzysta, czy nie,
4. czy wszystko zostalo wykonane w czasie liniowym od rozmiaru tablicy,
///////////////////////////////////////////////////////////////////////////
//wersja a
#include <stdio.h>
#include<conio.h>
int fun2(int tab[],int n);
main()
{
const int n=10; // n > 1
int tab[n]={1,1,1,1,1,1,1,3,1,1};
int wynik;
wynik=fun2(tab,n);
if (wynik==-1)
printf("\nNie ma takiego fragmentu\n");
else
{
printf("\nFragment tablicy spelniajacy warunki zadania to 0..");
printf("%d", wynik);
}
getch();
return 0;
}
int fun2(int tab[],int n)
{
int i, suma=0, sumacz=0;
for(i=0;i<n;i++) suma+=tab[i];
// test - czy suma jest parzysta ?
if(suma%2==0)
{
i=0;
while((i<n-1) && (2*sumacz<suma)) // test i<n-1
{
sumacz+=tab[i];
i++;
}
if(2*sumacz==suma) return i-1;
else return -1;
}
else return -1;
}
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
wersja b
#include<stdio.h>
#include<conio.h>
int fun2(int tab[],int n);
main()
{
int tab[]={3,4,1,3,4,1,4,2,4,2},wynik,n;
n=sizeof(tab)/sizeof(int);
wynik=fun2(tab,n);
if (wynik==-1)
printf("\nNie ma takiego fragmentu\n");
else
{
printf("\nFragment tablicy spelniajacy warunki zadania to ");
printf("%d..%d\n ",wynik, wynik+n/2-1);
}
getch();
return 0;
}
int fun2(int tab[],int n)
{
int i, suma=0, sumacz=0;
for(i=0;i<n;i++) suma+=tab[i];
if(!(suma%2)) // czy suma jest nieparzysta
{
for(i=0;i<(n/2);i++) sumacz+=tab[i];
printf("\nsuma = %d",suma);
i=0;
while((i<n/2) && (2*sumacz!=suma)) //a może porównywać z polowa sumy?
{
sumacz+=tab[i+n/2]-tab[i];
printf("\nsumacz=%d",sumacz);
i++;
}
if(2*sumacz==suma) return i;
else return -1;
}
else return -1;
}
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
Oto moje uwagi na temat metod oceny klasówki:
Suma punktów z calego testu = 4 punktów,
Zadanie 1 = 2 punkty,
Zadania 2 = 2 punkty,
Ocena kazdego zadania:
1 punkt = rozwiazanie z malymi bledami
2 punkty = rozwiazanie poprawne
Ocena dotyczy tylko ciala funkcji.
///////////////////////////////////////////////////////////////////////////
Jutro (w srode) bede na ulicy Newelskiej.
Rozsortuje koperty z pracami.
Na kazdej kopercie napisze nazwisko osoby sprawdzajacej.
Dolacze listy studentów z pierwszego roku, tak aby mozna bylo zapisac na
nich punkty z kolokwium.
Sprawdzone prace wraz z listami prosze przekazac do dziekanatu.
Mam nadzieje, ze sprawdzanie prac nie zajmie wiecej niz dwa tygodnie.
Po zebraniu wszystkich wyników wygeneruje finalna liste.
Nastepnie ustale konsultacje dla studentów - studenci musza miec prawo do
wgladu w prace...
Na studiach wieczorowych i zaocznych proponuje te same zadania .
Za wszystko z góry dziekuje!
Z powazaniem,
Piotr Sapiecha
______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
1
1