Operacje matematyczne na ciągach znaków

Operacje matematyczne na ciągach znaków
KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Dany jest ciąg liczb całkowitych nieujemnych. Napisać program dzielący ten ciąg na następujące grupy:

  • zera,
  • jedynki,
  • liczby podzielne przez 2,
  • liczby podzielne przez 3, niepodzielne przez 2,
  • liczby podzielne przez 5, niepodzielne przez 2 i 3

Proszę o pomoc, jestem początkujący i nie wiem kompletnie jak za to się zabrać.

Pozdrawiam! :)

Craith
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 146
0

:)
przejedz po calym ciagu zliczajac ile masz elementow nalezacych do kazdej grupie, potem majac liczbe kardynalna kazda z grup robisz co chcesz w zaleznosci co znaczy "dzielic ciag"

TO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 30
0

Myśle, że chodzi o pogrupowanie ich. Karihm - zainteresuj się dzieleniem modulo.

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Jak to zrobić? Na razie to mi nic nie mówi.

Craith
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 146
0

Sprawdzasz czy liczba z ciagu
1 jest zerem
2 czy jest 1nka
3 przy dzieleniu modulo przez liczby z zadania daje magiczna liczbe (0) i robisz z nia co chcesz

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
Karihm napisał(a):

Jak to zrobić? Na razie to mi nic nie mówi.
Weź przeczytaj byle jaki kurs, bo pytasz o podstawy podstaw które są w każdym kursie:

Kopiuj
if(!value) cout<<"- zera"<<endl;
else if(value==1) cout<<"- jedynki"<<endl;
else if(!(value%2)) cout<<"- liczby podzielne przez 2"<<endl;
else if(!(value%3)) cout<<"- liczby podzielne przez 3, niepodzielne przez 2"<<endl;
else if(!(value%5)) cout<<"- liczby podzielne przez 5, niepodzielne przez 2 i 3"<<endl;
KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0
Kopiuj
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
static unsigned long int liczba_od = 0; /* deklaracja wartości poczatkowej losowania */
unsigned int liczba_do; /* unsigned int - zmienne o wartosciach nieujemnych, końcowy zakres losowania */
int ciag;

 
 printf("Ile liczb ma zawierac ciag? Podaj: \n");
 scanf("%d", &liczba_do);
 printf("Ciag wylosowanych %d liczb to:\n", liczba_do);
 printf("\n");
 int tablica[liczba_do];
 
srand(time(0)); /*ustawienie zarodka, aby random losował za kazdym razem inne liczby */
 for (liczba_od; liczba_od<liczba_do; liczba_od++) {
    ciag = (liczba_od + rand() % liczba_do);  /* losowanie liczb z przedziału <liczba_od, liczba_do> */
    tablica[liczba_od] = ciag;
//    printf("%d, ", ciag);  
 }
 
liczba_od = 0; //zerowanie liczby od
tablica[liczba_od] = ciag;
for (liczba_od; liczba_od<liczba_do; liczba_od++) {
    printf("%d, ", tablica[liczba_od]);
//  printf("Element numer %d = %d\n", liczba_od, tablica[liczba_od]); //wyswietlenie tablicy, element po elemencie.    
    }
 
//char * zmiena = (char)tablica[5];
//printf("%d\n\n" ,tablica[4]);
 
    for (liczba_od; ciag<liczba_do; liczba_od++) {
    if (ciag==0) cout<<"- zera"<<endl;
else if(ciag==1) cout<<"- jedynki"<<endl;
else if(!(ciag%2)) cout<<"- liczby podzielne przez 2"<<endl;
else if(!(ciag%3)) cout<<"- liczby podzielne przez 3, niepodzielne przez 2"<<endl;
else if(!(ciag%5)) cout<<"- liczby podzielne przez 5, niepodzielne przez 2 i 3"<<endl;
} 

coś mi dalej nie działa

Craith
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 146
0
Kopiuj
int tablica[liczba_do]; 

takich cudow w C nie ma. poza tym zdecyduj sie w czym piszesz, C czy C++

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0
Craith napisał(a):
Kopiuj
int tablica[liczba_do]; 

takich cudow w C nie ma. poza tym zdecyduj sie w czym piszesz, C czy C++

To w jaki sposób wykonać coś takiego w c++?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Moment piszesz w C++ czy w C?
Bo printf() i scanf() to z C ale mogą być użyte w C++
Zaś cin i cout to wyłącznie z C++, mieszać nie należy.
W C++ używamy vector:

Kopiuj
vector<int> tablica(liczba_do);

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.