Hey, musze napisac program ktory sprawdza czy w podanej liczbie znajduje sie liczba 7. Jezeli znajduje sie, kompilator wypisze - tak, w przeciwnym wypadku - nie.
Ktos wie jak to zrobić i mógłby podać jakaś wskazówke ?
Pzdr.
Hey, musze napisac program ktory sprawdza czy w podanej liczbie znajduje sie liczba 7. Jezeli znajduje sie, kompilator wypisze - tak, w przeciwnym wypadku - nie.
Ktos wie jak to zrobić i mógłby podać jakaś wskazówke ?
Pzdr.
A w jaki sposób ma być podana ta liczba? Prekompiler nie jest językiem mocno rozbudowanym, więc takie niby proste zadanie nie jest łatwe do realizacji na dyrektywach preprocesora.
#include <stdio.h>
#include <stdlib.h>
int main() {
int M,i,liczba;
printf("Podaj M: ");
scanf("%d", &M);
if(M<1 || M>2000000000) {
printf("Bledne M!\n");
}
for(??);
printf("%d", liczba);}
return 0;
}
Normalnie podawana przez użytkownika, nie mogę wymyśleć warunku jaki ma być sprawdzany, próbuję coś z dzieleniem albo podzielnością ale nie wychodzi ;-/
@junior_c jesteś pewny że to kompilator ma ci napisać czy dana liczba zawiera cyfrę 7? Czy może jednak masz napisać program który ma tak robić? Wczytaj liczbe jako stringa a potem sprawdź czy string zawiera 7.
Jeżeli @Shalom ma racje i jedynie nie odróżniasz kompilatora od napisanego programu to:
#include <stdio.h>
int main()
{
char ch;
printf("Podaj M: ");
while(((ch=getchar())!='7')&&(ch!='\n')) {}
if(ch=='7') printf("Ma 7-ke");
else printf("Nie ma 7-ki");
return 0;
}
@_13th_Dragon jeśli być już tak ścisłym z treścią pytania, to wypadałoby sprawdzić czy cyfra 7 występuje w liczbie
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int M;
char buff[20];
printf("Podaj M: ");
scanf("%d", &M);
sprintf(buff, "%d", M);
if (strchr(buff, '7') == NULL) {
printf("nie\n");
}
else {
printf("tak\n");
}
return 0;
}
Tak, oczywiście chodziło mi o program.
Jeszcze jeden mały problem:
Gdy pisze program w C++:
#include <iostream>
using namespace std;
bool jest(int n)
{
for(int i=0; i*i*i<=n; i++)
if(i*i*i==n) return true;
return false;
}
int main()
{
int n;
cin>>n;
if(jest(n))
cout<<"TAK\n";
else
cout<<"NIE\n";
return 0;
}
To działa a ten sam program napisany w C:
#include <stdio.h>
#include <stdlib.h>
int szescian(int n);
int main()
{
int n;
printf("Podaj liczbe:");
scanf("%d",n);
if(szescian(n))
printf("TAK\n");
else
printf("NIE\n");
return 0;
}
int szescian(int n)
{
int i;
for(i=0; i*i*i<=n; i++){
if(i*i*i==n) return 1;
return 0;}
}
Juz nie.
Jak to mozliwe ?
Program sprawdza czy wprowadzona liczba jest szescianem jakiejsc liczby.
Gdybyś formatował kod normalnie to sam byś widział od razu...
Kod aż przesadnie sformatowany dla czytelności:
int szescian(int n)
{
int i;
for(i=0; i*i*i<=n; i++)
{
if(i*i*i==n)
{
return 1;
}
return 0;
}
}
int szescian(int n)
{
int i;
if(n<=0) return 0;
i=(int)pow(n,1./3);
if(i*i*i==n) return 1;
++i;
return i*i*i==n;
}