uz102tdz

NartyJezusa
17.11.2009 19:09:02
Lokalizacja: Cybinka/ZG
Posty: 50 #367521
#include <stdio.h>
#include <stdlib.h>
#define y (sizeof(int)*8)
#define x (10000 / y) + 1


main ()
{
unsigned int tab[x];
zt(tab);
menu(tab);
return 0;
}


//zt - wyzerowanie tablicy
int zt(unsigned int *tablica)
{
int i;
for(i =0; i < x; i++)
tablica[i] = 0;
return 0;
}


//wt - wyswietlanie tablicy
int wt(unsigned int *tablica)
{
int i, j, wynik, pusta=1;
unsigned int maska = 1;
printf("\nW tablicy znajduja sie nastepujace liczby:\n"oczko;
for(i = 0; i < x; i++)
{
for(j = 0; j < y; j++)
{
maska = 1;
maska <<= j;
if((maska & tablica[i]) != 0)
{
wynik = y*i+j+1;
printf("%u\n",wynik);
pusta=0;
}
}
}
if(pusta == 1) printf("Lista jest pusta.\n\n"oczko;
return 0;
}

//wl - wyswietlanie liczb
int wl(unsigned int *tablica, int l)
{
unsigned int maska = 1;
maska <<= ((l - 1) % y);
if((tablica[(l - 1) / y] & maska) != 0)
printf("\nLiczba jest w tablicy.\n"oczko;
else
printf("Liczby nie ma w tablicy.\n\n"oczko;
return 0;
}
// dodawanie i usuwanie liczb

int add_del(unsigned int *tablica,int l, int del)
{
unsigned int maska;
maska=1;
maska <<= ((l - 1) % y);
if (del == 1)
{
maska = ~maska;
tablica[(l - 1) / y] = tablica[(l - 1) / y] & maska;
} else
tablica[(l - 1) / y] = tablica[(l- 1) / y] | maska;
printf("Bit "oczko;
printf("%u",((l - 1) % y));
printf(" w komorce tab["oczko;
printf("%u",((l -1) / y));
printf("] zostal zmodyfikowany\n"oczko;
return 0;
}
// odczyt, odczyt z pliku

odczyt(unsigned int *tablica)
{
int liczba;
char np[20];
FILE *plik;
printf("Podaj nazwe pliku: "oczko;
scanf("%s",np);
printf("\n"oczko;
plik = fopen(np, "r"oczko;

while ( fscanf(plik,"%u ",&liczba) == 1)
{
printf("Do tablicy wpisano liczbe: %u \n", liczba);
add_del(tablica, liczba, 0);
printf("\n"oczko;

}

fclose(plik);
}

// zapis - zapis do pliku
zapis(unsigned int *tablica)
{
int i, j, liczba, wynik, pusta;
char np[20];
unsigned int maska = 1;
FILE *plik;
printf("Podaj nazwe pliku: "oczko;
scanf("%s",np);
printf("\n"oczko;
plik = fopen(np, "w"oczko;
printf("Do pliku %s wpisane nastepujace liczby: \n",np);
pusta = 1;
for(i = 0; i < x; i++)
{
for(j = 0; j < y; j++)
{
maska = 1;
maska <<= j;
if((maska & tablica[i]) != 0)
{
wynik = 16*i+j+1;
printf("%u ",wynik);
fprintf(plik,"%u ",wynik);
pusta = 0;
}
}
}
if(pusta == 1) printf("W tablicy nie bylo liczb. Plik jest pusty.\n"oczko;
fclose(plik);
return 0;
}
void help(void)
{
printf("Wybierz tryb pracy:\n"oczko;
printf("[L] - ladowanie danych z pliku\n"oczko;
printf("[Z] - zapis danych do pliku\n"oczko;
printf("[W] - wstawianie liczby do tablicy\n"oczko;
printf("[O] - odczytywanie liczby z tablicy\n"oczko;
printf("[U] - usuwanie liczby z tablicy\n"oczko;
printf("[A] - automatyczne odczytywanie zawartosci tablicy\n"oczko;
printf("[Q] - wyjscie z programu\n"oczko;
printf("[H] - ponownie wyswietla menu\n\n"oczko;

}


int menu(unsigned int *tablica)
{
char wybor,trash;
int liczba;
help();
scanf("%c",&wybor);
do
{
trash = getchar();
} while (trash != '\n'oczko;

while(wybor != 'q'oczko
{
switch (wybor)
{
case 'l':
{
odczyt(tablica);
break;
}
case 'z':
{
zapis(tablica);
break;
}
case 'w':
{
printf("Podaj liczbe do wstawienia: \n"oczko;
scanf("%u",&liczba);
add_del(tablica, liczba, 0);
break;
}
case 'o':
{
printf("Podaj liczbe do sprawdzenia:\n"oczko;
scanf("%u",&liczba);
wl(tablica, liczba);
break;
}
case 'u':
{
printf("Podaj liczbe do usuniecia: "oczko;
scanf("%u",&liczba);
add_del(tablica, liczba, 1);
break;
}
case 'a':
{
wt(tablica);
break;
}
default:
{
printf("\nNacisnales nieprawidlowa litere.\n"oczko;
help();
}
}
printf("\nWybierz opcje:\n"oczko;
scanf("%c",&wybor);
do
{
trash = getchar();
} while (trash != '\n'oczko;

}
return 0;
}
Zobacz ten wpis w wątku
Aby pisać na forum musisz się zalogować !!!
załóż własne forum · korzystasz z forum? wesprzyj projekt! · rss