Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Plasa de umbrire peste gard de pl...

O smecherie pe care nu o inteleg

Balcon parter fara acte

unde gasesc un speed bag in bucur...
 Programe TV cu altfel de sporturi

Laptop "bun la toate" max...

navigatie noua vw tiguan

ctfmon.exe - System Error (in Saf...
 Ați prins vremurile cand 120 Volț...

Whatsapp nu afișeaza numele ...

Medii admitere Politehnica Bucure...

Se extinde Baza de la Kogalniceanu
 Politist mutilat de caine in curt...

Trotineta- cat rezista?

Windows 11 si inregistrare de pe ...

Cont Facebook spart
 

[TEMA] interclasare cu functii

- - - - -
  • This topic is locked This topic is locked
6 replies to this topic

#1
jamesbond1975

jamesbond1975

    Junior Member

  • Grup: Members
  • Posts: 64
  • Înscris: 22.10.2014
Buna,
Ma poate ajuta cineva la problema urmatoare, va rog : "Se dau n si m, dimensiunile a 2 vectori si elementele celor 2 vectori. Sa se afiseze toate elementele celor 2 vectori ordonate crescator." Programul trebuie sa aiba 4 functii : una de citire, una de interclasare, una de scriere si main-ul. Nu se pot folosi pointeri !

Programul care l-am scris pana acum arata cam asa (imi da erori peste erori; stiu ca am folosit pointeri, dar nu am gasit o varianta fara; daca m-ar putea ajuta cineva, as fi recunoscator !) :

#include
<p>#include

void citire(FILE *fi, int v[], int *n) {
int i;
fscanf(fi,"%d",n);
for(i=0;i<(*n);i++)
fscanf(fi,"%d",&v[i]);
}


void interclasare() {
int i1, i2, i3;
i1=i2=i3=0;
while(i1 if(v1[i1] v3[i3]=v1[i1];
i1++;
}
else {
v3[i3] = v2[i2];
i2++;
}
i3++;
}
while(i1 v3[i3]=v1[i1];
i1++;
i3++;
}
while(i2 v3[i3]=v2[i2];
i2++;
i3++;
}
*n3=n1+n2;
}

void scriere(FILE *f, int v[], int n) {
int i;
for(i=0;in;i++)
		fprintf(f,"%d",v[i]);
	fprintf(f,"\n");
}
int main()
{
	FILE * fi = fopen("interclasare.in","r");
	FILE * fo = fopen("interclasare.out","w");
	citire();
	citire();
	interclasare();
	scriere();
	fclose(fi);
	fclose(fo);
	return 0;
}


Edited by jamesbond1975, 22 October 2014 - 18:03.


#2
yonut_a

yonut_a

    Trala la la la

  • Grup: Senior Members
  • Posts: 3,944
  • Înscris: 03.08.2008
acuma ia zi drept de unde ai copiat codul ala ?

revino macar dupa ce il copii corect. Ala nu e cod functional nici pe departe

#3
jamesbond1975

jamesbond1975

    Junior Member

  • Grup: Members
  • Posts: 64
  • Înscris: 22.10.2014
I-am dat copy-paste din codeblocks, dar nu s-a copiat prea bine. De rulat, stiu ca nu ruleaza ...
#include <stdio.h>
#include <stdlib.h>
void citire(FILE *fi, int v[], int *n) {
    int i;
    fscanf(fi,"%d",n);
    for(i=0;i<(*n);i++)
fscanf(fi,"%d",&v[i]);
}

void interclasare() {
    int i1, i2, i3;
    i1=i2=i3=0;
    while(i1<n1 && i2<n2) {
    if(v1[i1]<v2[i2]) {
    v3[i3]=v1[i1];
    i1++;
    }
    else {
    v3[i3] = v2[i2];
    i2++;
    }
    i3++;
    }
    while(i1<n1) {
  v3[i3]=v1[i1];
  i1++;
  i3++;
    }
    while(i2<n2) {
  v3[i3]=v2[i2];
  i2++;
  i3++;
    }
    *n3=n1+n2;
}
void scriere(FILE *fo, int v[], int n) {
    int i;
    for(i=0;i<n;i++)
    fprintf(f,"%d",v[i]);
    fprintf(f,"\n");
}
int main()
{
    FILE * fi = fopen("interclasare.in","r");
    FILE * fo = fopen("interclasare.out","w");
    citire();
    citire();
    interclasare();
    scriere();
    fclose(fi);
    fclose(fo);
    return 0;
}

#4
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,360
  • Înscris: 10.08.2005
 while ( coding with 'i1, i2, i3')
{
	 help == void;
}


#5
sftpdt

sftpdt

    Senior Member

  • Grup: Senior Members
  • Posts: 3,640
  • Înscris: 29.08.2013
O indentare mai calumea ... ?

#include <stdio.h>
#include <stdlib.h>
void citire(FILE *fi, int v[], int *n)
{
	int i;
	fscanf(fi,"%d",n);
   
	for(i=0;i<(*n);i++)
		fscanf(fi,"%d",&v[i]);
}
void interclasare()
{
	int i1, i2, i3;
	i1=i2=i3=0;
	while(i1<n1 && i2<n2)
	{
		if(v1[i1]<v2[i2])
		{
			v3[i3]=v1[i1];
			i1++;
		}
		else
		{
			v3[i3] = v2[i2];
			i2++;
		}
   
		i3++;
	}
   
	while(i1<n1)
	{
		v3[i3]=v1[i1];
		i1++;
		i3++;
	}
   
	while(i2<n2)
	{
		v3[i3]=v2[i2];
		i2++;
		i3++;
	}
	*n3=n1+n2;
}
void scriere(FILE *fo, int v[], int n)
{
	int i;
   
	for(i=0;i<n;i++)
		fprintf(f,"%d",v[i]);
   
	fprintf(f,"\n");
}
int main()
{
	FILE * fi = fopen("interclasare.in","r");
	FILE * fo = fopen("interclasare.out","w");
	citire();
	citire();
	interclasare();
	scriere();
	fclose(fi);
	fclose(fo);
	return 0;
}



#6
yonut_a

yonut_a

    Trala la la la

  • Grup: Senior Members
  • Posts: 3,944
  • Înscris: 03.08.2008
deci

cine sunt v1,v2,v3 ?
cine si la ce ajuta i1,i2,i3 ?
cine sunt n1,n2,n3 ?
de ce scrii niste functii cu parametri si le apelezi fara ?

si serios chiar nu se putea fara pointeri ?

de ce ai facut treaba asta (*n) acolo unde ai facuto ?

Edited by yonut_a, 22 October 2014 - 18:18.


#7
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Iti da erori peste erori deoarece codul e varza.

Ba l-ai mai si postat anapoda. Tine de bun simt sa il postezi macar curat (formatat si corect dpv sintactic). E chiar minimul de bun simt.

Deci deschide un nou topic, de data asta curat, si cu cod pe care l-ai scris tu cu manuta ta, de la zero.

Nu uita de indentare. Apasa pe butonul "CODE" in editor, se deschide un dialog, da-i paste acolo la codul formatat corect, si nu te mai atinge de el ulterior, ca editorul mare strica formatarea.

Si descrie eroarea concreta. Cate o eroare, nu "o gramada de erori". Daca sunt prea multe erori, taie din cod pana cand ai o singura eroare, iar codul face ceva util, cel putin in principiu, chiar daca nu rezolva complet problema. De exemplu, taie din el pana face "doar citirea", si posteaza o descriere a problemei cu citirea.

Si da, TU trebuie sa depui efortul de a ne face noua usoara munca de a te ajuta sa-TI duci la indeplinire misiunea. Nu sa alergam noi ca bezmeticii dupa "o groaza de erori".

Topic inchis pentru postare de cod 1. nefunctional, 2. gresit dpv sintactic, 3. cerere de mura-n gura ("am erori peste erori, rezolvati-mi-le") si 4. lipsa unei probleme concrete cu descrierea ei si abordarile pe care le-ai incercat deja intru rezolvarea ei.

Edited by OriginalCopy, 22 October 2014 - 18:40.


Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate