hej mam za zadanie stworzyc program ktory pobierze sobie liczby dzisietne z pliku dodatkowo te liczby ma zamienic na U2.. Tylko ze mam dwa osobne programy ktore robia to co powinny ale nie mam pojecia jak mam je polaczyc.. Prosze o pomoc..
int main() {
int i, mask=1,liczba;
printf("liczba= ",liczba);
scanf("%d ",&liczba);
int b[32];
for(i=0;i<32;i++){
if(liczba&mask)b[i]=1;else b[i]=0;
mask<<=1;
}
printf("\n");
for(i=31;i>=0;i--)
printf("%d",b[i]);
return 0;
}
int main(void) {
FILE *plik;
int x, i;
plik = fopen("liczby.txt","r");
if(plik==NULL)
{
printf("Brak zawartości pliku\n");
return -1;
}
for(i=0; i<10; i++){
fscanf(plik,"%d",&x);
printf("%d\n",x);
}
fclose(plik);
return 0;
return 0;
}
W drugim programie zgubiłeś return i masz pustą linijkę, powinno być:
int main(void) {
FILE *plik;
int x, i;
plik = fopen("liczby.txt","r");
if(plik==NULL)
{
printf("Brak zawartości pliku\n");
return -1;
}
for(i=0; i<10; i++){
fscanf(plik,"%d",&x);
printf("%d\n",x);
}
fclose(plik);
return 0;
return 0; // teraz jest OK
return 0;
}
myszkapyszka napisał(a):
hej mam za zadanie stworzyc program ktory pobierze sobie liczby dzisietne z pliku dodatkowo te liczby ma zamienic na U2.. Tylko ze mam dwa osobne programy ktore robia to co powinny ale nie mam pojecia jak mam je polaczyc.. Prosze o pomoc..
hej napisałam coś takiego ale nie moge dojść do tego co robie tutaj żle POMOCY!
int main() {
int liczba,i;
FILE *plik;
plik = fopen("liczby.txt","r");
if(plik==NULL){
printf("Brak zawartosci pliku\n");
return -1;
}
printf("Start\nLiczby: ");
for(i=0;i<10;i++)
bin(liczba);
fscanf(plik,"%d",&bin);
printf("%d",bin);
fclose(plik);
return 0;
}
void bin(int a){
int i,x;
int b[32];
for(i=0;i<32;i++){
b[i]='0';
while(a>0){
x=x>>1;
printf("%d",a);
}
printf("%d",b[i]);
scanf("%d",&b[i]);
}
return;
}
- Zapoznaj się z pojęciem formatowania kodu: http://4programmers.net/Forum/998482
- Zapoznaj się z inkrementacją której wciąż nie rozumiesz: http://4programmers.net/Forum/1101404
- Znajdź i przeczytaj czym są nawiasy klamrowe i czemu służą
W sumie programowanie poprzez wstawianie komend w losowe miejsca z góry skazane na porażkę, radzę zacząć od byle kursu których pełno w google.
myszkapyszka napisał(a):
co robie tutaj żle
W sumie wszystko. Przeczytaj jakiś kurs, to zadanie jest bardzo podstawowe i w ciągu kilku lekcji powinieneś być w stanie je zrobić.
- formatowanie - tragiczne. Użyj http://format.krzaq.cc jak sam nie umiesz,
-
if(plik==NULL){ printf("Brak zawartosci pliku\n");
nie, to oznacza, że nie udało się otworzyć pliku. Otwarcie pustego pliku jak najbardziej zwróci poprawny wskaźnik,
for(i=0;i<10;i++)
bin(liczba);
fscanf(plik,"%d",&bin);
printf("%d",bin);
Wtf?!
4. bin(liczba);
- działanie na niezainicjalizowanej zmiennej - ub
5. fscanf(plik,"%d",&bin);
- nadpisanie funkcji wczytaną liczbą - ub i na większości systemów crash programu, bo instrukcje są w pamięci z flagą read-only
6. printf("%d",bin)
- wypisujesz wskaźnik na funkcję jako integer. bzdura.
7.
while(a>0){
x=x>>1;
printf("%d",a);
}
Pętla albo nieskończona, albo wykonująca się zero razy.
Pewnie jest więcej, ale już mnie mózg boli od tego kodu.
Aha, po przeformatowaniu wygląda on tak:
int main()
{
int liczba, i;
FILE* plik;
plik = fopen("liczby.txt", "r");
if (plik == NULL) {
printf("Brak zawartosci pliku\n");
return -1;
}
printf("Start\nLiczby: ");
for (i = 0; i < 10; i++)
bin(liczba);
fscanf(plik, "%d", &bin);
printf("%d", bin);
fclose(plik);
return 0;
}
void bin(int a)
{
int i, x;
int b[32];
for (i = 0; i < 32; i++) {
b[i] = '0';
while (a > 0) {
x = x >> 1;
printf("%d", a);
}
printf("%d", b[i]);
scanf("%d", &b[i]);
}
return;
}
I na zakończenie, standardowa wklejka:
Oczekujesz pomocy czy rozwiązania za Ciebie?
- Jeśli pomocy: pokaż kod, staraj się zastosować do Dlaczego nikt nie odpowiada w moim wątku?
- Jeśli wykonania za Ciebie: http://4programmers.net/Forum/Og%C5%82oszenia_drobne (jestem w stanie wykonać zadanie za zaledwie 250zł)
W tym przypadku pomimo dostarczenia kodu poziom jego bezsensowności pozwala mi domniemywać, że w jego stworzenie wysiłek został włożony żaden.