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

Wczytywanie liczb do tablicy

0 głosów
2,971 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 (86,820 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 (166,180 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 (166,180 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 VIP (146,440 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ź 159 wizyt
pytanie zadane 19 listopada 2019 w C i C++ przez xZenit Użytkownik (760 p.)
0 głosów
2 odpowiedzi 455 wizyt
pytanie zadane 27 października 2019 w C i C++ przez nomihiyer Nowicjusz (120 p.)
0 głosów
1 odpowiedź 178 wizyt
pytanie zadane 24 stycznia 2020 w C i C++ przez Jan Patryk Kowalski Obywatel (1,880 p.)

85,871 zapytań

134,644 odpowiedzi

298,914 komentarzy

56,738 pasjonatów

Advent of Code 2021

Top 15 użytkowników

  1. 926p. - rucin93
  2. 925p. - Whistleroosh
  3. 912p. - nidomika
  4. 876p. - adrian17
  5. 867p. - Michal Drewniak
  6. 866p. - Mikbac
  7. 863p. - Mateusz Bogdan
  8. 859p. - CC PL
  9. 797p. - Argeento
  10. 704p. - ScriptyChris
  11. 683p. - tokox
  12. 660p. - Vinox
  13. 645p. - TheLukaszNs
  14. 642p. - s. Dorota Kowalewska
  15. 601p. - Marcin Harasimowicz
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 dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...