Operacje matematyczne na ciągach znaków

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! :)

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"

0

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

0

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

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

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:

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

0
int tablica[liczba_do]; 

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

0
Craith napisał(a):
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++?

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:

vector<int> tablica(liczba_do);

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