Sprawdzanie czy w podanej liczbie znajduje się cyfra 7

Sprawdzanie czy w podanej liczbie znajduje się cyfra 7
JC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
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.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
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.

JC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0
Kopiuj
#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 ;-/

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Jeżeli @Shalom ma racje i jedynie nie odróżniasz kompilatora od napisanego programu to:

Kopiuj
#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;
  }
kult
  • Rejestracja: dni
  • Ostatnio: dni
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

Kopiuj
#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;
}
JC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 35
0

Tak, oczywiście chodziło mi o program.

Jeszcze jeden mały problem:

Gdy pisze program w C++:

Kopiuj
#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:

Kopiuj
#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.

msm
  • Rejestracja: dni
  • Ostatnio: dni
1

Gdybyś formatował kod normalnie to sam byś widział od razu...

Kod aż przesadnie sformatowany dla czytelności:

Kopiuj
int szescian(int n)
{
    int i;
    for(i=0; i*i*i<=n; i++)
    {
        if(i*i*i==n)
        {
            return 1;
        }
        return 0;
    }
}
_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
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;
  }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.