Wiem, że jest błąd, ale nie wiem gdzie go szukać (możliwe, że jest większy), program wczytuje liczby z pliku i wykonuje różne operacje na nich.
Mogę uruchomić, wybrać opcje, nie jestem pewien czy coś nie pokombinowałem za bardzo z tablicą.
#include "stdafx.h"
int ile = 0;
unsigned int liczby[50];
void zera(){
int n, k;
printf("Podaj ile zer binarnych ma zawierac liczba: ");
scanf_s("%d", &n);
printf("Szukane liczby to: ");
if (ile<50){
int zera = 0;
while (liczby[ile] == 0)
{
k = liczby[ile] % 10;
if (k == 0) zera += 1;
liczby[ile] = liczby[ile] / 10;
}
if (zera == n) printf("%u\t", liczby[ile]);
ile++;
}
}
void jedynki(){
int m, k;
printf("Podaj ile jedynek binarnych ma zawierac liczba: ");
scanf_s("%d", &m);
printf("Szukane liczby to: ");
if (ile<50){
int jedynki = 0;
while (liczby[ile] == 0)
{
k = liczby[ile] % 10;
if (k == 1) jedynki += 1;
liczby[ile] = liczby[ile] / 10;
}
if (jedynki == m) printf("%u\t", liczby[ile]);
ile++;
}
}
void firstlast(){
//KOD DO NAPISANIA-NIEISTOTNE
}
int _tmain(int argc, _TCHAR* argv[])
{
int temp;
bool dalej = true;
char znak;
unsigned int liczby[50];
FILE *plik;
//ZAPYTAJ O NAZWE PLIKU
fopen_s(&plik, "liczby.txt", "r");
while (feof(plik) == 0)
{
fscanf_s(plik, "%u", &temp);
liczby[ile++] = temp;
}
printf("\nK-podaj ile zer ma miec liczba\nM-podaj ile jedynek ma miec ");
printf("liczba\nN-liczby z 1 na 1st i last\nRESZTA-zamyka");
printf("\nWybieram: ");
void(*TabFun[3])() = { zera, jedynki, firstlast };
while (dalej)
{
znak = getc(stdin);
if (znak == 'K') TabFun[0]();
else if (znak == 'M') TabFun[1]();
else if (znak == 'N') TabFun[2]();
else dalej = false;
}
fclose(plik);
return 0;
}