• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wczytywanie liczb do tablicy

Object Storage Arubacloud
0 głosów
5,936 wizyt
pytanie zadane 21 listopada 2018 w C i C++ przez Świeżak01 Nowicjusz (180 p.)

Hej, przychodzę z dość wydaje mi się banalnym problemem, ale nigdzie nie mogę znaleźć rozwiązania. Mam napisać program, który pobierze od użytkownika dowolny ciąg liczb (nie więcej niż 100) i wyświetlić wyrazy tego ciągu większe od jego odchylenia standardowego (pojawienie się wartości 0 na wejściu będzie oznaczało zakończenie ciągu). Mam problem z samym wejściem: jak zrobić to tak, żeby pobrało od razu cały łańcuch, a nie po jednej cyfrze? Tzn. np.:

podaj liczby: 
8 -3 9 2 4 0

Domyślam się, że można to jakoś zrobić za pomocą stringa, ale nie ogarniam. Podaję, co na razie nie działa, kombinowałam też z fgets.

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <ctype.h>
#define W 100

int main()
{
  int i, tab[W], cnt = 0;
  printf("podaj liczby:\n");
  for(i=0;i<W;i++)
  {
    int c=scanf("%d" ,&tab[i]);
    while(getchar()!='\n');
    if(c!=1)
    {
      printf("incorrect input\n");
      return 1;
    }
    if (tab [i]==0) break;
    cnt++;
  }
 return 0;
}

 

 

 

2 odpowiedzi

0 głosów
odpowiedź 21 listopada 2018 przez profesorek96 Szeryf (91,420 p.)

Rozumiem że max na wejsciu może być 100 liczb ale nie wiem ile ich jest. Spróbuj tak:

#include <iostream>
using namespace std;
const int W=100;
int main() {
	int tab[W]={0};
	int i=0;
	while(cin>>tab[i])i++;
	//twoj kod
	
	
	return 0;
}

 

komentarz 21 listopada 2018 przez j23 Mędrzec (194,920 p.)
Czasem zdarza się, że ludzie piszą w C a nie C++ ;)
komentarz 21 listopada 2018 przez Świeżak01 Nowicjusz (180 p.)

@profesorek96, niebardzo wiem jak to zaimplementować w C :/

komentarz 22 listopada 2018 przez j23 Mędrzec (194,920 p.)
int c, n = 0;


while((c = scanf("%d", &tab[n++])) == 1) {}

if(c == 0) { /* błąd odczytu */ }
// n - liczba elementów w tablicy

 

0 głosów
odpowiedź 21 listopada 2018 przez mokrowski Mędrzec (155,460 p.)
edycja 21 listopada 2018 przez mokrowski
#include <stdio.h>
#include <stdlib.h>

#define W 101

void readTable(int * table)
{
    puts("Podaj liczby:");

    for(size_t index = 0; index < W; ++index)
    {
        int er = scanf("%d", &table[index]);
        if (er != 1)
        {
            fprintf(stderr, "Incorrect input. Position %zu.\n", index + 1);
            exit(EXIT_FAILURE);
        }
        if (table[index] == 0)
        {
            break;
        }
    }
}

void showTable(int * table)
{
    puts("Wprowadzono dane:");
    for (size_t index = 0; index < W; ++index)
    {
        printf("%d ", table[index]);
        if (!(table[index]))
        {
            break;
        }
    }
    putchar('\n');
}

int main(void)
{
    int values[W];

    readTable(values);

    showTable(values);

    return EXIT_SUCCESS;
}

Założyłem że tablica będzie terminowana zerem więc zbędne jest przechowywanie ilości danych ale konieczne zwiększenie ich ilości o 1 bo ma być maksymalnie 100 ( + 0 terminujące).

Powinieneś mieć bardzo poważny powód by upierać się na rozwiązanie z fgets(...). Jeśli jednak, czeka Cię parsowanie tokenów. Tylko.... w jakim celu?

Podobne pytania

0 głosów
1 odpowiedź 491 wizyt
pytanie zadane 19 listopada 2019 w C i C++ przez xZenit Użytkownik (760 p.)
0 głosów
2 odpowiedzi 1,101 wizyt
pytanie zadane 27 października 2019 w C i C++ przez nomihiyer Nowicjusz (120 p.)
0 głosów
1 odpowiedź 571 wizyt
pytanie zadane 24 stycznia 2020 w C i C++ przez Jan Patryk Kowalski Obywatel (1,880 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...