Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cu ce va aparati de cainii agresi...

Nu imi platiti coletul cu cardul ...

Mi-au disparut amigdalitele ?

Exista vreun plan de terorizare p...
 Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone

Monede JO 2024

Suprasolicitare sistem electric
 CIV auto import

Mutare in MOZAMBIC - pareri, expe...

Scoatere antifurt airtag de pe ha...

Magnet in loc de clește pent...
 Cumparat/Locuit in apartament si ...

Pot folosi sistemul PC pe post de...

Sokol cu distorsiuni de cross-over

Filtru apa potabila cu osmoza inv...
 

[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,947
  • Î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,441
  • Înscris: 10.08.2005
 while ( coding with 'i1, i2, i3')
{
	 help == void;
}


#5
sftpdt

sftpdt

    Senior Member

  • Grup: Senior Members
  • Posts: 3,664
  • Î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,947
  • Î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

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

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