Pomôžte s programom v C
Pomôžte s programom v C
Pomôžte s programom v C
pred tým sa zadá ešte číslo s klávesnici
while (n!=0){
printf("%d",n%2);
n=n/2;
}
toto mi ma s 10 sústavy pretransformovať do binárnej problém je v tom že mi to píše naopak teda musím to čítať odzadu ako to spravím aby to vypisovalo odpredu ?
pred tým sa zadá ešte číslo s klávesnici
while (n!=0){
printf("%d",n%2);
n=n/2;
}
toto mi ma s 10 sústavy pretransformovať do binárnej problém je v tom že mi to píše naopak teda musím to čítať odzadu ako to spravím aby to vypisovalo odpredu ?
Re: Pomôžte s programom v C
Kód: Vybrať všetko
int a=0, pole[32];
while (n!=0) {
pole[a]=n%2;
n=n/2;
a++;
}
for (int i=a; i>=0; i--) printf("%d",pole[i]);
Re: Pomôžte s programom v C
Napríklad tak, že to budeš ukladať do pola a potom ho vypíšeš odzadu
//autoeditácia príspevku (04 Nov 2012, 23:42)
Spixy celé zle, takto radšej nie.
Po prvé, nultý index ti trochu uteká, čo nie je v C úplne kó-šér (nevadí to, ale nie je to pekné)
Po druhé, int má typicky 32 bitov, takže viac ich nedostane. Na čo si teda robíš pole na 100?
//autoeditácia príspevku (04 Nov 2012, 23:42)
Spixy celé zle, takto radšej nie.
Po prvé, nultý index ti trochu uteká, čo nie je v C úplne kó-šér (nevadí to, ale nie je to pekné)
Po druhé, int má typicky 32 bitov, takže viac ich nedostane. Na čo si teda robíš pole na 100?
Re: Pomôžte s programom v C
Kód: Vybrať všetko
void convertToBinary(int number) {
if (n / 2 > 0)
convertToBinary(n / 2);
printf("%d", n%2);
}
Re: Pomôžte s programom v C
a aku knižnicu mam použiť vypisuje mi asi toto :error C2601: 'convertToBinary' : local function definitions are illegal
#include "stdio.h"
int main()
{
int n;
printf ("cislo");
scanf("%d",&n);
void convertToBinary(int number) {
if (n / 2 > 0)
convertToBinary(n / 2);
printf("%d", n%2);
}
return 0;
}
takto som to napísal
#include "stdio.h"
int main()
{
int n;
printf ("cislo");
scanf("%d",&n);
void convertToBinary(int number) {
if (n / 2 > 0)
convertToBinary(n / 2);
printf("%d", n%2);
}
return 0;
}
takto som to napísal
Re: Pomôžte s programom v C
Presne pre toto som tú rekurziu ani nespomínal. Zabudni na to, uprav svoj kód tak, aby si to dával do pola a pracuj s ním.
(Na funkcie a na nejakú rekurziu ešte chvíľu nemysli)
(Na funkcie a na nejakú rekurziu ešte chvíľu nemysli)
Re: Pomôžte s programom v C
ale ja to skúšam podla toho čo je višie napísane ale neviem kde mam chybu ale vypisuje mi blbosty napr. pre ten to program pre číslo 12 by malo vipisat 1100 ale vypisuje -8589934601100 ??? a neviem prečo
#include "stdio.h"
int main()
{
int n, a=0, pole[32],c;
printf ("cislo");
scanf("%d",&n);
while (n!=0) {
c=n%2;
pole[a]=c;
n=n/2;
a++;
}
for (int i=a; i>=0; i--) printf("%d",pole);
return 0;
}
#include "stdio.h"
int main()
{
int n, a=0, pole[32],c;
printf ("cislo");
scanf("%d",&n);
while (n!=0) {
c=n%2;
pole[a]=c;
n=n/2;
a++;
}
for (int i=a; i>=0; i--) printf("%d",pole);
return 0;
}
Re: Pomôžte s programom v C
To preto, že vypisuješ jeden index naviac a vypíše ti nejaký nezmysel, ktorý na tom mieste náhodou je 
Pri výpise má i ísť predsa od a-1 (to kvôli tomu, že pole indexuješ od nuly)
A používaj, prosím, na zdrojáky tag
Pri výpise má i ísť predsa od a-1 (to kvôli tomu, že pole indexuješ od nuly)
A používaj, prosím, na zdrojáky tag
Kód: Vybrať všetko
Re: Pomôžte s programom v C
keď som dal a=1 tak mi vípisalo tu blbosť dva krát 
Re: Pomôžte s programom v C
Zle som sa vyjadril - to je preto, že sa v C pole indexuje od nuly. To, že mu tam teraz podstrčíš index iný to nevyrieši - nultý index ostane nevyužitý a premenná a bude na tom rovnako (len o jedničku vyššia), takže ti aj tú prvú hlúposť vypíše.
a nechaj na nule, potom vykonáš cyklus while (pre 12ku bude mať premenná a za cyklom hodnotu 4, pretože 4 krát uložíš číslo do pola(0,1,2,3) a nakoniec ju ešte raz zvýšiš)
no a na koniec to vypíšeš tak, že i musí ísť od nula do tri(!!!) (pretože 0,1,2,3 = 4 prvky)
a nechaj na nule, potom vykonáš cyklus while (pre 12ku bude mať premenná a za cyklom hodnotu 4, pretože 4 krát uložíš číslo do pola(0,1,2,3) a nakoniec ju ešte raz zvýšiš)
no a na koniec to vypíšeš tak, že i musí ísť od nula do tri(!!!) (pretože 0,1,2,3 = 4 prvky)
Re: Pomôžte s programom v C
vzdávam to do 24:00 som sa pokušal to oživiť ale nepodarilo sa, bude to písať odzadu
//autoeditácia príspevku (06 Nov 2012, 0:00)
#include "stdio.h" asi takto vypada ten program ale aj tak nejde
int main()
{
int n, a=0, nums[32],i;
printf ("cislo");
scanf("%d",&n);
;
for(i=0;n!=0;i++){
nums=n%2;
n=n/2;
}
a=i+1;
for (a;a>0;a--){
printf("%d",nums);
}
return 0;
}
//autoeditácia príspevku (06 Nov 2012, 0:22)
ok ďakujem za pomoc mam to
while(n!=0){
rem = n % 2;
sum = sum + ( i * rem );
n = n / 2;
i = i * 10;
}
printf("%d",sum);
asi takto
//autoeditácia príspevku (06 Nov 2012, 0:00)
#include "stdio.h" asi takto vypada ten program ale aj tak nejde
int main()
{
int n, a=0, nums[32],i;
printf ("cislo");
scanf("%d",&n);
;
for(i=0;n!=0;i++){
nums=n%2;
n=n/2;
}
a=i+1;
for (a;a>0;a--){
printf("%d",nums);
}
return 0;
}
//autoeditácia príspevku (06 Nov 2012, 0:22)
ok ďakujem za pomoc mam to
while(n!=0){
rem = n % 2;
sum = sum + ( i * rem );
n = n / 2;
i = i * 10;
}
printf("%d",sum);
asi takto
Re: Pomôžte s programom v C
Uau, koľko si toho povymýšľal. Pritom tvoj kód stačilo trošku upraviť
Ale to druhé riešenie je celkom zaujímavé.
Kód: Vybrať všetko
#include "stdio.h"
int main()
{
int n, a=0, pole[32],c;
printf ("cislo");
scanf("%d",&n);
while (n!=0) {
c=n%2;
pole[a]=c;
n=n/2;
a++;
}
for (int i=a-1; i>=0; i--) printf("%d",pole[i]);
return 0;
}Re: Pomôžte s programom v C
ale mam ďalšiu otázku prečo v tomto programe mi vypíše ten printf keď zadám zlý znak 2x?
for (;1;){
a=getchar();
if(a!='b'&&a!='p'&&a!='s'){
printf("nemozme vykonat operaciu zadajte spravny znak\n");
continue;
}
break;
}
for (;1;){
a=getchar();
if(a!='b'&&a!='p'&&a!='s'){
printf("nemozme vykonat operaciu zadajte spravny znak\n");
continue;
}
break;
}
Re: Pomôžte s programom v C
Pretože na vstup okrem jedného znaku vždy zadáš znaky dva - a síce daný znak a enter. Najprv sa teda zo vstupu zoberie tvoj zadaný znak, vyhodnotí sa podmienka a ak je znak zlý, cyklus ide od znovu. Tu funkcia getchar zoberie to, čo má na vstupe a tam má enter. Tak ho použije a ide to celé znovu.
Riešenie? Napr. pred continue pridaj ešte jeden prázdny getchar, ktorý zožerie ten enter. Príp. sa pozri na funkciu fflush();
a btw. neckonečný for stačí napísať ako for(;;) { }, ale častejšie sa používa while(1) { } (z čisto estetických dôvodov)
Riešenie? Napr. pred continue pridaj ešte jeden prázdny getchar, ktorý zožerie ten enter. Príp. sa pozri na funkciu fflush();
a btw. neckonečný for stačí napísať ako for(;;) { }, ale častejšie sa používa while(1) { } (z čisto estetických dôvodov)
Re: Pomôžte s programom v C
tak toto ma dostalo kto vie ako to spraviť alebo skôr návod naprogramujem si to sam aspoň sa to naučim
Re: Pomôžte s programom v C
Pre guruov je to preto, že na to máš prísť sám. Tak sa to naučíš najlepšie.
Re: Pomôžte s programom v C
Re: Pomôžte s programom v C
No napríklad tak, že tam vypíšeš medzeru 
Re: Pomôžte s programom v C
super som mudrejši hneď
//autoeditácia príspevku (11 Nov 2012, 22:20)
a nejaká normálnejšia rada?
//autoeditácia príspevku (11 Nov 2012, 22:20)
a nejaká normálnejšia rada?
Re: Pomôžte s programom v C
no jednoducho hore/dole to od riadkuješ a na bokoch len medzeru co je na tom ťažké