Sprawdzanie czy w podanej liczbie znajduje się cyfra 7

0

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.

0

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.

0
#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 ;-/

2

@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.

0

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;
  }
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;
}
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.

1

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;
    }
}
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;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1