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

Wczytywanie liczb do tablicy

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
6,487 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 (195,260 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 (195,260 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 (156,480 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ź 641 wizyt
pytanie zadane 19 listopada 2019 w C i C++ przez xZenit Użytkownik (760 p.)
0 głosów
2 odpowiedzi 1,241 wizyt
pytanie zadane 27 października 2019 w C i C++ przez nomihiyer Nowicjusz (120 p.)
0 głosów
1 odpowiedź 730 wizyt
pytanie zadane 24 stycznia 2020 w C i C++ przez Jan Patryk Kowalski Obywatel (1,880 p.)

93,188 zapytań

142,204 odpowiedzi

322,027 komentarzy

62,515 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2581p. - dia-Chann
  2. 2537p. - Łukasz Piwowar
  3. 2528p. - Łukasz Eckert
  4. 2514p. - CC PL
  5. 2476p. - Tomasz Bielak
  6. 2445p. - Łukasz Siedlecki
  7. 2443p. - rucin93
  8. 2418p. - Michal Drewniak
  9. 2373p. - Marcin Putra
  10. 2367p. - Adrian Wieprzkowicz
  11. 2317p. - Mikbac
  12. 2156p. - Anonim 3619784
  13. 2016p. - Michał Telesz
  14. 1733p. - rafalszastok
  15. 1628p. - Dominik Łempicki (kapitan)
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...