Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[C] Jak przerobić mój program by użyta została funkcja.

#1
[C] Jak przerobić mój program by użyta została funkcja.
Napisałem program, który wylicza ile razy wystąpiła podana na samym początku liczba. Liczby kolejno porównywane podaję do momentu, aż podam 0. Wtedy program zwraca wynik. Chcę jednak, aby program liczył to w funkcji. Próbowałem to zrobić, ale program się wieszał. Może ktoś doradzić jak ta funkcja powinna wyglądać w tym programie?

Kod:
#include<stdio.h>

int main(){
    
    int x,y[1000],i=0;
    int licznik=0;               //licznik wystąpień liczby x
    
    scanf("%d",&x);     // wczytuje liczbe x
    while(y[i]!=0){
    i++;
    scanf("%d",&y[i]);  //wczytuje kolejne liczby i porownuje je z x
                  
    if(x==y[i]){
    licznik++;}
    };
    
    printf("%d",licznik);  //program zwraca wynik
    
    return 0;
    }
 System operacyjny: windows_seven Przeglądarka: opera
#2
RE: [C] Jak przerobić mój program by użyta została funkcja.
Zanim przerobimy program tak żeby używał funkcji ...
Zwróć uwagę na warunek pętli while. Skąd pewność, że przy pierwszym przebiegu
y[0] będzie różne od 0 ? Nie inicjujesz tablicy y[] więc nie wiesz co tam będzie.
Pętla może się nie wykonać ani razu
 System operacyjny: windows_seven Przeglądarka: firefox
#3
RE: [C] Jak przerobić mój program by użyta została funkcja.
Kod PHP:
#include<stdio.h>

