Wprowadzanie kilku wartości do tablicy

0

Witam,

Otóż mam takie laickie pytanie na które nie mogę w googlu znaleźć odpowiedzi.
Jak mogę wprowadzić na przykład 3 cyfry do tablicy ?

Próbuję tak:

 int liczby[3];
            printf("Podaj trzy cyfrowy ciagu chmod: ");
            scanf("%d",&liczby[3]);
            printf("Wprowadziles: %d%d%d\n", liczby[0],liczby[1],liczby[2]); 

lub tak

 int liczby[3];
            printf("Podaj trzy cyfrowy ciagu chmod: ");
            scanf("%d%d%d",&liczby[0],&liczby[1],&liczby[2]);
            printf("Wprowadziles: %d%d%d\n", liczby[0],liczby[1],liczby[2]); 

Niestety bez skutecznie, zależy mi na tym, żeby nie wprowadzać tego w pętli po znaku a od razu ciąg trzech znaków.

Pozdrawiam

0
char znaki[4];
scanf("%s",znaki);
znaki[0]-='0';
znaki[1]-='0';
znaki[2]-='0';
printf("%d%d%d",znaki[0],znaki[1],znaki[2]);
0

@up chodziło mu chyba jednak o liczby tylko nie wie że cyfra!=liczba
@autor: priorytety operatorów -> albo się uczymy, albo stawiamy milion nawiasów!

 int liczby[3];
printf("Podaj trzy cyfrowy ciagu chmod: ");
scanf("%d %d %d",&(liczby[0]),&(liczby[1]),&(liczby[2])); //albo scanf("%d %d %d",liczby,liczby+1,liczby+2);
printf("Wprowadziles: %d%d%d\n", liczby[0],liczby[1],liczby[2]); 
0

Coś dalej mi nie chce działać. Oto cały kod póki co:

#include<stdio.h>

int main()
{
    int a;
    printf("W jakiej formie chcesz podac chmod ?\n");
    printf("1=Liczbowa 2=Literowa\n");
    scanf("%d",&a);

        if(a=1)
        {
            int liczby[3];
            printf("Wybrales forme liczbowa !\n");
            printf("Podaj trzy cyfrowy ciag chmod: ");
            scanf("%d%d%d",&(liczby[0]),&(liczby[1]),&(liczby[2]));
            printf("Wprowadziles: %d%d%d\n", liczby[0],liczby[1],liczby[2]);
            printf("W formie literowej jest to: ");
        }

    return 0;
}
 

Używam programu Code::Blocks i jak jest dodana ta linia:

        scanf("%d%d%d",&(liczby[0]),&(liczby[1]),&(liczby[2])); 

to program się na niej zawiesza i nie idzie dalej, tak samo jak dodam ,liczby,liczby+1...

0

za takie coś if(a=1) powinni cię powiesić ;]
Poza tym jak chcesz wczytać jeden znak to musisz czytać %c a nie %d. Jak inaczej program miałby wiedzieć czy wpisane 666 to są trzy osobne "liczby" czy jedna liczba?
Tak będzie jednak najprościej:

#include<stdio.h>

int main()
{
    int a;
    printf("W jakiej formie chcesz podac chmod ?\n");
    printf("1=Liczbowa 2=Literowa\n");
    scanf("%d",&a);
    if(a==1)
    {
        char liczby[3];
        printf("Wybrales forme liczbowa !\n");
        printf("Podaj trzy cyfrowy ciag chmod: ");
        scanf("%s",liczby);
        printf("Wprowadziles: %c%c%c\n", liczby[0],liczby[1],liczby[2]);
    }
    return 0;
}
0

Ślicznie dziękuję :)

Mam jeszcze takie małe pytanie, mam sobie taki kod:

 #include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int tablica[200];
    int i;
    int c=0;

    srand(time(NULL));

        printf("Rozlosowane wartosci to kolejno: \n");

        for(i=0;i<200;i++)
        {
            tablica[i]=rand()%201;
            c+=1;
            printf("%d\t", tablica[i]);
        }

        printf("Kontrolnie liczba obrotow pentli to: %d", c);

    return 0;

Nie proszę o gotowca a jedynie o poradę jak mogę teraz zliczyć liczby losowe które się powtarzają. Czyli jeżeli w tablicy pojawi się 3 razy 20 to program napisze 20=3, jeżeli pojawi się 34 jeden raz to napisze 34=1 itd.

Pozdrawiam

0

Zrób sobie tablicę zliczeń:

int zliczenia[201]={};
//losujemy liczbę
zliczenia[liczba]++;
//a na koniec dajesz:
for(i=0;i<201;i++)
{
  if(zliczenia[i]>0)
  {
    printf("%d = %d\n",i,zliczenia[i]);
  }
}
0
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int tablica[200];
    int tablica_sumaryczna[200];
    int zliczenia[201]={};
    int i,liczba;
    int c=0;

    srand(time(NULL));

        printf("Rozlosowane wartosci to kolejno: \n");

        for(i=0;i<200;i++)
        {
            tablica[i]=rand()%201;
            c+=1;
            printf("%d\t", tablica[i]);
        }

        printf("Kontrolnie liczba obrotow pentli to: %d\n", c);
        printf("Wartosci do jakich przypiszemy losowe liczby to: \n");

            for(i=0;i<200;i++)
            {
                tablica_sumaryczna[i]=i+1;
                printf("%d\t", tablica_sumaryczna[i]);
            }

        zliczenia[liczba]++;

        for(i=0;i<201;i++)
        {
            if(zliczenia[i]>0)
            {
                printf("%d = %d\n",i,zliczenia[i]);
            }
        }

    return 0;
}
 

Tak? Program się uruchamia dochodzi do pętli zliczeń i się wiesza.

0

Ok poradziłem sobie :) Dzięki za pomoc.

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