int porownaj(int x)
{
    
int licznik,i,y[1000];
    
licznik 0;
    
0;
    while (
y[i] != 0)
    {
        
i++;
        
scanf("%d",&y[i]);
        if (
== y[i])
            
licznik++;
    }
    return 
licznik;
}
int main(){
    
    
int x,ilosc;
    
    
scanf("%d",&x);     // wczytuje liczbe x
    
ilosc porownaj(x);
    
printf("Wystapilo: %d",ilosc);
    
    return 
0;


AtUp: Lokalne zmienne nie są automatycznie zerowane?
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#4
RE: [C] Jak przerobić mój program by użyta została funkcja.
(22.01.2012, 12:11)igorkoch napisał(a): Zanim przerobimy program tak żeby używał funkcji ...
Zwróć uwagę na warunek pętli while. Skąd pewność, że przy pierwszym przebiegu
y[0] będzie różne od 0 ? Nie inicjujesz tablicy y[] więc nie wiesz co tam będzie.
Pętla może się nie wykonać ani razu

Jeżeli będzie zero, to poda wynik 0 i zakończy program. Nie jest powiedziane, że pierwszy y musi być różny od zera. To jest ok. Teraz skupmy się na funkcji.
AtDarekg11, dzięki, teraz widzę jakie robilem błędy. "+" dla Ciebie Wesoły
 System operacyjny: windows_seven Przeglądarka: opera
#5
RE: [C] Jak przerobić mój program by użyta została funkcja.
Za pierwszym razem warunek while NIE ma nic wspólnego z wprowadzanym x. Więc niezależnie od tego co wprowadzisz pętla się nie wykona
 System operacyjny: windows_seven Przeglądarka: firefox
#6
RE: [C] Jak przerobić mój program by użyta została funkcja.
(22.01.2012, 12:22)igorkoch napisał(a): Za pierwszym razem warunek while NIE ma nic wspólnego z wprowadzanym x. Więc niezależnie od tego co wprowadzisz pętla się nie wykona

Ok. Nie wykona się, ale wynik będzie 0, czyli poprawny.
---
A gdybym chciał sprawdzić kilka takich zestawów danych (liczba x i ciąg y), co powinienem zrobić? Użyć pętli for?
 System operacyjny: windows_seven Przeglądarka: opera
#7
RE: [C] Jak przerobić mój program by użyta została funkcja.
Napisz jak dokładnie chcesz żeby to wyglądało.
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#8
RE: [C] Jak przerobić mój program by użyta została funkcja.
Np. na początek podaję liczbę zestawów: n. Potem liczba x i ciąg liczb. Np. jeśli na początku podam liczbę 3, to 3 razy będę podawał liczbę x i ciag y-greków i za każdym tym razem otrzymam wynik.

Z pętlą for cos mi nie wychodzi:
Kod:
#include<stdio.h>

int porownaj(int x)
{
    int licznik,i,y[1000];
    licznik=0;
    i=0;
    while (y[i]!=0)
    {
        i++;
        scanf("%d",&y[i]);
        if (x == y[i])
        licznik++;
    }
    return licznik;
}
int main(){
    int n,i;
    int x,ilosc;
    
    scanf("%d",&n);
    for(i=0;i<n;i++){
    
    
              
    scanf("%d",&x);
    ilosc = porownaj(x);
    printf("Wystapilo: %d",ilosc);
}
    
    return 0;
}
 System operacyjny: windows_seven Przeglądarka: opera
#9
RE: [C] Jak przerobić mój program by użyta została funkcja.
Zmieniłem tego while'a:
Kod PHP:
#include <stdio.h>

int porownaj(int x)
{
    
int licznik,i,y[1000];
    
licznik 0;
    
0;
    while (
true)
    {
        
scanf("%d",&y[i]);
        if (
== y[i])
            
licznik++;
    if (
y[i] == 0)
        break;
    
i++;
    }
    return 
licznik;
}
int main(){
    
    
int x,ilosc,ile;
    
printf("Ile razy sprawdzac: ");
    
scanf("%d",&ile);
    
    for (
int i 0ilei++)
    {
    
printf("Podaj liczbe do sprawdzenia: ");
    
scanf("%d",&x);     // wczytuje liczbe x
    
ilosc porownaj(x);
    
printf("Wystapilo: %d\n",ilosc);
    }
    return 
0;

 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#10
RE: [C] Jak przerobić mój program by użyta została funkcja.
Super. Przeszedłeś na c++, ale spoko Wesoły
 System operacyjny: windows_seven Przeglądarka: opera
Programy: Polecane / Nowe / Inne



Użytkownicy forum szukali:
jak przerobić programjak przerobić program na funkcje c++jak+zrobić+w+c#+program+do+przerabiania+z+km+na+m

Podobne wątki ([C] Jak przerobić mój program by użyta została funkcja.)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Niezrozumiały program z książki (funkcja rekurencyjna) szefusik 4 8648 28.05.2015, 21:27
Ostatni post: szefusik
  Klasa, a funkcja zapisująca dane do pliku. Dreamer1x6xX 3 9070 26.03.2015, 08:47
Ostatni post: Szachista
Ściana c++ obiektowe funkcja wstawiajaca znaki w odpowienich miejscach nie działa Mordrak 4 8105 21.01.2015, 00:27
Ostatni post: Mordrak

Skocz do:


Wybrane wątki ([C] Jak przerobić mój program by użyta została funkcja.)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Pytanie - programowanie batch [cmd] Max23 0 10180 20.03.2020 01:03
Ostatni post: Max23
  Oczekiwanie na Akcje przycisku wanhelsing 8 12377 01.03.2020 19:44
Ostatni post: Szachista
Toungue Wybór szkoły średniej przez potencjalnego programistę Zikinan 1 11524 09.02.2020 15:58
Ostatni post: dzikuu86
  Poszukuję pomysłu na prosty program ;) janciu96 5 20711 13.12.2019 23:32
Ostatni post: Ajgor
  Programowanie Batch (CMD) Informatyk2019 0 11794 11.12.2019 18:30
Ostatni post: Informatyk2019
  [JavaScript] Znajdowanie przedziału czasu rafal12999 0 5113 10.12.2019 17:58
Ostatni post: rafal12999
  Przekazywanie wskaźnika przez referencję w Qt Trojan3000 3 19694 10.12.2019 13:16
Ostatni post: Ajgor
  Proszę o pomoc w uzupełnieniu ankiety dt. Zawodu Programisty MaleMonki 0 5076 17.11.2019 12:47
Ostatni post: MaleMonki
  Spring framework – jakie strony polecacie do nauki? olek23 5 12570 15.11.2019 15:57
Ostatni post: Alsenas
  Programowanie windy (problem) w C++ mysza2323 2 12183 06.11.2019 23:04
Ostatni post: mysza2323
  Programy w C ~Anonim 1 12288 22.10.2019 17:48
Ostatni post: Szachista
  Wyświetlanie informacji z bazy danych na stronie www PitPlay 1 12701 16.09.2019 11:18
Ostatni post: Ajgor
  Błąd przy uruchamianiu programu w Java z wiersza poleceń Physicist 3 5439 30.08.2019 14:16
Ostatni post: Physicist
  Python z wiersza poleceń Physicist 15 33746 21.08.2019 20:14
Ostatni post: Physicist
  Transfer plików via FTP Visual Basic FireBytes 3 7950 15.08.2019 07:41
Ostatni post: Szachista